Il2CppDumper v6.1.0

2020-03-06 26,164 ℃

距离上次在博客发布都要快一年了,这次因为又添加了一个新功能,所以在博客介绍一下。

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版本

源码

GitHub

双生视界Live2D提取

总算是回到家了,差点就要把这篇文章咕掉了。 在github上有人提双生视界Live2D解出来的文件载入显示有问题时,UnityLive2DExtractor的代码还没写完,所以先用...

阅读全文

UnityLive2DExtractor

摸了好久终于是把这玩意摸完了。 程序在原本AzurLaneLive2DExtract基础上,除了一些bug修复和细节完善,最主要的是实现了physics3.json的还原,这样其他游戏...

阅读全文

Il2CppDumper v4.4.2

程序已更新,有任何问题请去最新文章下留言 最近一段时间又更新了一下Il2CppDumper,除了支持switch的NSO格式外,最主要的还是完整处理了下MetadataUsage,现...

阅读全文

83 条评论

  1. 双生视界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…

  2. 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…
    :?: :?: :?:

    1. 这个dll加壳了,调用了外部的其他dll,你需要把Il2CppDumper.exe放到跟dll原始目录一起,不过大概率还是会因为加壳的原因dump失败

    2. P神,现在很多游戏都使用热更新,老的使用lua,新的很多都开始用HybridCLR等之类的,核心函数都在热更新dll中。通过内存可以dump出来热更新的dll,但是却没办法用il2cppdumper这类的软件直接获取dump.cs文件 (无法获得热更新部分的函数内存偏移等数据)。那这种情况下怎么把热更新的函数也dump出来呢?

  3. 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…
    请问这是什么情况啊

  4. 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是没有加密的。
    难道是我缺了什么组件吗?

    期待您的回复!

  5. 万能的网友们!ios的app砸壳后macho只有80k,我百度了一下数据是放到framework文件夹里了,现在Dump报错了,恢复不了符号表,有解决办法吗?

    1. 感谢大佬,已经换回7.5了。然后弱弱地问一个关于HOOK的问题,我想给一个PC端(il2cpp)卡牌游戏添加导入导出卡组的功能(Master Duel),我找到了添加卡牌的函数的地址,我尝试手动调用它。地址,参数,返回值都正确,而且CE动态调试的断点也显示代码被执行到了,但游戏还是马上崩溃了,跟踪到最后也没明白为什么崩溃,崩溃的地方也没用到我传进去的参数。但都是一些静态函数,即使跳过一个导致崩溃的call,后面依旧会崩溃,而且跳过的函数并不给崩溃的函数提供数据……
      最后我甚至保证了它自己调用,和我手动调用时的寄存器状态,栈全都一致,至少中途用到的数据一致,然而还是崩溃了。我调用最外层的添加卡牌按钮的点击事件,结果也是一样。然后我还尝试调用了一些别的函数,除了一个显示进度条的函数正常执行,其它无一例外的崩溃,这种问题大佬有什么思路吗?我能想到的问题就只有线程,因为我是把DLL注入以后,在DLL里调用的。

    2. 你可以参考我另外一篇讲Il2Cpp Api的文章,里面有提到了一些事前准备和函数调用的注意事项,比如你说到的线程,dll注入后你需要先调用il2cpp_thread_attach,当然可能也不一定是这个原因,这个只能你自己慢慢研究了

  6. 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介绍的常见问题里也没有

  7. 碰到硬茬了,奥比岛,电脑上用不了,用手机模块游戏直接闪退,也没有dump.cs

  8. 大佬 我是逆向小白 请问为啥脚本导入了ida with struct ida就会卡死 但是单纯的导入ida·py 就不会卡死

  9. 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!
    这正常吗? :?:

  10. 大佬打扰了 想导入script.json到ida当中 但是我的ida只能导入.idc或者.py后缀的文件 请问该怎么操作呢 :shock:

  11. 打扰大佬了,我是一名小白,使用AssetStudio没有拆出资源怀疑是加密了,成功用Il2CppDumper拆出DummyDll文件夹,但接下来不知道该如何提取spine,网上搜到的相关都是修改游戏数据,大佬是否能指点一下,或者指路现有的教程呢,十分感谢

    1. 我也是啊,顶一下你,希望作者回复一下,我也拆出dll文件,就是找不到解密ab包的逻辑,求指教

  12. 大佬,请问使用iL2CPP打包的U3D游戏,游戏的配置表一般在什么地方?是在\assets\bin\Data文件夹下面的ASSET文件里面,还是在SO文件里面呢?

  13. 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:
    怎么解决

  14. 新版(包括这里的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秒
    尤其是如果有很多同名方法的情况下搜索速度会更慢

  15. 最近试用一下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的地址

    1. 根据你贴的信息来看,我姑且认为你是想直接修改常量的值?
      但是常量在编译后,除了string类型的值转成stringliteral后还是存储在metadata中,其他值类型都是编译时就替换成了具体的值,修改metadata也没有任何效果,所以我认为输出常量的metadata offset没有任何意义。
      至于数组类型初始化所用到的值是会在dump.cs里输出metadata offset的。

    2. [FieldOffset(Offset = “0x0”)]
      public const string LEGACY_SUFFIX = “_legacy”;
      给个地址呗,有时可能也要改字符串;开两个工具看还有点麻烦

    3. 其他值类型都是编译时就替换成了具体的值,修改metadata也没有任何效果——那么想要改非string常量 该怎么做呢 :?:

    4. 常量只是在编译时期用的数据,string常量转成stringliteral后的metadata offset跟原本string常量的metadata offset是不一样的,你修改原本string常量值并不会改变已经编译成stringliteral的值。只是stringliteral依旧存储在metadata中,你搜索“_legacy”应该可以搜到两个一样的字符串。
      要修改非string的常量就直接修改il2cpp的代码。

  16. 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…

    求大佬解答

    1. 解决了吗,同问。看报错是global-metadata.dat不能正确识别,昨天以为是unity更新了文件结构,但是刚刚查了一下,unity最新的是2019年发布的,所以估计是Java层或者so层对这个文件加密了。 :???:

  17. 大佬,出现以下错误:

    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.

  18. 大佬我想知道手游的角色台词在哪个文件(global-metadata.dat里找不到 :!: ),怎么查看? :?:

  19. 为什么更改格式
    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

  20. Assembly-CSharp.dll没有加密也没有global-metadata.dat 怎么用这个软件dump看结构 类名 偏移呢?

    1. 么有VIP 没法下载. :cry:
      之前看过hearthbuddy在Windows上的操作. 是通过RemoteThread 注入 反编译指令完成的.
      Android这种dump也是利用android上的某些特性才对.

  21. 大佬本人萌新 用gg脱出il2cpp之后用dump不出来提示被保护之后要怎么操作?

  22. 大佬你在github上说被保护的so文件需要用gg从内存dump出来
    要怎么dump。。。。

  23. 使用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
    能提供一下解决思路么,感谢

    1. 重新尝试了下,可能跟我选择的情况有问题有关,我这次选择顺序是ida_with_struct.py ->script.json ->il2cpp.h这样的顺序
      之前是ida_with_struct.py ->stringliteral.json ->il2cpp.h 前者顺序是对的么?

    1. 大佬,新版本报错了
      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

  24. 大佬。用你的Il2CppDumper v6.1.0给il2cpp.so dump出来后,用ida反编译il2cpp.so
    完成后导入il2cpp.so的脚本,到这里就没有可以导入的脚本了,这个版本怎么导入呢,求大佬指教一下。

  25. 大佬你好,之前你所写的双生视界的Live2d提取方法能用到约战.精灵再临这款游戏里的看板提取吗, :!: 我怀疑它里面的physics3文件也经过了加密,可我不知道怎么解出来,游戏虽然不怎么样但它里面的高级看板还是挺精美的,求大佬解答

  26. 双生视界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.

  27. ghidra的脚本要怎么用?我下了ghidra最新版,但是不知道怎么导入这个脚本。直接导入的话,选择Language应该选哪个?

欢迎留言

4 + 1 =