首页
社区
课程
招聘
[原创]<android软件安全权威指南>第五章踩坑指南
发表于: 2019-10-13 16:42 3581

[原创]<android软件安全权威指南>第五章踩坑指南

2019-10-13 16:42
3581
第五章最后有个使用ida破解crame0502的小实验,首先把dex丢到ida里面去,这里有个小坑,初学ida可能会掉进去,dex丢到ida时会出现一个加载窗口,如下,别动它,动就没了,我之前用的英文版的ida,选了下面的BINARY ,然后就没了。

书上说需要把 isRegistered()方法做手术,即将方法第二句改为return v9,让其永远返回真,即可实现破解,同时还需要把myapp类里的保护措施给nop掉,。我照做之后安装运行立马闪退,首先检查是否写错,发现并没有写错,接着采用排除法,先只改myapp,nop掉两个killprocess,app运行正常,接着猜测可能是修改了return v9,会导致其他变化,比如寄存器数目等,尝试了几个寄存器数目:1,2,3,均无果;又修改了指令数目,指令数目我参照其他方法修改,观察其他方法的指令数目以及方法开始到结束的差值,发现并不等,有的茶1个16位有的差10个,接着试了下正负1无果。我想,如果真要修改那么多,虫子哥应该会说一声的,书上说使用010edior修改的,而我是直接在ida上patch,虽然ida上patch的程序也成功过,但是想着试一试,同样无果。接着观察修改成return v9的回编译好的apk中的dex,发现改成rerturn v9后,后面的代码都没了,方法直接结束了,之前还有很长的,遂猜想难道是改变了其结构导致错误,然后找来只改过myapp代码的dex,在其return语句上做修改,比如return v4改成return v9,结果还是闪退,但是改成return v5居然成功运行了,v5 v4均为0,以const/4初始化,当时猜想,难道是const除了问题,必须得const/4初始化的v才能作为返回值,但是尝试这个之前,我先把第一句的const/16 ,8改成了const/16,1,试了下,破解成功。难道是 boolean返回值的函数只能接受0和1吗。还想尝试一下把源代码中return result部分做一个boolean类型的转换再返回,这样不知道能不能是书上的破解成功,不过不想试了,疲惫了!
回顾一下,从前天晚上发现问题,昨天一整天的尝试无果,到今天起来高了几个小时成功,领悟了一点东西:
1.不要着急,冷静思考,要有耐心和毅力。
2.解决问题最重要的还是靠自己的思考,要结合实际情况,灵活运用方法解决问题。
其实学到第五章前面也有一些坑,比如androidkill要用jdk1.8,书上有些代码大小写是有问题的等等,现在看起来好像容易发现的亚子,当时人都给整傻了,哈哈!





[培训]科锐逆向工程师培训第53期2025年7月8日开班!

收藏
免费 4
支持
分享
最新回复 (2)
雪    币: 42959
活跃值: (65807)
能力值: (RANK:135 )
在线值:
发帖
回帖
粉丝
2
感谢分享哦~
2019-10-14 13:53
0
雪    币: 4162
活跃值: (6063)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
3
自己补充下,修改一个方法的smali代码后,寄存器数目也得自己手动改才行
2019-10-19 21:15
0
游客
登录 | 注册 方可回帖
返回