文章来源
i春秋
这段时间大师傅安排了安卓逆向练习。首先 0 基础没有代码开始学起也是可以的,不用太过于执着于”我没有代码功底就学不会”,我可以很明确的说,我也没有多少代码功底,都是偶尔被大师傅逼着看。但是简单的也就仅仅能看懂,写出来又是另一个问题了。有时候我们学习很多东西需要的代码知识不多,记住一些主要函数,语句就好了,不懂就有道翻译(很多也就是英语,我英语也不行,也不用想着不懂英语就不能编程什么的。)或百度,用到的时候对着那几个主要的函数,语句你还能不懂?
00X1:
安卓逆向基础工具有:
1.AndroidKiller (需安装JDK)
2.ApkIDE (需安装JDK)
3.ApkToolkit,APK上上签
安卓模拟器推荐:
1.夜神模拟器
2.海马模拟器
这些我们用的工具仅仅是AndroidKiller,模拟器可以随意夜神模拟器特性就是不卡,方便但是很多不兼容;海马模拟器,性能稳定但易卡;这里我们选用夜神模拟器。
常用基础的smali语句函数有:
Const 赋值
return-void返回空
Goto 跳转
Cond 分支
判断语句:
if-eq 等于
if-ne 不等于
if-lt 小于
f-ge 大于等于
if-gt 大于
if-le 小于等于
if-eqz 等于
if-nez 不等于
if-ltz 小于
if-gez 大于等于
if-gtz 大于
关键词:
Success成功
Fail 失败
详细可以参考:Smali基本语法 - lee0oo0
00x2:
首先想破解一款小游戏需要最先知道它是否加密加壳,因为 0 基础开始,加密加壳就先不管;然而去打开这款游戏查看是否有充值功能,以及整个流程。分析这款小游戏对于你来说能破解的几率有多大,如果大那么你是否有这么多的时间去调试测试更改破解,值不值得去破解,再综合你本身的能力去考虑这件事;如果不行那就先保留下来,再找另一个小游戏去破解。
这里演示的小游戏是“经典玛丽”,用AndroidKiller查看有没有加壳,我以在i春秋提供过很多破解工具https://bbs.ichunqiu.com/thread-23270-1-1.html
![](https://i-blog.csdnimg.cn/blog_migrate/e105939f6ab07e1a8a1300e6fe1b897e.png)
没有加壳那么先打开这款apk看看
![](https://i-blog.csdnimg.cn/blog_migrate/06b8d93dd6549ba72e1c3de0bd906d82.png)
首先出来的是一个广告,这里得知是移动应用的,也就是可能存在收费接口也可能是移动的收费接口。
进入游戏我们可以看到这款游戏是存在充值的
![](https://i-blog.csdnimg.cn/blog_migrate/600ac7aad9123a38f58d7a512c302d72.png)
点击“超值装备礼包”查看
![](https://i-blog.csdnimg.cn/blog_migrate/ce1ddc00c36bcc743fa05b5f9f99c996.png)
点击“立即购买”
![](https://i-blog.csdnimg.cn/blog_migrate/28f70885400484fe0ad9c026c0943a4c.png)
这里可以很明确的看到是中国移动的收费接口。
这里最简单的最基础的就是搜索关键词,关键词在哪?点击购买再退出的时候就有 比如:
![](https://i-blog.csdnimg.cn/blog_migrate/4ee7a83f1399bb526ba11b45ee3c89dc.png)
“充值失败”这就是关键词,我们可以尝试性的去用AndroidKiller搜索。
![](https://i-blog.csdnimg.cn/blog_migrate/b40fbd3ada10b1abb75fd7be92b382fe.png)
“充值失败”需要转为Unicode编码进行搜索 并且跟进这个位置。
一般我们直接看smali代码很蛋疼所以可以转为java查看
![](https://i-blog.csdnimg.cn/blog_migrate/c2a5b249721fa758cdaaea1fae7bac30.png)
![](https://i-blog.csdnimg.cn/blog_migrate/116cc07f4f471f1e9cb2670879ed8a8f.png)
这样我们就可以很直观的看到这代码是说什么的
前面也提到了 Success是成功 Fail 是失败,那么这里我们直接把Fail 改成Success试试。
更改需要保存再点击编译
![](https://i-blog.csdnimg.cn/blog_migrate/5cb0cc9a6c2990f10843c132124dce34.png)
原来安装在模拟器上的原版“经典玛丽”需要卸载掉 才能安装修改后的“经典玛丽”,因为签名不同。
修改过后的“经典玛丽”在购买再退出就什么提示也没但是也没有购买成功,其实我们改的只是一个分支 $后面有数字的smali文件 其实是分支,那么我们改的时候可能少改了。
那么我们可以报着有杀错没发过的心理去修改 直接把全部的“onFail”替换为“onSuccess”
![](https://i-blog.csdnimg.cn/blog_migrate/123e0571174cf1186b97e539882b4c36.png)
因为签名都一样所以这里就不用再去卸载了,直接安装就好。
![](https://i-blog.csdnimg.cn/blog_migrate/615aaf3714604857f87ee4890db4cc20.png)
好了,这就修改成功了。那么你觉得出现了“充值失败”不太美观,这里大家可以自行修改,相信大家也懂怎么修改吧?
好了,那么说到不美观,一打开的时候出现了两个移动广告图片试试也得去掉?
这里介绍的方法简单粗暴,因为它是图片我们不从代码入手直接删除这两个图片就好。
![](https://i-blog.csdnimg.cn/blog_migrate/38756367fabba464ffbe4daaf7f9cf1f.png)
总结:
多试多练,代码不懂就多看,英语不行也多看,没有说代码基础,英语基础一定要达到什么什么程度;不会说不会写,那么至少能模糊看懂也就够了。