学习笔记,基于Unicorn封装一套PE分析环境,Unicorn提供了Cpu仿真能力。
仿真和传统概念os有诸多不同,代码访问os所需要资源数据,都要虚拟内存中构造,包括Peb/Teb/Ldr/线程管理/堆管理/句柄管理/文件管理/多线程/异步同步/Api模拟等等,经过几周的踩坑做了轮子demo,基础环境执行需要如下几个模块:
- 进程空间栈/堆空间/GDT/代码映射。
- 初始化PEB/TEB/PEB_LDR__DATA/Register。
- 加载导入SystemDLL - 修复IAT重定位(虚拟地址)
- 样本自身的Iat/重定位。
- 设置函数回调,处理Api执行。
- 异常处理
unicorn: https://github.com/unicorn-engine/unicorn
unicorn_pe: https://github.com/hzqst/unicorn_pe