评论

收藏

[R语言] ida 动态调试apk

编程语言 编程语言 发布于:2021-07-31 19:22 | 阅读数:639 | 评论:0

前提条件: 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
DSC0000.png

说明:
jdb是调试Java的客户端。
在第7步骤和第8步骤之间可以使用ida连接,准备调试Android应用的so文件, 具体步骤如下:
1.
DSC0001.png

2.
DSC0002.png

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

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

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

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



关注下面的标签,发现更多相似文章