了解花指令的作用、使用方法及如何去除
##花指令的作用
花指令是对抗反汇编的有效手段之一,正常代码添加了花指令之后,可以破坏静态反汇编的过程,使反汇编的结果出现错误,使ida和ollydbg等搜索不到字符串。错误的反汇编结果会造成破解者的分析工作大量增加,进而使之不能理解程序的结构和算法,也就很难破解程序,从而达到病毒或软件保护的目的。
缺点:不能防止动态调试
以以下代码为例:
#include <iostream>
int main()
{
_asm
{
xor eax,eax
test eax,eax
je Label1
_emit 0e8h
Label1:
}
std::cout << "Test Junk Code" << std::endl;
system("pause");
}
##原理
通过加入汇编代码构成恒成立跳转,在ollydbg中
在ida中
如何去除花指令进行反编译?
找到花指令的地方,并将这个E8改为90(即nop)
改完后的效果,返现字符串已经吐出来了
可以看到在ida中就可以反汇编了