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

 

posted @ 2019-07-22 23:01  Please Call me 小强  阅读(5284)  评论(0编辑  收藏  举报