前期工作:
1.设置手机为调试模式,我这里用了 mprop
相关命令:
1.chmod 755 /data/local/tmp/mprop
2.data/local/tmp/mprop
3.setprop ro.debuggable 1
4./data/local/tmp/mprop -r
5.查看 getprop ro.debuggable
这样代码成功了
2.修改selinux的权限
相关命令:执行setenforce 0, 执行成功的话会变为Permissive
3.将IDA里面的android_server文件 push 进 这个目录/data/local/tmp
并且要设置权限
chmod 777 /data/local/tmp/android_serve
下面可以进入动态调试的相关操作了
第一步:启动android_server服务
会出现的问题就是地址被使用了:
解决办法就是查看其的进程,kill掉在运行启动就ok了
第二步:再启动一个命令窗口
1.端口转发,因为IDA默认端口是23946: adb forward tcp:23946 tcp:23946
2.启动app的页面: adb shell am start -D -n cn.mama.cityquan/cn.mama.cityquan.activity.SplashActivity
之后app会停留在
第三步:
去sdk里面打开ddms工具
之后在ddms工具里面显示的app包名列表中找到你要调试的包名
看到端口是8623,之后做连接调试器
jdb -connect com.sun.jdi.SocketAttach:hostname=127.0.0.1,port=8623
这里的端口一定是在ddms里面看到的端口
注意:中途android_server监听有可能会断开,需要重新启动android_server
第四步:启动32位的IDA,因为32位的才能按F5查看源码
进去之后操作 Debugger -> Attach -> Remote ARMLinux/Android debugger
配置参数:
点击Debug options
点击ok,进入等待一会
如果显示无法连接,那就重启一下手机,重新来过所有操作
如果成功进入的就会到选择包
成功进入,找到要调试的so包,就可以进行调试了
进去之后先按F9过掉,之后才在需要打点地方打点,我这里是调试他的加密算法
由于第一次动态调试so,还没有完全分析成功, 里面的加密算法都是md5 加密,只不过是添加参数/混乱参数进行MD5加密而已
这里有两种参数组合,我只分析出用来登录的那个的,另一种组合不知道为啥加密的参数一直会变,所以就还没有分析成功,后续看吧
格式:
device_id +key+password + t + username + ver + 9fd8b9cb5d31e7c6efef4bba1c5eb145(这里是固定的)
加密的内容从箭头指向的v33里面可以看到
注意:进入代码调试的时候操作 按F5 再 按F8,反正就是要按F8才能在源码里面进行F7下一步的
①调试快捷键:
F2设置断点,F4运行到鼠标位置,F7单步步入,F8单步步过,F9运行程序
F5/Tab 将相应的简单汇编代表粗略转换为C/C++代码