分为两大类:
- 可执行花指令
- 不可执行花指令
可执行花指令
IDApro函数的识别分析失败是因为IDA检测出堆栈操作破坏堆栈平衡
- 函数调用
首先要知道一个函数的调用以及返回的栈变化
1 | call label |
IDA主要还是看retn处的堆栈不平衡,没有将esp=ebp。
- 混淆特征码
1 | mov op1,op2 ----> push op2 / pop op1 |
目的就是增加反汇编的复杂程度
这个就是主要用于使用AV查杀引擎的木马查杀绕过,
在扫描区段加入一些花指令,
使恶意代码偏离引擎识别的偏移范围,
再使用工具修改程序入口(OEP),
就可以逃避这种方式的查杀。
不可执行花指令
利用IDA 静态分析算法的缺陷 使得代码在反编译解析时出错。其原理使反汇编分析执行流命中执行会出错的垃圾数据,就会造成解析错误,而实际执行过程中垃圾数据并不会执行。
junkcode
1 | jz Label // 采用条件互补的方法跳转绕过垃圾数据 |
或者构建必然条件实现跳转
1 | #include "stdio.h" |