Android app逆向---从入门到放弃


实验环境

Win10、Android killer1.3.1、APKIDE

  1. 反编译apk。

 

可能会卡在正在反编译源码,请稍后…… 解决方法是重新打开软件然后双击APK历史工程里面要打开的这个apk即可。

 

  1. 找到在MainActivity.smali中找到check方法 如果用户名或者密码有一个不对就会跳转到:cond_0出 然后执行下面的代码 也就是登陆失败!

 

 

 

用鼠标点击cond_0就能找到:cond_0位置 这个地方就是登陆失败

 

  1. 补充两个smali指令 一个是if-eqz 另一个是if-nez 这两条指令是相对的
    (1)if-eqz vA, vB, :cond_**"   如果vA等于vB则跳转到:cond_**
    (2)if-nez vA, vB, :cond_**"   如果vA不等于vB则跳转到:cond_**
  2. 小总结

(1)     首先程序把我们输入的用户名和密码给了p1和p2 然后把真正的用户名给了v0 再拿p1和v0对比 对比的结果放在v0中 如果这两个值不相等v0就等于0

(2)     然后用if-eqz v0, :cond_0这条指令去判断v0是不是0 如果v0等于0  也就是用户名和密码不相等 就跳转到:cond_0位置 执行登录失败 否则继续往下面执行

(3)     这里假设用户名输入正确了 程序往下继续执行 后面会进行同样的判断密码是不是相等 只有用户名和密码都是正确的 程序才不会跳转到:cond_0位置执行登录失败。

  1. 结合上面的分析,如果不让程序跳转到:cond_0位置 让程序每次在if-eqz v0, :cond_0这条关键指令上继续往下执行 是不是就可以执行登录成功代码了?  那怎么能让它不跳转呢?我们可以有三种思路:

(1)     程序有两个if-eqz 分别是用来判断用户名和密码是否正确的 我把这两个if-eqz都改成if-nez 

(2)     直接把这两条指令删除掉

(3)     直接用goto语句直接一条指令让程序执行跳转登录成的代码 也是可以达到程序破解的目的.

 

自己添加goto语句

 

上面是1和3的操作方法,修改完了之后保存一下,然后编译成APK,安装到手机或者模拟器上测试是否成功。

原文链接:https://www.52pojie.cn/thread-650395-1-1.html

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM