C++程序反编译笔记(3)代码重构
代码重构就是将混乱难懂的代码通过等价代换的方式变成简单易懂的代码的过程。
好的代码应该是顺序清晰,变量节约,层次较浅的。
所谓顺序清晰,就是执行顺序一眼就能看得明白,不会胡乱地跳转,因此,在代码重构的过程中应该尽量去掉goto语句和对longjmp函数的调用。goto语句可以转为if,while,for,switch,break,continue等跳转位置清晰的语句。而longjmp则可以通过拆分,增加函数来去掉。
所谓变量节约,就是使用较少的变量,越多的变量越难让人记住全部变量的含义。由于高级语言编译为机器语言的时候,会经常使用寄存器,因此,反编译后的代码会出现非常多的中间(临时)变量,合并这些中间变量可以极大地降低代码量。
所谓层次较浅,就是大括号嵌套层次越低越好,大括号的特性就是不容易看情况哪个{和哪个}匹配,即使是python这样的不使用大括号表示块的语言,也很难分清哪个块在哪结束。降低大括号层次的方法通常是将条件取反,比如if(a){...} return; 改成if(!a)return; ...return;

