记一次利用动态调试so包破解协议 (1)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u014476720/article/details/83650566

前期工作:

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++代码

猜你喜欢

转载自blog.csdn.net/u014476720/article/details/83650566