查看: 15|回复: 0

[相关教程] 用Unicorn模拟执行so函数,跳过环境依赖直接拿返回值

[复制链接]

96

主题

5

回帖

951

积分

UID
2
贡献
9 点
钻石
7 个
C币
993 个
发表于 2026-9-21 09:47:05 | 显示全部楼层 |阅读模式
分析一个so里的加密函数,函数本身不复杂,但它依赖一堆初始化,挂在进程里跑还要过反调试,Frida一hook就闪退。后来干脆用Unicorn把整个so加载起来直接调用那个函数,环境问题全绕开了。

python装unicorn和lief,先用lief解析so拿到.text段偏移和目标函数地址,然后Unicorn映射一段内存把so装载进去,再单独分一块栈空间和一块放参数的内存。中间撞到两个问题:一是函数访问了未映射地址,缺页就补映射一块空内存继续跑;二是碰到了对pthread和时钟函数的调用,用UC_HOOK_CODE监控到调用地址,手动往返回寄存器塞个假值再跳回去就行。

跑通之后,给参数内存塞明文,启动执行到函数返回,读返回寄存器和参数区,密文就出来了,一次毫秒级,比挂起整个App快得多,批量生成测试向量也方便。局限是碰到复杂外部依赖的函数,stub会越写越多,那种就不如直接上qemu-user了。这个方案最适合纯算法函数。

温馨提示:
1、在论坛里发表的文章仅代表作者本人的观点,与本网站立场无关。
2、论坛的所有内容都不保证其准确性,有效性,时间性。阅读本站内容因误导等因素而造成的损失本站不承担连带责任。
3、当政府机关依照法定程序要求披露信息时,论坛均得免责。
4、若因线路及非本站所能控制范围的故障导致暂停服务期间造成的一切不便与损失,论坛不负任何责任。
5、注册会员通过任何手段和方法针对论坛进行破坏,我们有权对其行为作出处理。并保留进一步追究其责任的权利。
6、网络世界也请遵守我国的法律法规!一旦发现违法行为,将立即封存相关信息并报警处理!
回复

使用道具 举报

温馨提示:
1、在论坛里发表的文章仅代表作者本人的观点,与本网站立场无关。
2、论坛的所有内容都不保证其准确性,有效性,时间性。阅读本站内容因误导等因素而造成的损失本站不承担连带责任。
3、当政府机关依照法定程序要求披露信息时,论坛均得免责。
4、若因线路及非本站所能控制范围的故障导致暂停服务期间造成的一切不便与损失,论坛不负任何责任。
5、注册会员通过任何手段和方法针对论坛进行破坏,我们有权对其行为作出处理。并保留进一步追究其责任的权利。
6、网络世界也请遵守我国的法律法规!一旦发现违法行为,将立即封存相关信息并报警处理!
您需要登录后才可以回帖 登录 | 立即加入

本版积分规则

QQ客服返回顶部