继上一篇《记吾爱的!教我兄弟学Android逆向01编写第一个Android程序》之后现在才算开始我的征程!
今天要破解的Demo就是上一篇的app,那个app只能通过对的账户密码也是就admin登录!
通过反编译修改,绕过验证!让我们随意填写密码!
用到的工具-------+
第一次打开会提示配置jdk的安装路径!
3.找到在中找到check方法如果用户名或者密码有一个不对就会跳转到:cond_0出然后执行下面的代码也就是登陆失败!这里会涉及到一些smali代码smali代码不用去刻意学这里看到不会的先自己百度然后结合着我下面的分析自己去尝试着理解这里的要求:把下面我分析的这些smali代码理解并且记住(以下截图的盗来的)
5.这里要补充两个smali指令一个是if-eqz另一个是if-nez这两条指令是相对的
(1)if-eqzvA,vB,:cond_**"如果vA等于vB则跳转到:v**
(2)if-nezvA,vB,:cond_**"如果vA不等于vB则跳转到:v**
6.小总结
(1)首先程序把我们输入的用户名和密码给了p1和p2然后把真正的用户名给了v0再拿p1和v0对比对比的结果放在v0中如果这两个值不相等v0就等于0
(2)然后用if-eqzv0,:cond_0这条指令去判断v0是不是0如果v0等于0也就是用户名和密码不相等就跳转到:cond_0位置执行登录失败否则继续往下面执行
(3)这里假设用户名输入正确了程序往下继续执行后面会进行同样的判断密码是不是相等只有用户名和密码都是正确的程序才不会跳转到:cond_0位置执行登录失败
7.结合着上面的总结那么思路来了我如果不让程序跳转到:cond_0位置让程序每次在if-eqzv0,:cond_0这条关键指令上继续往下执行是不是就可以执行登录成功代码了?那怎么能让它不跳转呢?我现在有三种思路:
第一种程序有两个if-eqz分别是用来判断用户名和密码是否正确的我把这两个if-eqz都改成if-nez第二种我直接把这两条指令删除掉第三种也是最省事最懒的一种我直接用goto语句直接一条指令让程序执行跳转登录成的代码也是可以达到程序破解的目的这里强调一个问题修改完smali代码后一定要ctrl+s保存不然程序还是拿原来的smali代码编译。
破解前:
破解后:











