文章来源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
没有加壳那么先打开这款apk看看
首先出来的是一个广告,这里得知是移动应用的,也就是可能存在收费接口也可能是移动的收费接口。
进入游戏我们可以看到这款游戏是存在充值的
点击“超值装备礼包”查看
点击“立即购买”
这里可以很明确的看到是中国移动的收费接口。
这里最简单的最基础的就是搜索关键词,关键词在哪?点击购买再退出的时候就有 比如:
“充值失败”这就是关键词,我们可以尝试性的去用AndroidKiller搜索。
“充值失败”需要转为Unicode编码进行搜索 并且跟进这个位置。
一般我们直接看smali代码很蛋疼所以可以转为java查看
这样我们就可以很直观的看到这代码是说什么的
前面也提到了 Success是成功 Fail 是失败,那么这里我们直接把Fail 改成Success试试。
更改需要保存再点击编译
原来安装在模拟器上的原版“经典玛丽”需要卸载掉 才能安装修改后的“经典玛丽”,因为签名不同。
修改过后的“经典玛丽”在购买再退出就什么提示也没但是也没有购买成功,其实我们改的只是一个分支 $后面有数字的smali文件 其实是分支,那么我们改的时候可能少改了。
那么我们可以报着有杀错没发过的心理去修改 直接把全部的“onFail”替换为“onSuccess”
因为签名都一样所以这里就不用再去卸载了,直接安装就好。
好了,这就修改成功了。那么你觉得出现了“充值失败”不太美观,这里大家可以自行修改,相信大家也懂怎么修改吧?
好了,那么说到不美观,一打开的时候出现了两个移动广告图片试试也得去掉?
这里介绍的方法简单粗暴,因为它是图片我们不从代码入手直接删除这两个图片就好。
总结:
多试多练,代码不懂就多看,英语不行也多看,没有说代码基础,英语基础一定要达到什么什么程度;不会说不会写,那么至少能模糊看懂也就够了。