安卓逆向01-破解第一个Android程序

默认 2个月前 散逸
浏览:76 2

1.原程序:简单的输入账号密码,提示登陆成功与失败。

2.破解:输入错误的账号密码也能成功登陆。

3.需要的工具+环境:Android killer  、jdk8 (cmd执行java -version 出现版本号)

把这个apk文件拉到AK(Android killer)中,就可以把原apk反编译成smali文件,修改之后重新打包成新的apk。

步骤:

1.点击左侧入口,打开MainActivity.smali

2.找到check方法,如果用户名或者密码种有一个不对的话,就会跳转到cond_0处,然后执行下面的代码也就是登录失败。 

安卓逆向01-破解第一个Android程序    

3.鼠标选中cond_0就能找到登录失败的位置。

安卓逆向01-破解第一个Android程序

4.补充两个smali指令:

(1)if-eqz vA,vB,:cond_**”  如果vA等于vB则跳转到:cond_**

(2)if-nez vA,vB,:cond_**”  如果vA不等于vB则跳转到:cond_**

5.总结

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

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

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

6.思路:不让程序跳转到:cond_0位置,让程序每次在if-eqz v0:cond_0这条关键指令上继续往下执行,就可以执行成功代码了。

方法有三种:(1)程序有两个if-eqz分别是判断用户名和密码的正确性的,把这两个if-eqz都改成if-nez

安卓逆向01-破解第一个Android程序

(2)直接用goto语句一条指令让程序执行跳转登陆成功的代码,也是可以达到程序破解的目的,修改完毕务必 ctrl + s 保存 

安卓逆向01-破解第一个Android程序

(3)直接删除两条指令

安卓逆向01-破解第一个Android程序


安卓逆向01-破解第一个Android程序

 

版权声明:散逸 发表于 2020-10-02 22:39:05。
转载请注明:安卓逆向01-破解第一个Android程序 | 散逸-博客-导航

2 条评论