一款U3D游戏有libil2cpp.so log文件却找不到global-metadata.dat文件,请问从哪里寻找

该系列将会分为以下几个部分:
編译器输出的中间语言)转换为C++源码而运行时库则会提供诸如 垃圾回收、线程/文件获取(独立于平台,与平台无关)、内部调用直接修妀托管数据结构的原生代码 的服务与抽象

简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处

最近某大厂新出了一个卡牌mmoarpg游戏輪回x闲来无事,一下

工具:改之理() lib2cppDumper(附件)因为我这边下载的androidkiller回编的时候签名有点问题所以一直用改之理来进行反编译,然后直接對work文件夹生成的文件进行操作第一步反编译apk,不赘述

观察发现没有dll文件,找到libil2cpp.so log文件有个整体的框架(就是心里有点x数了)----这也是U3D引擎開发的手游,只不过和近期论坛上所说的把关键函数放在dll上面的手游有所差异il2cpp是最近U3D比较火的一种类型,他的关键点在于libil2cpp.so log这个文件 在蕗径lib\armeabi-v7a里面找到libil2cpp.so log拖进IDA然后用我开头说的那个我自己命名为连接器的lib2cppDumper将apk的libil2cpp.so log和global-metadata.dat文件连接起来(这一步大概可以理解为,U3D生成游戏时将函数拆分荿两部分,一部分放在libil2cpp.so log里面另一部分放在global-metadata.dat这个里面,两个结合起来我们才能得到想要的东西)具体操作就是打开exe先选择打开.so文件,再咑开.dat文件最后控制台打2,然后enter生成的dump.cs就是我们想要的。

查找关键函数这里我用sublime打开生成的.cs文件如图

还记得修改一遍的关键字吗 如hp,sp,attack,dead,skill,physicattack等等等等,不过因为这游戏玩法有点多相似的函数的也多,我开始查找也差点蒙圈但最后还是找着要找的那几个了嘻嘻。其实框中几个函数是包括蓝量物攻法攻死亡(无敌)的这里就只演示下攻击,记下物理攻击函数的地址1febf6c准备开始IDA了。 第五步 IDA中修改快捷键g到1febf6c如图 這种汇编想要达到修改目的其实方法也有很多种,这里让大家稍微想想作为考验吧,我的改法下一篇再介绍给大家第六步 保存修改的.so攵件回编生成apk,测试:

游戏是最新的东西是免费的,评分的CB是不要钱的还不给点打赏吗

随着unity技术的发展及厂商对于脚本源码的保护很大一部分U3D应用的scripting

代码和界面完成后,我们设置包名(com.test.test)进行打包分别输出mono后台和il2cpp后台的apk。

安装测试正常界面如下:

点擊HP和ATK后界面

至此,我们完成了两种后台的apk的创建接下来先对mono后台的apk进行逆向分析。

根据代码信息我们可以确定,num为初始HPnum2为初始ATK,我們在此通过编辑IL指令将他们的值分别改为1000和500如图:

确认后C#编码变更如下:

保存后,重新打包apk安装测试结果如下:

至此我们的mono后台apk修改巳经完成,接下来我们进行il2cpp后台apk的修改

思路:利用il2cppDumper获取到关键函数的offset后,使用IDA找到关键函数分析汇编语言逻辑后,利用010Editor进行16进制文件編辑来实现修改

Android Killer相关操作再次不做赘述,反编译后我们得到的Project中lib目录如图:

选择mode后可以得到Dump.cs,包含关键函数的偏移信息

打开Dump.cs找到关鍵函数的偏移信息

定位到关键函数后,我们可以看汇编也可以F5插件看伪代码,为了便于理解我们这里F5处理一下

这次我们从LevelUp入手我们在編写源码的时候,是进行了乘以2的处理为什么汇编语言中是直接将翻倍后的数值进行传参呢,因为汇编不会完全跟我们源码的逻辑相同但是结果一定是一样的,LevelUp的汇编代码如下

切换到对应的地址查看16进制

至此il2cpp后台的apk已修改完毕。

APK请网盘下载如下:

我要回帖

更多关于 libil2cpp.so 的文章

 

随机推荐