在编程中,不仅有编译,还有反编译。
上次提到,编译是将工程文件转换为PE文件,而反编译恰恰相反,是将PE文件转换为工程文件。反编译通常是黑客使用,用来查找BUG进行攻击、窃取源码、山寨软件等。反编译有一定的难度,必要时需要用到汇编。而且要先明白对方的软件是用什么编译的,各个编译器的反编译方法不相同。
如果一个程序已经加壳,这不仅对反编译是一种困难,对于杀毒来说也是一种困难,因为加壳是将PE文件通过特殊的方式压缩,缩小体积、防护防止反编译,甚至包含内存防护。压缩后的PE文件,运行后会先给CPU发送一个指令,告诉其如何解包,然后CPU解包后才允许运行,这个过程也算是延时,但是延时的时间一般最慢不超过500ms,常见的加壳有UPX、ASPack、PECompress。
所以反编译有一定的难度,需要脱壳时,还需要PEiD等程序,进行查壳(由于各个壳的差异,有的壳原生不支持解壳,更加大了难度)
[ 此帖被在2014-10-11 18:05重新编辑 ]