注册忘记密码

黑客论坛,黑客工具,黑客教程,QQ技术,黑客基地,黑客网络,黑客软件,黑客联盟,免杀,远控,ddos,cc,黑客攻防,黑客编程,黑客定位,手机定位,微信定位,hack,黑客网站,查开房,定位,信息查询

查看: 11786|回复: 1

教我兄弟学Android逆向02 破解第一个Android程序

[复制链接]
   0 UID
   0帖子
   0精华
21
   0威望
500
   0金币
45338
   0贡献
5000
   0阅读权限
   200
   积分
   0
   在线时间
   585 小时
   最后登录
   2020-4-4
发表于 2019-7-7 21:30:00 | 显示全部楼层 |阅读模式
上一篇 《教我兄弟学Android逆向01 编写第一个Android程序 》我带你熟悉了Android编程的基础知识 课后给你留的作业你也发给我了  我看了你完成的不错 说明你对Android编程已经有了基础的了解 结合着上篇教程的那个Demo 我们今天就正式进入破解教程
在开始今天的教程之前我有个疑惑 就是上一个Demo编译出来是一个.apk文件 把这个文件用 adb install命令安装到手机上就可以点开运行了 现在我的手头只有这样一个apk文件  那么我怎么去破解它呢 也就是我输入错误的用户名和密码也可以登陆成功 我相信你应该和我也有同样的疑惑,但是不单单是我们吧 我们的前人很早以前就想到过这样的问题 然后他就自己写出来一个工具叫 Android killer  通过把这个.apk文件拉到他的软件中来 就可以把这个apk反编译成smali文件  然后去改这些一些smali文件 改好后重新打包成新的apk 就会生成一个和原来apk一样的新的apk 这个新的apk就是破解后的apk
那么我们是不是也可以写一款这样的软件呢 ?答案:可以 但是很花费时间 我因为想喝一杯牛奶就去养一头牛 太不值得对不对 我们不如直接去把别人家的牛迁过来 以后想什么时候喝牛奶直接挤就是了 那么牛在哪呢?
点击下面的链接下载软件 我们这里就把牛迁到我们家了。
链接:
请点击此处下载

请先注册会员后再进行下载

已注册会员,请先登录后下载

文件名称:3432 
下载次数:4  文件大小:0 Bytes  售价:1 金币[记录]
下载权限: 不限  金币 [充值金币] VIP会员[购买VIP188元] [超级VIP388元]

下载密码:
游客,如果您要查看本帖隐藏内容请回复


一 分析
1. 牛虽然迁到我们家了 但是不听话呀,那我现在就让它听话好不好 ? 首先打开Androidkiller需要配置JDK的安装路径 下面是JDK下载的链接
链接:
请点击此处下载

请先注册会员后再进行下载

已注册会员,请先登录后下载

文件名称:5656 
下载次数:3  文件大小:0 Bytes  售价:1 金币[记录]
下载权限: 不限  金币 [充值金币] VIP会员[购买VIP188元] [超级VIP388元]


下载密码:
游客,如果您要查看本帖隐藏内容请回复

003.jpg

2.把JDK的路径填好后 牛就听话了 然后就可以把我们的APK拉到我们的这款工具中来 (这里可能会出现一个小问题 如果把APK拉到软件中程序卡在 正在反编译APK源码请稍后.. 解决方式:重新打开软件,然后双击APK历史工程里面要打开的这个APK即可) 然后点击左边的入口就会打开MainActivity.smali
3.找到在MainActivity.smali中找到check方法 如果用户名或者密码有一个不对就会跳转到:cond_0出 然后执行下面的代码 也就是登陆失败! 这里会涉及到一些smali代码 smali代码不用去刻意学 这里看到不会的先自己百度然后结合着我下面的分析 自己去尝试着理解  这里黑客论坛要求:把下面我分析的这些smali代码理解并且记住
001.jpg
4.用鼠标点击cond_0就能找到:cond_0位置 这个地方就是登陆失败
5.这里要补充两个smali指令 一个是if-eqz 另一个是if-nez 这两条指令是相对的
(1)if-eqz vA, vB, :cond_**"   如果vA等于vB则跳转到:cond_**
(2)if-nez vA, vB, :cond_**"   如果vA不等于vB则跳转到:cond_**
6.小总结
(1)首先程序把我们输入的用户名和密码给了p1和p2 然后把真正的用户名给了v0 再拿p1和v0对比 对比的结果放在v0中 如果这两个值不相等v0就等于0
(2)然后用if-eqz v0, :cond_0这条指令去判断v0是不是0 如果v0等于0  也就是用户名和密码不相等 就跳转到:cond_0位置 执行登录失败 否则继续往下面执行
(3)这里假设用户名输入正确了 程序往下继续执行 后面会进行同样的判断密码是不是相等 只有用户名和密码都是正确的 程序才不会跳转到:cond_0位置执行登录失败

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

第一种 程序有两个if-eqz 分别是用来判断用户名和密码是否正确的 我把这两个if-eqz都改成if-nez  第二种 我直接把这两条指令删除掉 第三种也是最省事最懒的一种 我直接用goto语句直接一条指令让程序执行跳转登录成的代码 也是可以达到程序破解的目的 这里强调一个问题 修改完smali代码后一定要ctrl+s保存 不然程序还是拿原来的smali代码编译。

本节课用到的Demo:
链接:
请点击此处下载

请先注册会员后再进行下载

已注册会员,请先登录后下载

文件名称:5667 
下载次数:2  文件大小:0 Bytes  售价:2 金币[记录]
下载权限: 不限  金币 [充值金币] VIP会员[购买VIP188元] [超级VIP388元]


下载密码
游客,如果您要查看本帖隐藏内容请回复

   0 UID
   0帖子
   0精华
0
   0威望
0
   0金币
18
   0贡献
0
   0阅读权限
   10
   积分
   0
   在线时间
   1 小时
   最后登录
   2019-9-2
发表于 2019-9-1 19:42:12 来自手机 | 显示全部楼层
听起来不错,可以试试

发表回复

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则


快速回复 返回顶部 返回列表