Ida动态调试
首先先安装App
根据app提供的架构文件选择ida中的调试服务器文件比如:
这个armeabi对应的架构为32为的arm,在ida目录下调试服务器文件选择android_server
将该文件通过adb推送到模拟器的/data/local/tmp目录下赋予权限
运行这个文件,默认端口为23946,可以通过-p去指定端口
运行之后另起一个窗口去运行adb命令开启APP的调试模式
adb forward tcp:23946 tcp:23946
#开开发主机和Android设备之间建立网络端口的转发隧道
#第一个端口号指的是您开发电脑(主机)上的端口
#第二个端口号指的是Android 设备上的端口
adb shell am start -D -n
#以调试模式启动目标应用程序
启动ida进行进程附加操作
选择端口和调试模式
选择进程,在Android中进程名一般用包名,所以直接搜包名即可
成功附加
最后运行如下命令让app正常运行就可以打断点进行调试了
jdb -connect com.sun.jdi.SocketAttach:port=8600,hostname=localhost
#Java Debugger,是 JDK 中自带的命令行 Java 调试工具
#连接一个正在运行的、等待调试器连接的Java虚拟机(JVM)
#使用Socket连接方式进行附加
#连接设备端口
#应用端口
找不到应用端口可用如下命令查询
# 1. 启动应用后,列出所有可调试的进程ID(需要设置debugable为true 在data/app目录下修改androidmafiest.xml文件)
adb jdwp
# 2. 将该进程的调试端口转发到本地一个特定端口(例如8700)
adb forward tcp:8700 jdwp:12345
# 3. 使用转发后的端口连接
jdb -connect com.sun.jdi.SocketAttach:hostname=localhost,port=8700
# 4. 查找应用的进程ID(PID)
adb shell ps | findstr "xxx.xxx.xxx"
# 5. 查看进程id
adb shell ps | findstr k2015.a2
# 6. 通过进程id查看调试端口
adb shell netstat -tulnp | findstr pid
Ida动态调试
http://1.95.139.200:8090/archives/IdaDynamic