发新帖

【720】破解移动游戏【武林传】的代码分析

[复制链接]
8016 4
本帖最后由 737672679 于 2014-11-28 21:42 编辑

我来了。就不会让论坛人少,我是720.新手报道。

此论坛一定要比吾爱破解论坛人气高。纪念游人客栈。

支持Dawn。
论坛是发帖的多,。才有人气的。

废话少说;帖子正题开始;
破解移动游戏之武林传代码分析。

移动游戏【武林传】
游戏不是垃圾不垃圾。而是说讲的是里面的验证系统。和修改方法。

通常直接搜;onbillingfinish即可。
那么我就搜订购。来查找。
如图。↓。


图2


图3


图4



从图3中。可以看到。

判断结果返回是不是0x3e9.如果是,就跳到成功。
反之跳转到失败。

这种移动的游戏以前的模式是这种代码。

0x66
if-eqz v0 cond_22
0x68
if-eqz v0 cond_32
(if-eqz v0 cond_32跳转到失败)



现在的模式的代码概括是这种的;

0x3e9 (成功)
if-eqz v0 cond_22
成功的代码

cond_22
失败的代码


接着看成功和失败的2段代码;

成功代码:

const/16 v0, 0x3e9

if-ne p1, v0, :cond_0     

const-string v0, "\u8ba2\u8d2d\u7ed3\u679c\uff1a\u8ba2\u8d2d\u6210\u529f\u3002"

invoke-direct {p0}, Lorg/meteoroid/plugin/feature/MMIAPSMS;->jR()V

:goto_0
invoke-virtual {p0}, Lorg/meteoroid/plugin/feature/MMIAPSMS;->getName()Ljava/lang/String;

move-result-object v1

invoke-static {v1, v0}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I

return-void



失败的代码;

:cond_0  
invoke-static {p1}, Lmm/sms/purchasesdk/SMSPurchase;->getReason(I)Ljava/lang/String;

move-result-object v0

iput-object v0, p0, Lorg/meteoroid/plugin/feature/MMIAPSMS;->asZ:Ljava/lang/String;

new-instance v0, Ljava/lang/StringBuilder;

invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V

const-string v1, "\u8ba2\u8d2d\u7ed3\u679c\uff1a"

invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

move-result-object v0

iget-object v1, p0, Lorg/meteoroid/plugin/feature/MMIAPSMS;->asZ:Ljava/lang/String;

invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

move-result-object v0

invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

move-result-object v0

invoke-direct {p0}, Lorg/meteoroid/plugin/feature/MMIAPSMS;->fail()V

goto :goto_0


0x3e9是定义成功的。

if-ne p1, v0, :cond_0 属于判断。

既然知道了结果,那么修改的方法有几种。

第一种;
删掉; if-ne p1, v0, :cond_0 。  因为代码变换了位置。
所以删掉该句跳转。就不会跳转到cond_0。直接运行成功的代码。


第二种;
看成功和失败代码中的2句;

成功中的;

invoke-direct {p0}, Lorg/meteoroid/plugin/feature/MMIAPSMS;->jR()V

失败中的;

invoke-direct {p0}, Lorg/meteoroid/plugin/feature/MMIAPSMS;->fail()V


也就是说成功会跳转到方法;
jR()V 方法中。实现成功

失败会跳转到;
fail()V方法中。实现失败。

所以把jR()V替换fail()V同样可以破解成功。



第三种;
jR()V方法中的代码替换到fail()V中。同样可以达到破解成功。
要注意路径问题。

到此。教程结束。

朋友们,看懂了吗?没看懂可以到这里提问,









本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

举报 使用道具

回复

精彩评论4

myoldid    发表于 2014-12-13 16:34:32 | 显示全部楼层
看懂了,鬼哥的方法也简单,直接定义const/16 p1, 0x3e9

举报 使用道具

回复 支持 1 反对 0
(业)    发表于 2014-12-2 18:21:23 | 显示全部楼层
顶一个:)

举报 使用道具

回复
lk5261    发表于 2014-12-16 17:21:58 | 显示全部楼层
楼主的讲解很精彩,期待楼主下次的破解教程:lol

举报 使用道具

回复 支持 反对
抬头望未来    发表于 2015-8-3 15:08:56 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

举报 使用道具

回复 支持 反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表