吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 6242|回复: 11
收起左侧

[Android 原创] 初识dat-so修改既相关工具简单介绍

  [复制链接]
北笙ぐ 发表于 2020-8-16 11:23
本节课我们主要就是认知IL2cpp打包机制的unity 3D游戏逆向,并对逆向过程中相关工具进行下简单讲解。内容并不算多,但基本都是有用的和基础的,对新人或许有一定的帮助,所以还是大家还是可以认真看一下。

【声明】
许多没有接触过so修改的小伙伴总以为比较难搞,从而就此放弃了对一些游戏的逆向。其实这个修改并不难,入门的话开始不太习惯,在自己独立修改了几个游戏后,你会发现so修改也是具有规律的:dump出游戏逻辑☞通过关键词寻址☞IDA定位分析☞十六进制修改☞打包测试,所以建议大家还是敢于尝试,并具有耐心[滑稽][OK]。

当然,前人们对于dat-so修改的教程也有很多,北笙ぐ也是正在学习逆向的路上,有什么的错误的内容或者有更好的、易理解的方式,欢迎交流学习,免得出现"北门弄so"等不妙的情况发生。


【前言】
关于Unity 3D引擎的几种打包方式这里就不再介绍,相信大家现在在逆向Unity 3D游戏时遇到的大多就是IL2cpp机制打包的,不得不说,随着手游技术的不断发展,IL2cpp打包机制已经成为了U3D手游引擎的主流。

IL2cpp,即把IL中间语言转换成CPP文件。在mono打包机制中游戏逻辑放在dll文件中,我们通过修改assets/bin/Data/Managed文件夹下的Assembly-Csharp.dll文件及相关dll文件来实现相关功能。那么在IL2cpp打包的机制中游戏的逻辑放在so文件内,所以我们修改的对象也就放在了lib目录下的libil2cpp.so文件。

当然,so文件里面的游戏逻辑也不是直接就能看到的,需要我们借助一些工具来分析。接下来我会结合案例来进行讲解和工具的使用。


【工具准备】
IL2cpp游戏修改我主要用到的工具如下:
工具.png


1.IDA pro7.0(所有游戏逆向者的女盆友,神器,教程中用于载入分析so文件)

2.Il2CppDumper-6.2.1(反编译获取游戏函数地址)

3.C32Asm(十六进制文件编辑器,用于修改so文件,当然其他具有十六进制修改功能的工具也可以)

4.dnspy(分析dump出相关函数的dll文件,因为该工具逻辑比较清晰,所以个人习惯使用,当然你用其他工具分析dump.cs文件也是可以的)

5.MT管理器(主要用于对修改后的apk签名等后续修改)


【教材分析】
废话不多扯,直接上教材:Climby Hammer(某分网下载)

1.jpg


在安装包内\lib\armeabi-v7a目录下发现了libil2cpp.so文件,以及在\assets\bin\Data\Managed\Metadata发现了global-metadata.dat文件,所以判定为IL2cpp机制打包的游戏。


进游戏看下可以修改的地方(游戏只有钻石这一种货币):修改货币;免广告获取奖励;直接解锁所有皮肤。出于简单基础考虑,我们讲修改货币这种思路。
2.jpg


【步骤一】
首先我们把global-metadata.dat和libil2cpp.so文件解压并拷贝到Il2CppDumper6.2.1的目录下,然后运行Il2CppDumper.exe程序,先选择libil2cpp.so文件再选择global-metadata.dat文件(最新版本不用再去判断游戏的unity 3D版本)。如图所示,看到这种提示就说明我们dump完成了。

dump完成截图.png

【步骤二】
我们已经确立了要修改的游戏内容,那就是钻石,此时使用IDA pro打开并载入libil2cpp.so文件(分析需要一段时间,视文件大小而定),载入文件后按下图操作来运行脚本文件,为代码添加函数注释,提高易读性。

添加脚本注释过程.png
脚本注释完成.png

【步骤三】
先让IDA分析着,我们用dnspy加载dump出来的dll文件(当然,分析dump.cs文件也是可以的)
拖入dnspy.png

常规搜索货币关键词diamond,crystal,money,currency等,发现只有currency有搜索结果,如图,基本可以确定这个是关键了。我们复制下函数GetCurrency的偏移地址。


dnspy搜索分析.png


dnspy搜索关键分析.png
【步骤四】
初步知道了要修改的函数地址,就去IDA里面验证分析了。
出现此类提示即表示IDA分析完毕(当然,不分析完也是可以的,只要目标函数地址周围分析出来了就可以)。
IDA刚分析完.png

之后按快捷键"G"跳转到目标函数地址
按G跳转.png

定位到该函数地址后,查看其伪代码
ida定位完成.png

分析修改思路如图,出于基础和通用等情况下考虑这里先讲方法一
改法分析.png
可以先在IDA里面进行修改并验证修改是否正确,对于汇编指令和十六进制操作码的转换可以使用在线转换工具https://armconverter.com/

ida十六进制定位.png

ida十六进制修改.png

修改正确后我们就可以去C32(或其他十六进制编辑器)中去修改so文件了
C32修改.png

最后,替换掉原包中libarmeabi-v7a目录下的libil2cpp.so,并删除libarmeabi-v8a目录(为什么看上边),打包签名测试。

3.jpg

货币已成为大量且有效,修改完成。

对于修改后为什么要删除v8a目录可以参考百度Android中的armeabi,armeabi-v7a和X86的区别

免费评分

参与人数 4吾爱币 +4 热心值 +4 收起 理由
不伦不类 + 1 + 1 用心讨论,共获提升!
风绕柳絮轻敲雪 + 1 + 1 我很赞同!
鹤舞九月天 + 1 + 1 谢谢@Thanks!
维多利加 + 1 + 1 我很赞同!

查看全部评分

本帖被以下淘专辑推荐:

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

xixicoco 发表于 2020-8-17 23:57
好文章啊,很硬盒
维多利加 发表于 2020-8-18 01:08
鹤舞九月天 发表于 2020-8-18 05:52
刀大喵 发表于 2020-8-18 08:41
干货满满  收藏了
ljj6363 发表于 2020-8-18 10:04
https://armconverter.com/更新后就不知道怎么用了
167023ab 发表于 2020-8-19 08:07
太牛了,门外汉真难,专业人士,太简单啊
小小宇6 发表于 2020-8-23 18:22
楼主,有推荐 入门逆向的视频吗?只是业务爱好者
pantherTL 发表于 2020-8-24 00:39
感谢分享,每天都学习到新的知识。
YTL 发表于 2020-8-27 07:16
有点懂了,感谢分享!
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-21 22:55

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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