前言
开挂可耻,开挂可耻,开挂可耻!该教程仅供娱乐
逆向准备工具
1.mt管理器
2.灵活的小手
3.聪明的脑瓜
开始分析
如图所示,安装之后随便输入一个卡密,直接提示卡密错误
那么很有可能卡密有固定的格式什么的,不过这些并不影响我们逆向分析。用mt管理器打开并使用dex编辑++后我们直接搜索该提示“卡密错误”,便可以得到
转Java分析即可,如图
如图所示,L18便是登录成功的提示,而L18由L15跳转而来,依次类推。那么“登录成功”的关键就在于这些跳转,如图
那么如何做才能让所有goto都跳转到L18呢?我不太聪明,只能用笨办法,把smail代码中的所有这样的if判断跳转都改成跳转到L18,如图
即将图中圈出的所有cond跳转都改成跳转到L18对应的cond_99即可。改完后安装再次随便输入发现,点击设备登录没有任何提示和反应,有问题出现了。我们再次回到这里
仔细观察可以发现虽然是都跳转到了L18,但是在L18中还存在一个if判断和跳转。即如图
length是长度的意思,那么应该就是指我们所输入的内容的长度,虽然在这个类里没有显示L21,但是结合之前的尝试应该可以猜出,L21应该是返回的空值,也就是啥值也没返回,所以才导致的没有反应。所以我们应该要让它不跳转到L21,而是直接执行其下方的代码。可以看到,现在的判断是如果不等于32就跳转到L21,那么我们可以反其道而行之,让它等于32(或者改成一个更大的值)才跳转到L21。
在smail代码中找到它
0x20转成10进制后便是32,这里我们改大一些,改成0x270f(9999),然后if-ne的意思就是如果不等于,我们改成if-eq(如果等于)即可。如图
再次保存安装,随便输入,直接登录成功
但是还没有完哦,我们还是回到这里
可以看到,其实还是有可能会跳转到L6而提示卡密错误的。为了完美破解,我们直接将整个L6删掉。
将这部分代码全部删除即可,至此完美破解,由于不玩那个游戏,所以也无法测试,也不知道是不是有效的,就只能先这样了
就这样了,反正我觉得我的思路确实垃圾,肯定有比我这个更好的方法,欢迎大家建议哈哈