Il2CppDumper v4.4.2

2019-04-16 5,315 ℃

最近一段时间又更新了一下Il2CppDumper,除了支持switch的NSO格式外,最主要的还是完整处理了下MetadataUsage,现在在IDA执行script.py后,F5能看到所调用的实例类,静态类的具体名称了,分析算法和搞些花式修改也更容易了,所以这篇文章也稍微说下一些c#代码在il2cpp里是如何表现的。

实例类和实例变量

public class Test
{
	public int a; // 0x4
}

实例化和操作变量a,在IDA F5

v1 = sub_xxxx(Class_Test);
Test___ctor(v1);
v1 + 0x4 = 0;

静态类和静态变量

public class Test
{
	public static int a; // 0x0
	public static int b; // 0x4
}

操作静态变量a,b,在IDA F5

Class_Test + 0x5C = 0;
(Class_Test + 0x5C) + 0x4 = 0;

0x5C这个偏移会根据编译器与环境改变

数组类型变量默认值与初始化

public class Test
{
	public static int[] a = new[] { 7, 4, 6, 3, 4, 5, 7 }; // 0x0
}

静态变量的初始化操作都是在.cctor函数里完成的,所以直接查看Test..cctor(),F5

v1 = j_il2cpp_array_new_specific_0_0(Class_int__, 7);
RuntimeHelpers__InitializeArray_xxxx(
	0, 
	v1, 
	Field__PrivateImplementationDetails___field_081A99B1B1F17F85FDE62340DEFA3D600530007B, 
	0);
Class_Test + 0x5C = v1;

可以看出初始化的数组长度是7,接着在dump.cs里搜索初始化时用到的”081A99B1B1F17F85FDE62340DEFA3D600530007B”

可以看到默认值的偏移是0xA153F3,这个偏移就是global-metadata.dat里的偏移了,定位到这个位置就可以根据长度得到默认值了

惯例

下载地址

百度云

Latest Build版本

源码

GitHub

下面这两个教程讲解了如何在il2cpp里修改实例类,静态类变量,调用游戏函数等操作

https://iosgods.com/topic/65529-instance-variables-and-function-pointers/

https://iosgods.com/topic/70716-static-members-and-multithreading/

Il2CppDumper v4.2.1

程序已更新,有任何问题请去最新文章下留言 最近半个月收到了N条issue,打开一看全是加壳的so,看来越来越多的游戏厂商懂得要保护自己的游戏了,但是现在市面...

阅读全文

【2019-6-14】碧蓝航线Live2D提取

2019-6-14 v1.3 大量改进 2018-10-27 v1.2 完善4种Segment 2018-10-23 v1.1 修复易拉罐等SteppedSegment问题 正文 自从看到舰B的live2d后就决定要提取一发来...

阅读全文

AssetStudio v0.10.0.76

自从UnityStudio改名为AssetStudio后就没发过更新的文章了,这次觉得bug都修了差不多了,短时间也不会再更新什么了(大概),索性就发个更新文章吧 更新日志...

阅读全文

16 条评论

  1. Il2CppDumper-v4.5.11模式2 Dump过程中报错:“Process is terminated due to StackOverflowException.”,无法创建新的堆栈防护界面

  2. 链接:https://pan.baidu.com/s/18NMkGlsqTexUe-LsX2SbYg
    提取码:fgbl
    il2cppDumper-崩坏三3.3版本专用 不谢有问题联系QQ1404265140

  3. 作者问个问题,我通过metadata.dat 和 dll dumper出来 一系列的dll后, 然后将这些dll 放入 reflector 里查看他的内容, 发现只能看函数名变量结构这些,函数的具体内容无法查看,请问下是本身就不支持,还是dll 有问题?

    1. dll就只包括这些,内容和dump.cs差不多是一样的。函数需要用IDA之类的软件反编译so去看。

      1. 嗯 多谢了,另外再请教下, 我用ida运行 script.py的时候没起效,发现是基地址不对,然后根据 cs文件中的RVA和 off算了基地址,接着Rebase 了基地址,然后重新运行 script.py 这次有不少函数生效了,可是还有很多函数出现了分析错误 请问这是怎么回事啊。

  4. 請教一下,dump的時候出現“Input Unity version (Just enter the first two numbers eg. *.*, ****.*):”的字串是什麼原因?

  5. 直接改类属性可以实现很多没有暴露接口函数的功能
    不过直接去查具体的类属性的话得开好几个dump轮流看
    虽然还没用最新的工具,不过这次更新对于我这种改法来说是天大的福利吧
    感谢p大

欢迎留言

6 + 1 =