兄弟们,今天咱们聊聊前几天搞的那个《妃神会秘史安卓》的实践记录。不是说我多牛逼,就是前阵子跟几个老伙计线上聚会,老李头又开始吹嘘他手头那个安卓游戏的安全做得多严密,说这玩意儿的秘史点数和解锁机制,加密跟铁桶似的,安卓版没法儿动。我当时就听不爽了,跟他说,只要是人写出来的东西,就一定有缝隙让你钻进去。

启动:硬来和第一次吃瘪

我二话不说,当晚就把任务接下来了。我先把我那台专门用来干这种活儿的旧手机给翻出来,用ADB命令一顿操作,把那个最新的APK安装包给硬生生拽了下来。第一步自然是先看看外层有没有什么保护。我试着用了咱们圈子里常用的那几个脱壳工具,结果?当场就给我了个下马威。工具直接卡死,或者说识别不出壳的版本,连壳都没给我掀开。

当时就有点上火了。这帮人越来越鸡贼,外层的防护是真下本了。我寻思着,既然硬来不行,那就得走歪路。我直接把整个APK当成压缩包解开,看了一下文件结构,发现主要的业务逻辑DEX文件被混淆得非常厉害,而且体积比一般的应用要大得多,说明那壳不是普通的加密壳,很可能是加了一层资源混淆和自定义加载器

深入:在Smali里头瞎摸索

既然常规路走不通,我就得直接钻代码堆里找路。我换了另一套工具,直接把那几个最大的DEX文件给重新扔进去,开始反编译看Smali代码。那酸爽,比看天书还累。代码里头充斥着各种a/b/c这种玩意儿当方法名和变量名,啥都看不懂,全靠猜和蒙

我当时卡在初始化流程里起码有五个小时,烟都抽了两包。我一直顺着代码流程看它怎么加载资源,怎么初始化界面,完全找不到突破口。后来我突然反应过来,我不能顺着它的流程走,那肯定被绕死了。我得倒着摸,从程序的显示结果往回找。

小编温馨提醒:本站只提供游戏介绍,下载游戏请前往89游戏主站,89游戏提供真人恋爱/绅士游戏/3A单机游戏大全,点我立即前往》》》绅士游戏下载专区

我的目标很简单:就是改那个“秘史点数”。我先把游戏里点数显示的那几个字符串在资源文件里找到,然后根据资源ID在Smali代码里全局搜索引用功夫不负有心人,我终于在一个叫`*.DataProcessor`的类里头,看到了一个贼他妈眼熟的,负责处理点数增减和权限判断的函数。

这个函数里头,计算点数的方法被包在一个叫`validateAndDecode`的函数里。我进去一看,好家伙,里面有一长串的异或操作和位移操作,但是最关键的是,在它验证通过之后,会调用一个本地方法,给它的点数加上一个数字。

收尾:打个补丁看看戏

找到关键逻辑了,剩下的就是野蛮操作。我赶紧定位到了管事儿的那个Smali文件,找到了负责给点数赋值的那几行。原代码可能是这样的:

  • `iget-object v1, p0, Lcom/fshms/core/DataProcessor;->pointCount:Ljava/lang/Integer;`
  • `add-int/2addr v1, v0` (把v0的值加到点数里)

我直接把那段负责计算v0的逻辑给一脚踹开,换成了更简单粗暴的写法:

  • `const/4 v0, 0xffff` (直接把一个贼大的数塞进v0里)
  • `add-int/2addr v1, v0` (点数暴涨)

我把改好的Smali文件重新编译回DEX,然后重新打包,签名(用的还是我以前的那个测试签名,只要能跑起来就行)。

重新装回手机,一打开,我靠,秘史点数直接爆到我看不懂的数字!老李头那边还在吹嘘他的安全机制,我这边已经在游戏里随便解锁了。兄弟们,别信那些什么“铁桶”的说法,只要是人写的代码,就有缝隙让你钻进去,无非是费不费劲的事情。今天这顿操作记录就到这儿,下次有空再整点别的硬货。

免责声明:喜欢请购买正版授权并合法使用,此软件只适用于测试试用版本。来源于转载自各大媒体和网络。 此仅供爱好者测试及研究之用,版权归发行公司所有。任何组织或个人不得传播或用于任何商业用途,否则一切后果由该组织及个人承担!我方将不承担任何法律及连带责任。 对使用本测试版本后产生的任何不良影响,我方不承担任何法律及连带责任。 请自觉于下载后24小时内删除。如果喜欢本游戏,请购买正版授权并合法使用。 本站内容侵犯了原著者的合法权益,可联系我们进行处理。