本帖最后由 楚轩 于 2015-10-23 20:14 编辑
因为最进时间比较紧,也就没录制视频了,这次就写成文档来记录 破解火柴人联盟最新版的教程。
工具:Android Killer 1.2,Android逆向小助手(其他的也可以,只要是签名工具)
火柴人联盟版本为1.3.2 截止发帖时最新版的
0x1,将游戏拖入Android Killer反编译…
0x2,先试玩一下,在游戏中购买道具,发现大于30元的时候计费SDK好像是百度的,而小于30元的好像直接是使用的短代计费,这个计费SDK应该是三网(电信,移动,联通)融合的,计费方式的分析就告一段落了,接下来就是破解支付了。
0x3,既然是三网融合SDK肯定有移动支付的代码和电信的,电信直接搜PaySuccess,移动搜IPayCallBack,要是搜不到就搜OnBillingFinish,这里我直接搜索第二种方法,发现三个重要结果
还有两个,其余四个直接忽略,先修改第一个文件EMOnPurchase123Listener.smali,步骤不多说,发现一个关键函数onPayFinish(int),其中接受一个int值,大概看看这个函数流程是,判断购买成功则调用onPayFinish(1),失败时参数为0,这样就好办了,直接把183行的const/4 v6, 0x0改为const/4v6, 0x1就ok了。
0x4,回编译错误解决, 其实这时文件已经生成了,打开我选中的那个路径,
然后将一个后缀名为tmp的文件改后缀为apk,并使用签名工具签名并安装。 其他运营商的手机还需要锁一下三网,让他强制使用移动SDK,方法不再详细讲解,留作对自己的一个考核,只给出搜索的关键字Landroid/telephony/TelephonyManager;->getSimOperator()Ljava/lang/String;,要是实在找不到就直接查看EMPayManager.smali这个文件做分析。
0x5,在游戏中购买大于30元的道具时还是会收费,这个怎么办呢,这时就需要对百度支付SDK进行破解了,同样留作作业,关键字Lcom/DBGame/DiabloLOL/baidu/DiabloLOL;->doM IDAsPay()V。
0x6,目标无支付弹窗破解,不显示任何弹出直接购买成功 代码: [Asm] 纯文本查看 复制代码 iget-object v0, p0,Lcom/DBGame/DiabloLOL/baidu/DiabloLOL;->PRO_ID_Str:[Ljava/lang/String;
iget v5, p0,Lcom/DBGame/DiabloLOL/baidu/DiabloLOL;->mPayIndex:I
aget-object v0, v0, v5
invoke-static {v0},Lcom/DBGame/DiabloLOL/baidu/BLHelper;->purchaseComplete(Ljava/lang/String;)V
破解后的游戏 http://pan.baidu.com/s/1o6GeGl0
破解后的游戏已上传至百度云,本人还是希望大家能多动手操作,自己破解,不要直接看一些关键字,多自己分析一下,由于本人在破解游戏时手贱多点了一下30元话费没了,所以我将破解后的游戏加入了一个广告SDK,希望大家能多玩一会,给我补点血。
|