为了学习破解应用的加固,所以学习了app的动态调试,以下是学习总结。
工具:
IDA pro 6.6
Android 4.4.4
IDA 在看雪吾爱应该都能找到下载地址。
我的用的 三星 android4.4.4系统,IDA 6.6,附加一定要用真机,模拟器(各种坑)不要用
准备工作:
1、手机要root
2、将IDA pro 6.6 目录下的\dbgsrv\android_server 上传到手机 /data 目录下。
具体命令:
1>进入到到将IDA pro 6.6 目录下的\dbgsrv 文件下,打开命令提示符
2>执行以下命令:
adb push android_server /data
adb shell // 得到Android系统的shell,下面是在Shell中的操作
su //获得Root权限
cd data
chmod 755 android_server // 修改android_server权限 rwxr-xr-x
./android_server //启动服务
我遇到的问题:
adb shell 不成功 提示端口被占用
解决方式:
1、查看任务管理器 是否有adb.exe 正在运行,有则kill掉
2、有运行豌豆荚么,请关掉它
3、还不行,打开命令提示符执行以下命令:
netstat -ano | findstr "5037" //查看谁在暂用5037端口
在任务管理器中干掉他吧,7104这个万恶的进场。再次查看
还是被占用,那就回到第3步,紧接着做下面的操作
adb nodaemon server //手动绑定5037端口
CMD不要关了。
adb push 不成功 提示没有权限 执行以下命令:
adb shell // 得到Android系统的shell,下面是在Shell中的操作
su //获得Root权限 手机上需要确定
chmod 777 system
chmod 777 data
CMD不要关了。
3、将要调试的APP安装到手机中
开始调试:
0x1 : 开启app进入调试等待模式
打开命令提示符执行以下命令
adb shell am start -D -n 包名/主类名称
0x2 : 开启端口转发
另外打开命令提示符执行以下命令
adb forward tcp:23946 tcp:23946 //端口转换 用于连接IDA
0x3: 操作IDA
打开IDA ->Debugger->Attach->Remote ARMLinux/Anroid debugger
Hostname 就是Anroid机的主机地址,一般和电脑都在一个局域网吧? 填写Android主机的ip地址。
端口默认。
选着debug options 配置如下
完成后按下Ok。
按下Ok后会出现一个进程列表,选择你要调试的进程。
如果你没有先启动app是找不到,后启动需要在当前刷新一下
进程太多的话,可以用包名关键字搜索。
附加后调试器会停在一个地方。
接着在命令提示符下输入
jdb -connect com.sun.jdi.SocketAttach:hostname=127.0.0.1,port=8700
按下G键你可以快速跳转到需要调试的位置,最近在学习脱壳,所以看下面的函数有些朋友可能懂的。
找到位置后我们可以下断点了,看红红的就是
现在不要傻等了,断点下好后,按下F9就可以开始了
我们成功断下。结束可以愉快的调试。
调试说明:
F7 单步进入
F8 单步跳过
F9 跳过前往下个断点
还有些小问题总结下:
0x0:
1、手机没有Root
2、运行android_server 前请先su一下
0x1
IDA 6.8目录下,运行idaq.exe 如果64位的不能运行,请选择32位的
0x2:
换真机,模拟器不行。