版权归作者所有,如有转发,请注明文章出处:https://cyrus-studio.github.io/blog/
加壳 so 识别
使用 IDA 打开 so 提示无法正确识别 ELF 文件结构。

section 定义无效或不符合预期格式。

有很多红色的汇编代码块,表示错误或者未能正常解析的地址/数据

这通常就是 so 可能被“混淆”、“裁剪”或“加壳”了。
使用 frida_dump 实现 so 脱壳
frida_dump 是基于 frida 的 so 和 dex 的脱壳工具。
-
关于 Frida 的使用参考:使用 Frida Hook Android App
先把 frida_dump 源码 clone 到本地。
如果使用的是远程链接,把 dump_so.py 中的
device: frida.core.Device = frida.get_usb_device()
改成
device = frida.get_device_manager().add_remote_device("127.0.0.1:1234")
比如目标 so 是 libGameVMP.so,通过下面命令执行 dump_so.py
python dump_so.py libGameVMP.so
输出如下:
(anti-app) PS D:\Python\anti-app\frida_dump> python dump_so.py libGameVMP.so
{'name': 'libGameVMP.so', 'base': '0x7bd7b81000', 'size': 462848, 'path': '/data/app/com.shizhuang.duapp-fTxemmnM8l6298xbBELksQ==/lib/arm64/libGameVMP.so'}
libGameVMP.so.dump.so
android/SoFixer64: 1 file pushed, 0 skipped. 66.8 MB/s (186656 bytes in 0.003s)
libGameVMP.so.dump.so: 1 file pushed, 0 skipped. 217.6 MB/s (462848 bytes in 0.002s)
adb shell /data/local/tmp/SoFixer -m 0x7bd7b81000 -s /data/local/tmp/libGameVMP.so.dump.so -o /data/local/tmp/libGameVMP.so.dump.so.fix.so
[main_loop:87]start to rebuild elf file
[Load:69]dynamic segment have been found in loadable segment, argument baseso will be ignored.
[RebuildPhdr:25]=============LoadDynamicSectionFromBaseSource==========RebuildPhdr=========================
[RebuildPhdr:37]=====================RebuildPhdr End======================
[ReadSoInfo:549]==

最低0.47元/天 解锁文章
605

被折叠的 条评论
为什么被折叠?



