破解play验证 有2种方式
1.内购破解
2.修改数据

前者破解必须安装play商店 否则不能完成内购
国内很多手机都不自带play商店 所以有时候就算破解了内购
别人手机若没play商店 同样无法内购成功
所以大多数的破解者 都是选择后者直接修改游戏的钻石或金币达到想要的效果
最近看到一款游戏代码比较简单 很适合写个入门教程 所以就打算写篇文章
今天的主角是一款过关的RPG游戏 看说明是超过100万的下载量的游戏 我们来看看!

我们来看看内容

从上图里我们可以看到 游戏货币分为3种
1.ticket 门票
2.gold 金币
3.gem 钻石
经分析 ticket 和 gold 可以使用gem买 然而钻石则要用真钱买
所以 我们只要对gem的数量进行修改即可
可以从上图的右上角 gem shop里看到 这游戏的钻石叫做gem

点击 gem shop后 可以看到如上图 gem的购买是通过真钱购买

现在对游戏基本要修改的东西有了了解 我们可以开始反编译了
这里为了更好的让我们了解整个过程 我使用IDE进行反编译

对于国外游戏 都很喜欢用NDK来开发 所以当我们看到如上图lib目录下有SO文件的时候 我们就应该先从SO文件下手
这时候要用IDA打开SO文件 IDA的使用我就不多介绍了 不懂的人请看IDA使用相关指南

DA载入SO后 如上图 全部默认 无需设置 然后点OK

打开后点击右上角的Exports 观看函数

如上图 按ALT+T打开搜索窗口 然后输入“gem” 接着按OK 开始搜索 要继续搜索下一个 就按CTRL+T

CTRL+T几次后 看到有个“getGem”的函数 就是获取钻石数量 我们直接双击 来看看代码

从图中的解释 我们可以知道 gem的数量在R0里 所以我们只要修改R0的数量即可

接着点击Hex View-A 进入16进界面 我们来看看对应机器码
整句getGem的代码

000BDA48  02 4B 7B 44 1B 68 18 68  70 47

我们直接将

LDR     R3, =(m_gem_ptr - 0xBDA4E)
ADD     R3, PCLDR     R3, [R3]LDR     R0, [R3]BX      LR

修改为

MOVS   R0,0x2800     //0x2800 =10240 也就是gem数量 =10240个
BX    LR

对应机器码是

02 4B 7B 44 1B 68 18 68  70 47
#改为
A0 20 80 01 70 47 00 00 00 00


由于IDA没有保存功能 我们只能借助其他16进工具来进行修改 这里使用C32ASM以16进方式打开
CTRL+G 搜索对应地址 “000BDA48" 如上图高亮的地方

修改为如上图的结果 然后点击左上角的保存 此时 我们已经完成修改了 现在可以进行打包签名了

由于游戏有保护 导致IDE无法直接回编 这里我们直接将游戏APK包后缀改为rar类型 如上图
然后把修改好的SO文件 拖到“libarmeabi”目录里

修改好后再把后缀名改回apk 接着用签名工具进行签名apk文件 签名好后会生成新的已签名文件
接着我们把机子上原版卸载 重新安装我们修改后的版本

如上图我们可以看到 gem的数量=10240 证明我们修改成功了 真的成功了吗? 那我们来验证下 随便购买个物品看看

嘿嘿 有购买成功的提示了 到这里 表示我们已经破解成功了

如果觉得我的文章对你有用,请随意赞赏