一种基于patch免杀技术的自动化实现
起因
先从一个样本分析开始 https://www.52pojie.cn/thread-1900852-1-1.html
从标题“三年了,还是VT全绿,它到底凭什么?”
可以分析得到这个样本的静态特征非常不明显
具体原因简单来说就是:白文件执行流程中的某函数被修改为恶意shellcode代码
理论
- 你需要掌握的
- PE文件结构
- shellcode编写
- IDA基础分析
- 我来讲讲 例子:7za.exe
- 先来一个概念 地址
- 虚拟地址 但PE bear给的虚拟地址是RVA
- 用CFF Explorer转换一下
- VA就是0000000140001000
- FO文件偏移就是00000400
- IDA分析
- 将例子程序拖入IDA
- IDA贴心的直接定位到了main函数
- 这个程序的main函数调用的函数只有两个
- sub_14004E4A0
- sub_1400550B0
- 既然要patch就得满足几个条件
- 目标函数大
- 目标函数必定在主函数执行流程中
- 目标函数尽量在text段首
- 要patch的shellcode体积尽量小
- sub_14004E4A0 太小了 不行
- sub_1400550B0 很大 可以
- 用CFF转换得到FO
- 000544B0
- 用010手动开始patch