IDA动态调试APK
前言
夜神模拟器使用于调试32位的apk程序,因为apk为了安全很少将关键数据放在java层,所以这里通过动态调试以达到对native层的逆向。
连接
ida与模拟器通过adb指令进行连接
安装adb
从https://developer.android.com/studio/releases/platform-tools.html下载adb,安装
找到目录中的adb.exe文件的路径,添加到patch
cmd窗口输入adb -version查看是否成功,出现版本号和命令帮助则成功
adb连接
配置模拟器
以下为夜神模拟器思路:
进入夜神模拟器设置,“关于平板电脑选项”,连续点击5次 “版本号” ,进入开发者模式
打开开发者模式中调试选项中的 ”USB调试“
—-模拟器配置完成—
连接主机
1.连接:cmd命令【adb connect 127.0.0.1:62001】
62001: 夜神模拟器的默认端口号,因模拟器而异
2.查看:cmd命令 【adb devices】;成功会显示出当前的连接,失败则显示“device not found”.
3.与ida建立关系:cmd命令 【adb push 路径\android_server /data/local/tmp/】
将ida安装目录中远程调试目录下的android_server文件push向模拟器,后者为push进模拟器的路径
4.进入模拟器:cmd命令 【adb shell】, 乱码不要在意,继续cmd命令 【su】,进入管理员模式
5.执行server文件:cmd命令 【cd /data/local/tmp/】,【ls】查看文件是否存在
【chmod 777 android_server】赋予文件777权限,【./android_server】执行文件,建立ida联系
6.端口转发:另外打开cmd,cmd命令 【adb forward tcp:23946 tcp:23946】
常见异常:
1.执行文件时显示文件已经执行:命令【ps | grep android_server】寻找进程【kill -s 9 ID】关闭进程,然后重新执行
2.端口转发异常:(1)device not found:结束server文件执行,重新启动模拟器。(2)端口被占用:主机查看后酌情选择
调试
在模拟器中事先打开需要调试的文件
1.打开空白ida,或已经载入so文件的ida
2.空白ida:Debugger选项中的“attach”选项中的“Remote ARM……”选项
hostname选择填入“127.0.0.1”,端口默认,密码为空
2_1.已经载入so文件的ida:Debugger选项中的 “Select debugger” 选项中的“Remote ARM……”选项
然后 Debugger选项中 “process option” 选项,参数按需,hostname同上,端口,密码默认
3.选择进程:一般会在进程列表的底部找到目标程序的进程
连接完成,可以开始调试