Il2CppDumper v4.4.2

2019-04-16 424 ℃

最近一段时间又更新了一下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,看来越来越多的游戏厂商懂得要保护自己的游戏了,但是现在市面...

阅读全文

AssetStudio v0.10.0.76

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

阅读全文

UnityStudio Animation Beta版

程序已更新,有任何问题请去最新文章下留言 先说说GitHub仓库被关闭的事,上个星期收到GitHub发来的邮件说Unity公司认为UnityStudio侵犯了它“UNITY”的商标,...

阅读全文

5 条评论

欢迎留言

6 + 5 =