标签:混淆 代码 程序 指令 addr2 addr3 ida
萌新只会搞定一些特别简单的花指令,而且还得灵光一闪才搞的定,今天来具体学习一下花指令相关内容
概念
花指令(或者叫脏字节)是企图隐藏掉不想被逆向工程的代码块(或其它功能)的一种方法,在真实代码中插入一些垃圾代码的同时还保证原有程序的正确执行,而程序无法很好地反编译, 难以理解程序内容,达到混淆视听的效果。
原理
用ida举例吧。我们用ida打开一个程序
我们看到,里面有代码,有数据块这些东西
但实际上,这并不是程序本身的样子,我们可以选中一些代码,按快捷键u(Undefined,取消定义)
这些代码会变成一堆十六进制的单字节的数据,这才是程序本身的样子
ida本身并不能区分什么是代码什么是数据,它是通过某种算法来分析出一堆数据组合在一起是什么代码。
让这种分析算法出错的最简单的方法,就是花指令。
例如,下列汇编指令中,0xE8就是一个简单花指令
addr:
push ebp
jz addr2
jnz addr2
db 0xE8
addr3:
sub esp, 0x100
add eax, 0x1
sub ebx, 0xAFBC11
addr2:
mov ebp, esp
jmp addr3
标签:混淆,代码,程序,指令,addr2,addr3,ida 来源: https://www.cnblogs.com/Here-is-SG/p/15802040.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。