0x00 花指令(Junk code)的介绍
所谓花指令,人如其名,它就是一些混淆人们视线的指令,一般就是混在正常指令,正常运行时是永远不会运行到的代码块,但是当你去反汇编它是,因为反编译器不会是判断,会导致反编译出来的代码永远不正确,进而使得反汇编过程不能够如期进行。
例如如下的程序中:
#include <iostream.h> #include <windows.h> void main() { _asm { jmp l2 _EMIT 0x1//这里就是花指令 _EMIT 0x2//这里就是花指令 _EMIT 0x3//这里就是花指令 _EMIT 0x4//这里就是花指令 l2: mov eax,0x11111111 } }
反编译器在反编译的时候不会像我们人一样去理解jmp和l2之间的指令是永远不会执行到的,所以在反编译的时候就把这段乱七八糟的代码作为正常的指令了,而这样的反编译会影响mov eax,0x11111111这个指令的正确识别,所以导致在OD中以上代码不会正确显示。