发布于: 2025-5-30最后更新: 2025-6-17字数 2532阅读时长 7 分钟

CFG图

notion image
参考下fla经典图:
notion image

初始化

 

找块

先找出retn块和预处理器块
遍历cfg的所有块, 判断没有分支且直接跳转分支的就是返回块
跳转到主分发器的就是预处理器块
把这些块的起始地址保存起来
然后找出真实块和可nop块
真实块就是直接跳转到预处理器的块
可以nop掉的块就是除了真实块, 既不是入口, 也不是返回块, 那么就是可以nop掉的块
把这些块的起始地址保存起来

模拟执行

这里就是从起始地址, 模拟执行到真实块的地址, 如果里面的指令有分支, 那么则要模拟执行2次, 把真实块的后继地址找出来保存起来flow字典:
key: 真实块的起始地址
value: 真实块的后继地址列表
这样子符号执行后, flow里面就保存了每个真实块的后继地址, 有分支的就有两个后继, 没有分支的就只有一个后继
 

修改so

 
 
 

执行

去除前

notion image
 

去除后

notion image
notion image
学习代码: 修改支持最新版本angr
 

注:

这个标准的fla, 主要是为了学习其思路, 实际魔改的情况下会复杂的多~

参考:

 

Loading...
一文教会你无视证书抓包ecapture

一文教会你无视证书抓包ecapture


3分钟接入ida mcp开始AI逆向(window)

3分钟接入ida mcp开始AI逆向(window)


公告
 
花有重开日, 人无再少年~