概念

1
2
3
4
5
6
7
8
  花指令又名垃圾代码、脏字节,英文名是junk code。花指令就是在不影响程序运行的情况下,往真实代码中插入一些垃圾代码,从而影响反汇编器的正常运行;或是起到干扰逆向分析人员的静态分析,增加分析难度和分析时间。

0xe9:jmp
0xe8:call
0x90:nop

call xxx 相当于 push eip;jmp xxx;
retn 相当于 ret 相当于 pop eip; 跳转到 eip

常用的两类反汇编算法

1
2
1.线性扫描算法:逐行反汇编(无法将数据和内容进行区分)
2.递归行进算法:按照代码可能的执行顺序进行反汇编程序。

花指令的识别

1
2
3
4
5
1. call目的地址畸形
2. 跳转到某条指令的中间,IDA中形如地址+x的样子
3. 大量不常见、不合理的指令(由于反汇编错位而出现)

但反汇编错误并不意味着花指令,还可能是SMC(代码自解密)

常见花指令

1
2
3
4
1、jx 配合 jnx
2、call 配合 pop
3、call 配合 add esp, 4
4、call 配合 add [esp], n 配合 retn

视频链接