ida 动态调试apk

前提条件: Android机器root

adb shell 命令进入手机控制台

1. 将调试服务器上传到Android机器【本地电脑控制台】

adb push /Applications/IDA Pro 7.0/ida.app/Contents/MacOS/dbgsrv/android_server  sdcard

2. 加上可执行权限【手机控制台】

chmod +x  ./data/media/0/android_server

3, 执行【手机控制台】

 ./data/media/0/android_server

 

4. 本地的代理服务 代理android_server

adb forward tcp:23946 tcp:23946

5. 运行希望调试的android应用【本地电脑控制台】

adb shell am start -D -S -n com.bank.rummy/org.cocos2dx.javascript.AppActivity

6.获取进程ID 【手机控制台】 说明bank为android应用关键字

关键字信息,可以通过jeb反编译软件或者jadx获取。

wayne:/ # ps -A | grep bank

u0_a163      24348  8466 2127580 237540 SyS_epoll_wait f0a6af94 S com.bank.rummy

  

7. 创建一个本地的代理服务,将jdwp数据转发到准备调试的进程

模版:adb forward tcp:本地监听端口 jdwp:准备要调试的进程ID

如: adb forward tcp:23947 jdwp:24348

23947端口是随意指定的。 

8. 连接本地的代理服务

jdb -connect com.sun.jdi.SocketAttach:port=23947,hostname=127.0.0.1

 说明:

jdb是调试Java的客户端。

在第7步骤和第8步骤之间可以使用ida连接,准备调试Android应用的so文件, 具体步骤如下:

1.

 2.

此步骤需要强调的是: hostname可以写127.0.0.1, 因为本地开启代理服务,转发数据到android_server.   第4步设置的。

3.

 4. 选择想要调试的进程后,稍等片刻后,ida会自动断点,这是程序入口断点。此时还没有加载我们要调试的so文件。继续运行后, 还需要执行第8步使用jdb才行。

 5.已经出现了我们想要调试的so文件。libcocos2djs.so

 6. 选择关键点下断点。 xxtea_decrypt

原文地址:https://www.cnblogs.com/dzqdzq/p/11229094.html