IDA动调SO(使用mumu模拟器)
环境
我这里使用的是mumu12模拟器,IDA8.3pro
一,apk修改
先不要安装,并且不要把apk 放到根目录下的/data目录下,可以放到sdcard目录下
使用MT管理器或者NP查看安装包
然后查看这个文件

确保里面有android:debuggable="true"并且android:extractNativeLibs="true"不能为false
android:debuggable="true"确保软件可以动调
android:extractNativeLibs="true"确保so能被正确加载

然后保存,安装即可
二,adb连接配置
adb可以参考这个https://mumu.163.com/help/20240807/40912_1086360.html
或者自己下载
我们从mumu模拟器的目录下找到问题诊断

然后找到这个

打开终端
先使用adb connect 本地ip:端口号来连接模拟器
我是使用adb connect 127.0.0.1:16384
然后可以使用adb devices查看已经连接的设备
正常的话会输出这个:
List of devices attached
127.0.0.1:16384 device
到此,你的电脑就能和模拟器连接了
三,IDA服务文件
打开IDA的目录,找到dbgsrv文件夹
将里面的4个安卓服务文件放入模拟器的/data/local/tmp中
如果你按着步骤来,可以使用:adb push 《你要传输的文件地址》 /data/local/tmp/传输后的名字
例如 adb push D:\TOOL\IDA8.3\dbgsrv\android_x64_server /data/local/tmp/android_x64_servr
注意\和/
然后使用MT或者NP给这几个文件提权,提权到777,要不然不能正常用
四,启用服务文件
先终端输入使用adb forward tcp:23946 tcp:23946
设置监听
然后输入adb shell打开模拟器的终端
然后输入su获取管理员权限(一定要,不然后面附加程序找不到进程)
之后cd /data/local/tmp打开那个目录
然后./名字运行和你so文件相对应的服务器文件
注意,如果不相同的话就会报错,提示例如“期望XX,但是XX”
五,软件调试配置
这一步需要再打开一个终端,之前那个IDA服务器文件的终端不要关掉
adb shell am start -D -n 包名/.MainActivity
例如: adb shell am start -D -n com.doctor3.rbf/.MainActivity
包名可以通过adb shell pm list packages来查看
一般都带有名字的一部分
这时你的软件就会自动打开,并且弹出这个界面

六,IDA动调配置
打开so文件,下好断点
之后debug选择Remote Linuxdebugger
然后点击Debugger,选择process options
然后别的不用管,只修改Hostname那一行
Hostname填你的本地ip127.0.0.1
Port填第四步的23946
ok
再点击Debugger,选择Debugger option勾选第一列的第3,4,5个
再返回Debugger,选择attach to process, 选择要动调的进程
如果只有一个,那就是之前没有给管理员权限
七,最后一步:
在终端里使用adb forward tcp:[port] jdwp:[pid]
port可以随便填一个数,推荐只在5000~10000的范围内
pid输入adb shell ps可以寻找我们要调试软件的进程的pid,或者输入adb jdwp,返回的数就是目前可以动调的pid
完成之后我们输入
jdb -connect com.sun.jdi.SocketAttach:hostname=127.0.0.1,port=[port]
port是刚才那个随便输入的port
然后IDA就可以正常调试了
本文来自博客园,作者:漫宿骄盛,转载请注明原文链接:https://www.cnblogs.com/msjs/p/19056410
都是顺手发的,写的时候可能有错误,如果发现了,望各位指出。

浙公网安备 33010602011771号