修复被加固的so文件,可查看导入导出表
声明:文中所涉及的技术、思路和工具仅供以安全为目的的学习交流使用,任何人不得将其用于非法用途给予盈利等目的,否则后果自行承担!
知识点
-
frida dump修复后的so文件
-
frida远程连接
-
修改dump_so.py,使其可以远程连接测试机,而不需要usb
准备
-
apk 本次测试的apk来自https://bbs.kanxue.com/thread-280609.htm
-
frida版本,我frida-server用的是16.2.5,frida和frida-tools是16.2.1和12.3.0
-
pip install frida16.2.1 frida-tools12.3.0 -i https://pypi.tuna.tsinghua.edu.cn/simple
-
frida_dump https://github.com/lasting-yang/frida_dump
# 枚举当前运行的apk的内存中所有的so文件
python dump_so.py
# dump指定的so文件并导出到当前目录
python dump_so.py xxx.so
dump_so.py默认是usb连接到测试机,如果您采用wifiadb连接的,需要微调一下代码。
源代码
device: frida.core.Device = frida.get_usb_device()
pid = device.get_frontmost_application().pid
session: frida.core.Session = device.attach(pid)
修改为
"""
远程连接
"""
str_host = '192.168.10.236:27111' # ip:port
manager = frida.get_device_manager()
remote_device = manager.add_remote_device(str_host)
pid = remote_device.get_frontmost_application().pid
session: frida.core.Session = remote_device.attach(pid)
执行前,在命令行输入 adb connect ip:wifiadb的端口
浏览dump_so.py,可知在修复so的时候采用的是命令行执行adb命令的方式。
因此,需要您所在的命令行能够找到adb.exe的环境变量
临时加入环境变量,案例如下:
set path=D:Program FilesNoxbin;%path%;
python dump_so.py libjiagu_64.so
IDA反编译so
在jiaguassets目录下,
可以看到libjiagu_x64.so的导出表和导入表为空,这显然是不正常的,说明该so文件被加固了
dump并修复so
将apk下载到测试机,运行后,执行命令
# 列举当前apk加载的所有so
python dump_so.py
python dump_so.py libjiagu_64.so
执行成功
IDA反编译该so文件,可以看到此时so文件就被修复了,导入表和导出表都非常清晰,就连坐标的function name都还原了。
参考链接
https://github.com/lasting-yang/frida_dump
frida远程连接 https://www.cnblogs.com/Apollo111/articles/14390916.html
原文始发于微信公众号(进击的HACK):frida|修复被加固的so文件
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论