2020-03-06 26,171 ℃

距离上次在博客发布都要快一年了,这次因为又添加了一个新功能,所以在博客介绍一下。
ida脚本现在分为“ida.py”和“ida_with_struct.py”两个,使用“ida_with_struct.py”会载入“il2cpp.h”并在ida应用结构信息,包括变量,函数,虚函数表等等。
测试代码
public class Class1 { private int b; public Class1() { b = 1; } public virtual int Add(int a) { return b + a; } public virtual int Sub(int a) { return b - a; } } public class Class2 : Class1 { private int c; public Class2() { c = 2; } public override int Add(int a) { return c + a; } public override int Sub(int a) { return c - a; } } public class Class3 { public Dictionary<Class2, int> a = new Dictionary<Class2, int>(); public static int b = 5; public int test(Class2 d) { var c = new Class2[255]; c[50] = d; var e = d.Sub(b); a.Add(d, e); return e; } }
使用脚本后ida F5 Class3.test函数,我已经添加了注释
int32_t __cdecl Class3__test(Class3_o *this, Class2_o *d) { Class2_array *v2; // eax Class3_o *v3; // ecx Class2_array *v4; // edi Class3_c *v5; // eax int v6; // eax Il2CppObject *v7; // edi System_Collections_Generic_Dictionary_TKey__TValue__o *v8; // eax int v10; // eax int v11; // eax if ( !byte_1059BC60 ) { sub_100CD270(1700); byte_1059BC60 = 1; } //var c = new Class2[255]; v2 = (Class2_array *)il2cpp_array_new_specific(Class_Class2__, 255); v4 = v2; if ( !v2 ) goto LABEL_18; if ( d && !sub_100CCFE0(d, v2->obj.klass->_1.element_class) ) { v10 = sub_100CD1A0(); sub_100CD380(v10, 0); } if ( v4->max_length <= 50 ) { v11 = sub_100CD1E0(); sub_100CD380(v11, 0); } //c[50] = d; v4->m_Items[50] = d; v5 = Class_Class3; if ( Class_Class3->_2.bitflags2 & 2 && !Class_Class3->_2.cctor_finished ) { il2cpp_runtime_class_init((unsigned int)Class_Class3); v5 = Class_Class3; } //var e = d.Sub(b); v3 = (Class3_o *)v5->static_fields->b; if ( !d || (v6 = ((int (__cdecl *)(Class2_o *, Class3_o *, void *))d->klass->vtable._5_Sub.methodPtr)( d, v3, d->klass->vtable._5_Sub.method), v3 = this, v7 = (Il2CppObject *)v6, (v8 = (System_Collections_Generic_Dictionary_TKey__TValue__o *)this->a) == 0) ) { LABEL_18: sub_100CD3B0(v3); } //a.Add(d, e); System_Collections_Generic_Dictionary_TKey__TValue___Add(v8, (Il2CppObject *)d, v7); //return e; return (int32_t)v7; }
注意对于函数中实例化的局部变量,ida没法正确判断类型,需要手动指定类型。
虽然脚本已经经过了多次测试,但是也不能保证不会报错,其中“apply_type failed”这个错误可以无视,因为ida也不给具体的错误原因,修都不知道从哪里修,其他错误的话欢迎在github或者这里反馈。
ghidra的脚本不支持载入“il2cpp.h”,因为我暂时懒得去翻ghidra的文档了,等等看有没有大佬帮忙完善一下(
最后惯例
下载地址
Latest Build版本
源码
il2cpp后想通过直接修改汇编指令(打补丁修改二进制)修改游戏逻辑,遇到问题:
1、如何给类或结构体增加新的字段?
2、如何给类增加静态成员 或全局变量?
请教一下,是否可行?思路 难度/工作量如何?
看源码看得糊涂,不确定是不是只要重构metadata就行
需要增加的逻辑复杂,不加字段、静态字段/全局变量搞不定
您是否有计划更新 Unity 2023 版本的支持?
Do you have any plans to update support by Unity 2023 version?
你好!
Hello,
Can you update il2cpp to support v31 please
Initializing metadata…
System.NotSupportedException: ERROR: Metadata file supplied is not a supported version[31].
at Il2CppDumper.Metadata..ctor(Stream stream) in C:\projects\il2cppdumper\Il2CppDumper\Il2Cpp\Metadata.cs:line 57
at Il2CppDumper.Program.Init(String il2cppPath, String metadataPath, Metadata& metadata, Il2Cpp& il2Cpp) in C:\projects\il2cppdumper\Il2CppDumper\Program.cs:line 124
at Il2CppDumper.Program.Main(String[] args) in C:\projects\il2cppdumper\Il2CppDumper\Program.cs:line 98
Press any key to exit…
同样的问题没有解决,厂家也没有更新了
双生视界dump不出来,出现下面错误,请问是什么原因
Initializing metadata…
Metadata Version: 29
Initializing il2cpp file…
Il2Cpp Version: 29
Searching…
Change il2cpp version to: 29.1
CodeRegistration : 1855d5f60
MetadataRegistration : 185de7420
Dumping…
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
Done!
Generate struct…
System.IndexOutOfRangeException: Index was outside the bounds of the array.
at Il2CppDumper.Il2CppExecutor.GetTypeDefinitionFromIl2CppType(Il2CppType il2CppType) in C:\projects\il2cppdumper\Il2CppDumper\Utils\Il2CppExecutor.cs:line 295
at Il2CppDumper.Il2CppExecutor.GetTypeName(Il2CppType il2CppType, Boolean addNamespace, Boolean is_nested) in C:\projects\il2cppdumper\Il2CppDumper\Utils\Il2CppExecutor.cs:line 101
at Il2CppDumper.Il2CppExecutor.GetTypeDefName(Il2CppTypeDefinition typeDef, Boolean addNamespace, Boolean genericParameter) in C:\projects\il2cppdumper\Il2CppDumper\Utils\Il2CppExecutor.cs:line 154
at Il2CppDumper.StructGenerator.CreateStructNameDic(Il2CppTypeDefinition typeDef) in C:\projects\il2cppdumper\Il2CppDumper\Outputs\StructGenerator.cs:line 981
at Il2CppDumper.StructGenerator.WriteScript(String outputDir) in C:\projects\il2cppdumper\Il2CppDumper\Outputs\StructGenerator.cs:line 55
at Il2CppDumper.Program.Dump(Metadata metadata, Il2Cpp il2Cpp, String outputDir) in C:\projects\il2cppdumper\Il2CppDumper\Program.cs:line 266
at Il2CppDumper.Program.Main(String[] args) in C:\projects\il2cppdumper\Il2CppDumper\Program.cs:line 100
Press any key to exit…
你好。 我需要通过电子邮件联系您。 我不会说中文。 谢谢 :)
Initializing metadata…

Metadata Version: 27
Initializing il2cpp file…
Il2Cpp Version: 27
Searching…
CodeRegistration : 0
MetadataRegistration : 0
Use custom PE loader
System.ComponentModel.Win32Exception (126): 找不到指定的模块。
at Il2CppDumper.PELoader.Load(String fileName) in C:\projects\il2cppdumper\Il2CppDumper\Utils\PELoader.cs:line 48
at Il2CppDumper.Program.Init(String il2cppPath, String metadataPath, Metadata& metadata, Il2Cpp& il2Cpp) in C:\projects\il2cppdumper\Il2CppDumper\Program.cs:line 217
ERROR: An error occurred while processing.
Press any key to exit…
这个dll加壳了,调用了外部的其他dll,你需要把Il2CppDumper.exe放到跟dll原始目录一起,不过大概率还是会因为加壳的原因dump失败
P神,现在很多游戏都使用热更新,老的使用lua,新的很多都开始用HybridCLR等之类的,核心函数都在热更新dll中。通过内存可以dump出来热更新的dll,但是却没办法用il2cppdumper这类的软件直接获取dump.cs文件 (无法获得热更新部分的函数内存偏移等数据)。那这种情况下怎么把热更新的函数也dump出来呢?
抱歉现在才回复你,我已经有很长一段时间没有继续研究il2cpp了,如果以后还继续搞逆向有遇到的话,可能会研究看看
Initializing metadata…
System.Collections.Generic.KeyNotFoundException: The given key ‘kIl2CppMetadataUsageInvalid’ was not present in the dictionary.
at Il2CppDumper.Metadata.ProcessingMetadataUsage() in C:\projects\il2cppdumper\Il2CppDumper\Il2Cpp\Metadata.cs:line 235
at Il2CppDumper.Metadata..ctor(Stream stream) in C:\projects\il2cppdumper\Il2CppDumper\Il2Cpp\Metadata.cs:line 121
at Il2CppDumper.Program.Init(String il2cppPath, String metadataPath, Metadata& metadata, Il2Cpp& il2Cpp) in C:\projects\il2cppdumper\Il2CppDumper\Program.cs:line 124
at Il2CppDumper.Program.Main(String[] args) in C:\projects\il2cppdumper\Il2CppDumper\Program.cs:line 98
Press any key to exit…
请问这是什么情况啊
Metadata被加密
Initializing metadata…
Metadata Version: 24
Initializing il2cpp file…
System.NotSupportedException: ERROR: il2cpp file not supported.
在 Il2CppDumper.Program.Init(String il2cppPath, String metadataPath, Metadata& metadata, Il2Cpp& il2Cpp) 位置 C:\projects\il2cppdumper\Il2CppDumper\Program.cs:行号 124
在 Il2CppDumper.Program.Main(String[] args) 位置 C:\projects\il2cppdumper\Il2CppDumper\Program.cs:行号 100
Press any key to exit…
请问大大,这是什么原因呢?用010editor看了global-metadata.dat是没有加密的。
难道是我缺了什么组件吗?
期待您的回复!
il2cpp可执行文件选择错误
万能的网友们!ios的app砸壳后macho只有80k,我百度了一下数据是放到framework文件夹里了,现在Dump报错了,恢复不了符号表,有解决办法吗?
ida8免费版怎么导入py,好像换成idc格式了
没用过ida8,你可以考虑自己改下脚本
感谢大佬,已经换回7.5了。然后弱弱地问一个关于HOOK的问题,我想给一个PC端(il2cpp)卡牌游戏添加导入导出卡组的功能(Master Duel),我找到了添加卡牌的函数的地址,我尝试手动调用它。地址,参数,返回值都正确,而且CE动态调试的断点也显示代码被执行到了,但游戏还是马上崩溃了,跟踪到最后也没明白为什么崩溃,崩溃的地方也没用到我传进去的参数。但都是一些静态函数,即使跳过一个导致崩溃的call,后面依旧会崩溃,而且跳过的函数并不给崩溃的函数提供数据……
最后我甚至保证了它自己调用,和我手动调用时的寄存器状态,栈全都一致,至少中途用到的数据一致,然而还是崩溃了。我调用最外层的添加卡牌按钮的点击事件,结果也是一样。然后我还尝试调用了一些别的函数,除了一个显示进度条的函数正常执行,其它无一例外的崩溃,这种问题大佬有什么思路吗?我能想到的问题就只有线程,因为我是把DLL注入以后,在DLL里调用的。
你可以参考我另外一篇讲Il2Cpp Api的文章,里面有提到了一些事前准备和函数调用的注意事项,比如你说到的线程,dll注入后你需要先调用il2cpp_thread_attach,当然可能也不一定是这个原因,这个只能你自己慢慢研究了
Initializing metadata…
System.Collections.Generic.KeyNotFoundException: 给定关键字不在字典中。
在 System.ThrowHelper.ThrowKeyNotFoundException()
在 System.Collections.Generic.Dictionary`2.get_Item(TKey key)
在 Il2CppDumper.Metadata.ProcessingMetadataUsage() 位置 C:\projects\il2cppdumper\Il2CppDumper\Il2Cpp\Metadata.cs:行号 218
在 Il2CppDumper.Metadata..ctor(Stream stream) 位置 C:\projects\il2cppdumper\Il2CppDumper\Il2Cpp\Metadata.cs:行号 124
在 Il2CppDumper.Program.Init(String il2cppPath, String metadataPath, Metadata& metadata, Il2Cpp& il2Cpp) 位置 C:\projects\il2cppdumper\Il2CppDumper\Program.cs:行号 126
在 Il2CppDumper.Program.Main(String[] args) 位置 C:\projects\il2cppdumper\Il2CppDumper\Program.cs:行号 100
Press any key to exit…
请问这是什么情况呀?搜也搜不到,github介绍的常见问题里也没有
大概率是metadata文件有加密
碰到硬茬了,奥比岛,电脑上用不了,用手机模块游戏直接闪退,也没有dump.cs
大佬 我是逆向小白 请问为啥脚本导入了ida with struct ida就会卡死 但是单纯的导入ida·py 就不会卡死
可能不是卡死,只是脚本还没运行完,结构体脚本通常需要花上几倍的时间处理
一直弹窗报Bad declaration. See the message window for details.
换IDA7.5+Python3.8.7 报错少多了,只有46个apply_type failed
需要ida7.3以上版本才能支持子类结构体可以跟父类有相同名称的成员,不然就会编译失败
World Witches安卓64位 IDA7.0+Python2.7 工具6.6.5 执行ida_with_struct.py狂报错
……
中间省略N多屏
……
Syntax error near: System_Collections_Generic_List_IntervalTreeNode__c
apply_type failed: 0x514d6e8L System_Collections_Generic_List_IntervalTreeNode__c*
Syntax error near: System_Collections_Generic_List_Enumerator_Vector2__c
apply_type failed: 0x5107190L System_Collections_Generic_List_Enumerator_Vector2__c*
Syntax error near: UnityEngine_Events_UnityAction_BaseEventData__c
apply_type failed: 0x510c2f8L UnityEngine_Events_UnityAction_BaseEventData__c*
Syntax error near: WW_ItemBox_View_IItemBoxScrollCellData_c
apply_type failed: 0x514c980L WW_ItemBox_View_IItemBoxScrollCellData_c*
Syntax error near: System_Func_Button__bool__c
apply_type failed: 0x5165690L System_Func_Button__bool__c*
Syntax error near: WW_UI_SortFilterGroupData_c
apply_type failed: 0x5101de0L WW_UI_SortFilterGroupData_c*
Syntax error near: System_Func_int__int__Tuple_int__int___c
apply_type failed: 0x5154da8L System_Func_int__int__Tuple_int__int___c*
Syntax error near: System_Action_Tuple_int__int___c
apply_type failed: 0x5125d88L System_Action_Tuple_int__int___c*
Syntax error near: __f__AnonymousType2_int__float__c
apply_type failed: 0x5171ed8L __f__AnonymousType2_int__float__c*
Syntax error near: System_Func_float__int____f__AnonymousType2_int__float___c
apply_type failed: 0x50ff7b8L System_Func_float__int____f__AnonymousType2_int__float___c*
Syntax error near: System_Func___f__AnonymousType2_int__float___float__c
apply_type failed: 0x513b360L System_Func___f__AnonymousType2_int__float___float__c*
Syntax error near: Zenject_BindStatement_c
apply_type failed: 0x51267a8L Zenject_BindStatement_c*
Syntax error near: Zenject_PoolExceededFixedSizeException_c
apply_type failed: 0x5176570L Zenject_PoolExceededFixedSizeException_c*
Syntax error near: Zenject_ScopeTypes_c
apply_type failed: 0x50fb9d8L Zenject_ScopeTypes_c*
Script finished!
这正常吗?
大佬打扰了 想导入script.json到ida当中 但是我的ida只能导入.idc或者.py后缀的文件 请问该怎么操作呢
嗨,我想将 DummyDll 文件回滚到 Il2Cpp
打扰大佬了,我是一名小白,使用AssetStudio没有拆出资源怀疑是加密了,成功用Il2CppDumper拆出DummyDll文件夹,但接下来不知道该如何提取spine,网上搜到的相关都是修改游戏数据,大佬是否能指点一下,或者指路现有的教程呢,十分感谢
我也是啊,顶一下你,希望作者回复一下,我也拆出dll文件,就是找不到解密ab包的逻辑,求指教
dalao能拆一下重装战姬的live2D吗,拆包后没看到立绘全live2D散件
因为用的是spine,不是live2d
大佬有macOS版本的吗
有net core版本可以在macOS上运行
大佬,请问使用iL2CPP打包的U3D游戏,游戏的配置表一般在什么地方?是在\assets\bin\Data文件夹下面的ASSET文件里面,还是在SO文件里面呢?
Init ializing me tadata….Me tadata Version: 24.1
In it ializ ing il2cpp f ile.. .
Detected this maybeadumpfile
Input il2cpp dump address or input a to force cont inue:Øx7f 554bØØ0
I 12Cpp Version: 24.1Se arching- . –
Code Regis trat ion
Me t adat aRegis trat ion :0
ERROR : No symbol is detected
ERROR: Gan’t use auto mode to process file. try manual mode Input Code Reg is trat ion:
怎么解决
新版(包括这里的610和github的624)都有个细微问题
举例以前的dump文件都是
public static void xxxx() //RVA: 0xXXXXXXXX Offset: 0xXXXXXXXX VA: 0xXXXXXXXX
public void .ctor(); //RVA: 0xXXXXXXXX Offset: 0xXXXXXXXX VA: 0xXXXXXXXX
(…)
现在每一行直接加了空格变成了
//RVA: 0xXXXXXXXX Offset: 0xXXXXXXXX VA: 0xXXXXXXXX
public static void xxxx()
//RVA: 0xXXXXXXXX Offset: 0xXXXXXXXX VA: 0xXXXXXXXX
public void .ctor();
//RVA: 0xXXXXXXXX Offset: 0xXXXXXXXX VA: 0xXXXXXXXX
(…)
造成的结果就是比如用notepad++搜索某个方法非常慢,以前可以瞬间最多一两秒搜索出来的结果现在可能要10-20秒
尤其是如果有很多同名方法的情况下搜索速度会更慢
搜索的话用dnspy打开DummyDll搜索他不香吗,还能限制搜索范围和类型
最近试用一下https://github.com/djkaty/Il2CppInspector 发现它这个能导出保存在metadata的常量
比如
public const int kTargetFps = 60; // Metadata: 0x00AD3895
public const float kTargetFpsF = 60f; // Metadata: 0x00AD3899
public const float kFrameToSec = 0.016666668f; // Metadata: 0x00AD389D
但il2cppdumper给出的dummydll却是
[Il2CppDummyDll.FieldOffset(Offset = “0x0”)]
public const int kTargetFps = 60;
[Il2CppDummyDll.FieldOffset(Offset = “0x0”)]
public const float kTargetFpsF = 60f;
[Il2CppDummyDll.FieldOffset(Offset = “0x0”)]
public const float kFrameToSec = 0.0166666675f;
希望能考虑支持给出常量在MetaData的地址
根据你贴的信息来看,我姑且认为你是想直接修改常量的值?
但是常量在编译后,除了string类型的值转成stringliteral后还是存储在metadata中,其他值类型都是编译时就替换成了具体的值,修改metadata也没有任何效果,所以我认为输出常量的metadata offset没有任何意义。
至于数组类型初始化所用到的值是会在dump.cs里输出metadata offset的。
[FieldOffset(Offset = “0x0”)]
public const string LEGACY_SUFFIX = “_legacy”;
给个地址呗,有时可能也要改字符串;开两个工具看还有点麻烦
其他值类型都是编译时就替换成了具体的值,修改metadata也没有任何效果——那么想要改非string常量 该怎么做呢
常量只是在编译时期用的数据,string常量转成stringliteral后的metadata offset跟原本string常量的metadata offset是不一样的,你修改原本string常量值并不会改变已经编译成stringliteral的值。只是stringliteral依旧存储在metadata中,你搜索“_legacy”应该可以搜到两个一样的字符串。
要修改非string的常量就直接修改il2cpp的代码。
System.IO.InvalidDataException: ERROR: Metadata file supplied is not valid metadata file.
於 Il2CppDumper.Program.Init(Byte[] il2cppBytes, Byte[] metadataBytes, Metadata& metadata, Il2Cpp& il2Cpp) 於 C:\projects\il2cppdumper\Il2CppDumper\Program.cs: 行 119
於 Il2CppDumper.Program.Main(String[] args) 於 C:\projects\il2cppdumper\Il2CppDumper\Program.cs: 行 81
Press any key to exit…
求大佬解答
解决了吗,同问。看报错是global-metadata.dat不能正确识别,昨天以为是unity更新了文件结构,但是刚刚查了一下,unity最新的是2019年发布的,所以估计是Java层或者so层对这个文件加密了。
大佬,出现以下错误:
Initializing metadata…
Metadata Version: 24.1
Initializing il2cpp file…
Select Platform: 1.32bit 2.64bit
Il2Cpp Version: 24.1
Searching…
CodeRegistration : 100f37560
MetadataRegistration : 100f655c8
System.IndexOutOfRangeException: Index was outside the bounds of the array.
at Il2CppDumper.Il2Cpp.Init(UInt64 codeRegistration, UInt64 metadataRegistration) in C:\projects\il2cppdumper\Il2CppDumper\Il2Cpp\Il2Cpp.cs:line 72
at Il2CppDumper.Il2Cpp.AutoInit(UInt64 codeRegistration, UInt64 metadataRegistration) in C:\projects\il2cppdumper\Il2CppDumper\Il2Cpp\Il2Cpp.cs:line 65
at Il2CppDumper.Macho64.PlusSearch(Int32 methodCount, Int32 typeDefinitionsCount) in C:\projects\il2cppdumper\Il2CppDumper\ExecutableFormats\Macho64.cs:line 198
at Il2CppDumper.Program.Init(Byte[] il2cppBytes, Byte[] metadataBytes, Metadata& metadata, Il2Cpp& il2Cpp) in C:\projects\il2cppdumper\Il2CppDumper\Program.cs:line 175
ERROR: An error occurred while processing.
大佬我想知道手游的角色台词在哪个文件(global-metadata.dat里找不到
),怎么查看? 
为什么更改格式
I was wondering why you changed the format of the cs file
it was like this with the string and offset on the same line
public static WeeklyEvent get_ActiveWeeklyEvent() { } // RVA: 0x12C693C Offset: 0x12C693C
but now you have split this into two lines and changed the order like this
// RVA: 0x12C693C Offset: 0x12C693C VA: 0x77FFA2E93C
public static WeeklyEvent get_ActiveWeeklyEvent() { }
this seems illogical and makes automated parsing of the file quite a pain
大佬UEAB下载不到了 能否发一下给我124733292@qq.com 感激不尽
UABE已经停止研发了……上一次更新代码都是2年前了
https://github.com/DerPopo/UABE
Assembly-CSharp.dll没有加密也没有global-metadata.dat 怎么用这个软件dump看结构 类名 偏移呢?
请问解压出来的 Assembly-CSharp.dll 怎么打包回so文件 …..
想搞一下最近出来的公主连接
有什么思路么? 兄弟。貌似有成品出来了。
无思路+1
最近的成品都是用GG运行lua脚本 更改内存. 这种很容易检测.
Android republic有直装的说明已经有dump的可行思路了
么有VIP 没法下载.
之前看过hearthbuddy在Windows上的操作. 是通过RemoteThread 注入 反编译指令完成的.
Android这种dump也是利用android上的某些特性才对.
AR的封包数据修改,不是修改客户端。。。

是这样啊 打扰了
同问这种被保护的so文件怎么dump,谢谢大佬
大佬本人萌新 用gg脱出il2cpp之后用dump不出来提示被保护之后要怎么操作?
我也是萌新,请问怎么用gg脱出il2cpp?
大佬你在github上说被保护的so文件需要用gg从内存dump出来
要怎么dump。。。。
能出个dump,so 以及怎么找到那个地址多教程吗
使用ida_with_struct.py 并依次选择 stringliteral.json il2cpp.h 后,ida报
ida_with_struct.py: parse_decls expected 4 arguments, got 2
Traceback (most recent call last):
File “省略路径\ida_idaapi.py”, line 553, in IDAPython_ExecScript
execfile(script, g)
File “省略路径/ida_with_struct.py”, line 25, in
parse_decls(open(hpath, ‘rb’).read(), 0)
File “省略路径\ida_typeinf.py”, line 2205, in parse_decls
return _ida_typeinf.parse_decls(*args)
TypeError: parse_decls expected 4 arguments, got 2
能提供一下解决思路么,感谢
请使用7.0以上版本的ida
额。之前懒省事,没有改路径名称,实际版本是7.0.17.914版本
重新尝试了下,可能跟我选择的情况有问题有关,我这次选择顺序是ida_with_struct.py ->script.json ->il2cpp.h这样的顺序
之前是ida_with_struct.py ->stringliteral.json ->il2cpp.h 前者顺序是对的么?
选择框顶上不是有告诉你选什么文件吗
的确有,抱歉,疏忽了。
作者,新的24.2版好像用不了,全出错了
有问题请上传文件,就发个错误信息我怎么知道什么原因
大佬,新版本报错了
Il2CppDumper v6.4.19
Il2Cpp Version: 24.2
Initializing metadata…
Metadata Version: 24.2
Initializing il2cpp file…
Il2Cpp Version: 24.2
Searching…
CodeRegistration : 10337efd8
MetadataRegistration : 10342cfa0
Dumping…
ERROR: Some errors in dumping
ERROR: Some errors in dumping
ERROR: Some errors in dumping
Done!
Generate script…
System.ArgumentOutOfRangeException
大佬。用你的Il2CppDumper v6.1.0给il2cpp.so dump出来后,用ida反编译il2cpp.so
完成后导入il2cpp.so的脚本,到这里就没有可以导入的脚本了,这个版本怎么导入呢,求大佬指教一下。
大佬你好,之前你所写的双生视界的Live2d提取方法能用到约战.精灵再临这款游戏里的看板提取吗,
我怀疑它里面的physics3文件也经过了加密,可我不知道怎么解出来,游戏虽然不怎么样但它里面的高级看板还是挺精美的,求大佬解答
感谢大佬
大佬的博文让我受益匪浅
双生视界dump不出来,出现下面错误,请问是什么原因
Initializing metadata…
Metadata Version: 24.1
Initializing il2cpp file…
Applying relocations…
WARNING: find .init_proc
ERROR: This file may be protected.
Il2Cpp Version: 24.1
Searching…
CodeRegistration : 3ca5074
MetadataRegistration : 3ca50ac
System.IndexOutOfRangeException: 索引超出了数组界限。
在 Il2CppDumper.Il2Cpp.Init(UInt64 codeRegistration, UInt64 metadataRegistration)
在 Il2CppDumper.Il2Cpp.AutoInit(UInt64 codeRegistration, UInt64 metadataRegistration)
在 Il2CppDumper.Program.Init(Byte[] il2cppBytes, Byte[] metadataBytes, Metadata& metadata, Il2Cpp& il2Cpp)
ERROR: An error occurred while processing.
自己看第六行
这种被保护的文件怎么搞
ghidra的脚本要怎么用?我下了ghidra最新版,但是不知道怎么导入这个脚本。直接导入的话,选择Language应该选哪个?
Window-Script Manager-添加脚本所在的文件夹,然后过滤ghidra.py
谢谢大佬
dll导出来只有方法名没有具体内容
第一次用?建议百度一下il2cpp是什么东西 什么概念
第一!