IDA调试安卓so库
IDA调试安卓so库
打 2025 轩辕杯,第一次使用 IDA 调试安卓 so 程序,记录一下调试方法
环境搭建
基本工具
- IDA
- 安卓设备/虚拟机 (需要 root 权限)
- Java JDK
- ADB 工具
配置雷电模拟器
安装雷电模拟器,打开 ROOT 权限,开启 ADB 调试

雷电模拟器自带 ADB 工具
可在 雷电安装路径/leidian/LDPlayer9/adb.exe 找到
列出设备
adb devices
打开设备 shell
adb shell
配置IDA远程调试服务
查看设备架构
getprop ro.product.cpu.abi
x86_64
上传 IDA 远程服务程序
可在 IDA 安装路径/dbgsrv/ 找到
上传对应设备架构的调试服务
adb push android_x64_server /data/local/tmp/
设置执行权限
chmod 755 /data/local/tmp/android_x64_server
启动 IDA 远程服务程序
su # 提升权限
/data/local/tmp/android_x64_server # 启动程序
IDA Android x86 64-bit remote debug server(ST) v9.1.31. Hex-Rays (c) 2004-2025
2025-05-20 19:26:48 Listening on :::23946...
另开一个终端,建立端口通讯
adb forward tcp:23946 tcp:23946 # 前本机,后手机
开始调试
使用IDA进行Attach
将 apk 程序直接拖入雷电模拟器安装
或者使用 adb install hookme.apk
查看手机所有包名
pm list packages
...
package:com.example.hookme
以调试模式启动程序
adb shell am start -D -n com.example.hookme/.MainActivity
建议 IDA 先打开要调试的 so 文件
可以直接解压 apk,找到需要调试的 so 文件
打开 Debugger 菜单
选择 Remote Linux debugger,配置 Hostname 为 localhost

选择 Attach to process...,搜索要调试的程序

如果只有一个进程,说明没有以 root 模式启动 IDA 远程调试服务
程序启动了

恢复应用执行
相关命令
adb jdwp # 列出所有可以调试的进程 pid
adb forward tcp:xxx jdwp:<pid> # 在PC的xxx端口与手机进程建立连接
jdb -connect com.sun.jdi.SocketAttach:hostname=localhost,port=xxx # jdb连接
建立 jdb 端口通讯
adb forward tcp:8700 jdwp:2882
# pid 2882 可以在刚刚 IDA attach 中看到
jdb 可在 Java 安装路径/bin 可以找到
我的是 C:\Program Files\Java\jdk-17\bin\jdb.exe
启动连接,然后恢复 IDA 执行
jdb -connect com.sun.jdi.SocketAttach:hostname=localhost,port=8700
设置未捕获的java.lang.Throwable
设置延迟的未捕获的java.lang.Throwable
正在初始化jdb...
程序正常跑起来了

完成啦
正常动调程序即可
have fun 😃



浙公网安备 33010602011771号