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中以上代码不会正确显示。