吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 14365|回复: 14
收起左侧

[Android 原创] 从二战英雄看coco2dx游戏的smali层和so层内购破解

  [复制链接]
xiaoxin520 发表于 2015-8-13 02:13
本文作者:七少月
《二战英雄1.22》是一款coco2dx平台开发的游戏,我们通常理解,coco2dx游戏的逆向和纯java的逆向大同小异,都是在于smali层。淡然的教程也写过,实际上就是很相似,在他的教程里,几个典型的coco2dx游戏路径转向等逆向修改是在smali层可以实现。另外,我们还知道,coco2dx游戏有时关键信息可能放在lua或加密的lua里。但好像由于我们过于注重coco2dx游戏于普通java开发的相似性,都把精力放在了smali里,却不太去关注coco2dx的so里。其实,coco2dx和Unity3d的so反而显得更加重要。这从近期流行Unity3d游戏的DLL加密,而解密算法就放在libmono.so中就可以看出来,其实这两个平台的so是更为重要的。根据我的经验,一般而言,coco2dx游戏有两个so,一个是libbspatch.so,另一个是libcocos2dcpp.so,这两个so相比较,当然是libcocos2dcpp.so更重要些。本篇教程并非讲解内购破解,反而这个游戏的内购破解很简单,我要讲的是,注重so和java的联系,才能把知识学习的更痛彻。
游戏反编译后,我们可以直接找到JAVA层的内购破解重点,至于原因,就不再多说,可以搜索“支付失败”、“fail”等等,总之重点就在TunnelWar.smali及其分支代码中。这里有几处支付成功与失败,目测方式都差不多,我们只讲一处,如下图:
QQ截图20150813013352.png
很简单的JAVA代码,我们看看成功与失败的差异就在于nativePayResult这个函数后面的第一个参数是0还是1。TunnelWar.nativePayResult(1)意味着支付成功,TunnelWar.nativePayResult(0)意味着支付失败。我们就知道了,如果想内购破解,只要把TunnelWar.nativePayResult(0)变为TunnelWar.nativePayResult(1)就可以。然而,如果到此为止,我就不会写这个文章了,这并不是想说明的东西。我想说明的是如何从so层去内购破解。从关键函数nativePayResult()名字也能看出来,这是一个原生写在so里的方法。我们打开IDA,静态分析下这个so,打开输出函数窗口,ctrl+f,搜索“nativePayResult”,发现这个函数是so提供给java层TunnelWar类使用的,与我们如上分析的正好一致,如下图:
QQ截图20150813014158.png
   双击跟进去,直接F5,看C的伪代码,如下图:
QQ截图20150813014802.png

非常简单的代码,意思就是一句话,如果v30等于1就执行成功,否则就是失败。我要说的是,请回想相关JAVA层的代码,是否一样,如果v30为1时是成功,那么失败时候是不是值就该是0,与JAVA层我们刚分析是否正好符合。现在我们来到文本视图窗口,看怎么修改这个so,依旧很简单的ARM代码:
    QQ截图20150813015231.png
我们分析一下:就是让R3与1比较,如果不等于则跳到loc_2FD260这个地址处,也就是执行失败的代码,否则就往下走执行成功。由此,关键指令我们就知道是BNE,这个不等于指令,我们将其改为BEQ等于指令即可。这一点已经在我上次教程IDA深度修改so与ARM汇编关系》文章里说过,BEQ指令HEX为0A,BNE指令HEX为1A,原因请看我的上篇教程(有视频)。直接把so拉进WINHEX,alt+g快捷键,输入跳转地址“2FD170”,不懂的朋友请看看这句代码所在的地址,再不懂请看看基础知识或我的第一季EXE免杀教程。如下图,选中的4个HEX是上述那句跳转代码的HEX机器码,我们把1A改为0A,至于原因也请看上篇教程:
QQ截图20150813015946.png
至此,用APKIDE3.3(少月版),【嘿嘿,给自己宣传一下,莫怪】,重编译,OK!本次教程并非是想讲内购破解,而是想让大家注意两点:1.不要忽视coco2dx中的libcocos2dcpp.so,可能它日后也是加密解密的关键所在;2.不要因为可以在smali中去破解,就不去尝试分析so,实际上,我们应该多注意so层和JAVA层的数据交互和联系。

免费评分

参与人数 4吾爱币 +1 热心值 +4 收起 理由
xyt + 1 + 1 我很赞同!
亿联网络 + 1 我很赞同!
流云 + 1 我很赞同!
Free-Man + 1 热心回复!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

松陵看松 发表于 2017-11-6 15:32
你好 想请教一下 不做任何修改将游戏的dex文件回编译后dex文件会比源dex文件小  然后拖入apk中 无法安装是因为哪里出了问题呢
liang227 发表于 2015-8-13 02:21
屌丝男 发表于 2015-8-13 06:27
师太请您自重 发表于 2015-8-13 06:59 来自手机
前排留名,大神必须要膜拜,哦,不!是跪拜!!
zxt1005759639 发表于 2015-8-13 08:08
还没学到这
gudantegong 发表于 2015-8-13 10:39
大神多出点教程啊
没有气的汽水 发表于 2015-8-13 22:41
我感觉你的教程质量都挺高的
 楼主| xiaoxin520 发表于 2015-8-14 00:55
没有气的汽水 发表于 2015-8-13 22:41
我感觉你的教程质量都挺高的

感谢感谢
Sear 发表于 2015-9-19 03:05
好文章,赞一个。
xiaomi1991 发表于 2016-4-8 12:33
支持楼主 学习一下
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 19:08

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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