【⼿游逆向】初探Unity3d+il2cpp.so⽹游修改新⼿教程篇[内附
所有相关⼯具下载。。。
此⽂由于先发布到了吾爱破解,所以图⽚带有⽔印,
这⾥的是⼀款Himi喜欢的韩国游戏⼚商Fincon公司使⽤Unity3d制作的3DMMORPG 《HelloHeroEpicBattle》(apk并附带obb,附件过⼤,这⾥附上下载链接: ,google play地址: )
【第⼀步】:对安装apk进⾏取出必要的两个⽂件(通过解压⼯具解压、或者直接在双击apk,直接到两个⽂件拖拽出来):
世界上有多少种语言1. apk/assets/bin/Data/Managed/Metadata/global-metadata.dat
2. apk/lib/armeabi-v7a/ libil2cpp.so  (arm64-v8a下的libil2cpp.so 不⽤理会)兽兽写真
[注]:最新版 Dump 出来的是 .cs 和 .h
【第三步】:利⽤⼯具Ultra Edit点我去下载  或者其他⼯具来打开 .cs 函数名集合⽂件
(这⾥使⽤010editor 原因是 后⾯我们要打开il2cpp.so⽂件必须也要⽤此⼯具,所以就懒得下载其他⼯具了)
我们在此函数⽂件中到想要的修改的地⽅,如果是单机⼤家肯定想修改的是 Gold/Money/Level/Skill/Hp/Attack/等,搜索感兴趣关键词即可,本⽂我们只修改显⽰的等级和技能等级:
思路:到获取等级或者技能等级的函数名,然后直接将其函数改成直接返回指定的值即可。
因此我们优先搜索相关的类,然后定位 等级和技能等级位置,确认其内存地址,如下图:
钱枫现任老婆
通过上图看到下⾯这⾏代码是获取⾓⾊等级的函数,其函数对应内存地址是:0x56E938
戴向宇个人资料public int get_p_level(); // RVA: 0x56E938 Offset: 0x56E938
通过上图看到下⾯这⾏代码是获取⾓⾊技能等级的函数,其函数对应内存地址是:0x56FD5C
public int GetSkillLevel(int index); // RVA: 0x56FD5C Offset: 0x56FD5C
【第四步】:利⽤⼯具UltraEdit 打开.so⽂件进⾏修改
(其实这⼀步之前我们省略了使⽤IDA⼯具对il2cpp.so⽂件分析汇编源码/伪代码的过程,直接暴⼒返回 10000 )
1. 由于.so⽂件内都是汇编指令对应arm机器码,所以我们要⾸先要编写⼀段汇编代码
Mov R0,0x2710
BX  LR
以上汇编指令表⽰:把0x2710 这个值给结果R0,然后直接返回。
那么0x2710 这个值是什么? 汇编指令中使⽤的都是⼗六进制的值,⽽我们可以经常看到的数字都是⼗进制,所以我们个⼗进制转⼗
六进制的⽹站或者科学计算器转换⼀下即可,如下图:
2.  我们将汇编代码要改成.so⼀致的机器码,这⾥推荐⼀个转换⽹站:
得到机器码:100702E3    1EFF2FE1
3. 打开游戏的 il2cpp.so⽂件,control + g ,跳转到要修改的两个地址
a) ⾸先定位到 获取⾓⾊等级的函数,获取⾓⾊技能等级的函数,其函数对应内存地址是:0x56FD5C ,将其机器码修改苍兰诀小兰花怀孕番外4
成  100702E3    1EFF2FE1,如下图:
b) 按照上述⽅法把 定位到 获取⾓⾊等级的函数,其函数对应内存地址是:0x56E938 将其机器码修改成  100702E3    1EFF2FE1
c) control + s 保存,最新的修改覆盖掉之前的il2cpp.so⽂件
【第五步】:将修改好的.so⽂件,直接拖⼊我们的游戏apk对应的⽂件夹中进⾏覆盖
到此,整个修改就完成了,我们看下修改前和修改后的前后对⽐图:
修改前卡⽚等级6,技能等级都是1, 修改后都是10000
【总结】:
1.  整体破解思路就是拿到dump出来的cs函数⽂件,进⾏搜索关键(关⼼的)函数,拿到其地址
2. 然后使⽤IDA打开.so⽂件,也是 g 定位到你关⼼的函数地址上,然后对函数进⾏修改成你想要的逻辑汇编代码
幸福留言代码
(此步骤,需要你对汇编和代码逻辑有⼀定的理解和熟悉,如果不太懂就可以仿照本⽂的暴⼒修改直接返回)
3.将你修改的汇编代码对应的地址记录好,然后到so中进⾏定位修改。
【注】
你在.cs中拿到的函数地址,其实只是这个函数开始的地址,真正执⾏的代码地址可以使⽤IDA进⾏查看,例如:
上图中是IDA中展⽰的某⼀个函数地址为0x003D4864,⽽假设你修改了正⽅形圈选的这⼀⾏,那么你.so对应修改的内存地址:不应该是 0x003D4864,⽽是箭头指向对应的修改的那⼀⾏的地址:0x003D4898