一次安卓逆向之「饥饿鲨」内购破解

栏目: IOS · Android · 发布时间: 6年前

内容简介:前人栽树,后人乘凉,第一次安卓逆向在翻看了无数的教程之后,选择一款不算是国内大厂制作发行并且版本较老的apk《饥饿鲨》,版权属于育碧手游(UBSOFT),在签名、验证等环节可能就省去了不少步骤,下面就是比葫芦画瓢+思考环节打开apk后发现,首先是发现加载页有个电信的爱游戏平台,可以得到一些对应关键字的信息,如:

前人栽树,后人乘凉,第一次安卓逆向在翻看了无数的教程之后,选择一款不算是国内大厂制作发行并且版本较老的apk《饥饿鲨》,版权属于育碧手游(UBSOFT),在签名、验证等环节可能就省去了不少步骤,下面就是比葫芦画瓢+思考环节  一次安卓逆向之「饥饿鲨」内购破解

一次安卓逆向之「饥饿鲨」内购破解

准备

发现

打开apk后发现,首先是发现加载页有个电信的爱游戏平台,可以得到一些对应关键字的信息,如: paySuccesspayCancelpayFailed 等,对于特定的游戏内购平台,关键字不大相同又如出一辙;

一次安卓逆向之「饥饿鲨」内购破解

主页面点击购买金币和钻石,可能是由于游戏版本较老还是平台验证什么原因,在真机和模拟器上一直无法购买成功,等下我们就在这里做文章,跳过这个支付验证  一次安卓逆向之「饥饿鲨」内购破解

一次安卓逆向之「饥饿鲨」内购破解

反编译

将游戏拖入IDE打开,生成游戏应用目录,实际上apk类似一个压缩文件,通过winnar同样可以看到解压后的文件:

  • AndroidMainifest.xml:以xml结尾的都知道了,类似站点的sitemap,这里也就是安卓的结构目录 ;
  • build:一般存放 classes.dex 可执行文件以及 resources.arsc 语音包文件;
  • assets:同样顾名思义,有价值的东西,安卓的“财富”文件夹,放一些图片等文件;
  • lib:安卓的.so文件动态库文件夹;
  • res :资源库目录 一般存放xml布局文件和图标;
  • original:存放 META-INF 签名文件夹的目录;
  • smail:Dalvil(Google为安卓设计的虚拟机)的内部执行代码;

不同的应用目录位置是大同小异的。在IDE这类专业 工具 中,有助于更好的分析。

一次安卓逆向之「饥饿鲨」内购破解

像gameloft等这种国外手游大厂都很倾向于Unity3D引擎去制作游戏(小时候玩的有点多)。由于不是手游发烧友,研究一下育碧手游,如何识别?我们点开lib文件夹,可以发现下面有个 armeabi-v7a 文件夹,看到arm便知道这和多半的内核有关系,其中的.so文件支持arm架构的真机运行,如果修改过后,拿模拟器闪退也就是理所当然的事情了,再打开,发现存在libunity.so文件,到这里基本可以确定这就是一个Unity3D引擎制作的手游。

一次安卓逆向之「饥饿鲨」内购破解

要修改Unity3d游戏,首先就要对其游戏代码存放位置有一个基本的了解。Unity3d生成游戏的游戏主逻辑一般放在三个地方:libil2cpp.so、Assembly-CSharp.dll、 lua 脚本。

————一位伟人说过

分析

既然有可能(很大可能)存在于.dll文件中,那我们找到IDE目录下,找到apk解压目录,将 Assembly-CSharp.dllAssembly-CSharp-firstpass.dll 拖入dnSpy中,并尝试搜索关键字 paySuccess

一次安卓逆向之「饥饿鲨」内购破解

一次安卓逆向之「饥饿鲨」内购破解

编辑器语言为C#,发现上面提到一般爱游戏关键词都失效,既然都如出一辙,那我们换个思路尝试搜索 success ,看能否大有大有收获:

一次安卓逆向之「饥饿鲨」内购破解

可以看到这是一个私有类,再往下搜索,眼前一亮,我们找到了公共类 OnPurchaseSuccessfull (拼写是啥玩意 一次安卓逆向之「饥饿鲨」内购破解 ),由于暂时只考虑破除内购,其他大类咱先不看:

一次安卓逆向之「饥饿鲨」内购破解

同理,以 PurchaseFail 为关键词,看看他们各自都是如何返回执行的,看到有一个if判断语句,如果支付失败,支付取消,返回失败:

一次安卓逆向之「饥饿鲨」内购破解

这就显而易见了,如果支付失败让他也直接返回 Success ,即把 OnPurchaseSuccessfull 的执行代码拷贝到 OnPurchaseFailed 方法下面,我们在对应代码右键→编辑方法,替换后编译:

Debug.Log("OnPurchaseSuccessfull in GUIManager");
		GUIBuyingProcess[] componentsInChildren = base.GetComponentsInChildren();
		for (int i = 0; i < componentsInChildren.Length; i++)
		{
			if (componentsInChildren[i].Type == GUIBuyingProcess.BuyingType.Currency || componentsInChildren[i].Type == GUIBuyingProcess.BuyingType.CoinMultiplier)
			{
				componentsInChildren[i].State = GUIBuyingProcess.BuyState.ePurchaseConfirmed;
			}
			else
			{
				Debug.Log("Unrecognised buying type: " + componentsInChildren[i].Type);
			}
		}
		FGOLAnalytics.ReportBankPurchaseResult("Success"); 

一次安卓逆向之「饥饿鲨」内购破解

Assembly-CSharp.dllAssembly-CSharp-firstpass.dll 都进行如此操作,然后保存到对应原ApkIDE\Work\com.fgol\assets\bin\Data\Managed目录当中,保存模块:

一次安卓逆向之「饥饿鲨」内购破解

返回IDE,刷新目录,编译签名apk,耐心等待:

一次安卓逆向之「饥饿鲨」内购破解

在模拟器打开一下,看看效果(记录器抽风  一次安卓逆向之「饥饿鲨」内购破解 ):

一次安卓逆向之「饥饿鲨」内购破解

其他

对于安卓逆向,AndroidKiller、ApkIDE、GDA这几个工具都可以,看个人习惯以及电脑的环境配置来操作,AndroidKiller基于apktool反编译,且需要配置java JDK,版本号不兼容经常编译失败,推荐后两者。

下载: Download

参考教程(部分):


以上所述就是小编给大家介绍的《一次安卓逆向之「饥饿鲨」内购破解》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

智能优化方法

智能优化方法

汪定伟 / 2007-4 / 37.10元

《智能优化方法》主要介绍近年来产生发展的多种智能优化算法。包括为人熟知的遗传算法、禁忌搜索算法、模拟退火算法和蚁群优化算法;近年来已成为研究热点的粒子群优化算法;还有尚待普及的捕食搜索算法和动态环境下的进化计算。书中讨论这些算法的产生和发展、算法的基本思想和理论、基本构成、计算步骤和主要的变形以及数值例子和实际应用。为了方便读者学习,各章之后还附有精选的习题、思考题及相关的参考文献。 本教材......一起来看看 《智能优化方法》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试