一、原理一个字节属于两条指令。
短跳指令的机器码是EB XX,XX是从跳位置到JMP指令的下一个指令的偏移量,例如EB 00跳至JMP的下一个指令,相当于什么都不做。 图:
EB FF时,跳至JMP指令本身的第2字节。
稍微利用这个特性就可以制作这样的代码。
执行跳转后,跳转到JMP的第二个字节,FF C0被识别为INC EAX,48被识别为DEC EAX,执行后反汇编的结果如下。
这就是无效汇编指令的原理。 EB FF C0 48这个硬代码可以添加到程序的任何地方。 让我们来看看效果:
二.示威
IDA PRO 7.5无法应对这种情况。
发现使用这个花指令不是非常敏感的操作,可以放心大胆地使用。 报告毒药的这两个引擎可以无视。 胡说八道。 赫尔洛沃勒报告毒药。 特别是那个yande,名字像黄色的网站。
三、另一个例子除了jmp外,还可以使用条件跳转指令和其他寄存器。 举个更复杂的例子吧。
此花命令也可以添加到任意位置。