IDA动调SO(使用mumu模拟器)

环境

我这里使用的是mumu12模拟器,IDA8.3pro

一,apk修改

先不要安装,并且不要把apk 放到根目录下的/data目录下,可以放到sdcard目录下

使用MT管理器或者NP查看安装包

然后查看这个文件

image

确保里面有android:debuggable="true"并且android:extractNativeLibs="true"不能为false

android:debuggable="true"确保软件可以动调

android:extractNativeLibs="true"确保so能被正确加载

image

然后保存,安装即可

二,adb连接配置

adb可以参考这个https://mumu.163.com/help/20240807/40912_1086360.html

或者自己下载

我们从mumu模拟器的目录下找到问题诊断

image

然后找到这个

image

打开终端

先使用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来查看

一般都带有名字的一部分

这时你的软件就会自动打开,并且弹出这个界面

image

六,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就可以正常调试了

posted @ 2025-08-25 10:21  漫宿骄盛  阅读(150)  评论(0)    收藏  举报