【C#】Il2CppDumper v0.4

2017-04-11 10,232 ℃

程序已更新,有任何问题请去最新文章下留言

支持Unity3d 5.6的23版本

支持ELF x86和Mach-O 32bit, 64bit

添加parent,properties和attribute的导出,后面两个是在搞BanG Dream通讯的时候,为了能够直接还原出protobuf-net序列化用的类才加的

另外这次支持macho是打算试试ios上的修改,因为发现现在国内大部分游戏虽然安卓上做了很多防护但是ios上大多都是裸奔状态,所以干脆转去搞ios就可以省很多事啦~

目前有个小问题Mach-O 32bit下导出的函数地址都是+1的,不过我觉得并没有什么太大的影响所以就没修啦

源码

GitHub

下载地址
百度云

Il2CppDumper v6.1.0

距离上次在博客发布都要快一年了,这次因为又添加了一个新功能,所以在博客介绍一下。 ida脚本现在分为“ida.py”和“ida_with_struct.py”两个,使用“ida_with_s...

阅读全文

双生视界Live2D提取

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

阅读全文

UnityLive2DExtractor

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

阅读全文

37 条评论

  1. 大神請問您有沒有改過萬千風暴(OPTS)這款手遊?
    我想問問該如何調整寶箱掉落率,我有看過別人調整的型態是讓敵人掉寶箱,也就是遇到多少敵人即有機會掉多少寶箱。
    像這樣的改法HEX都會怎麼寫呢?

  2. public class MonsterAIPlugin : BaseActorPlugin // TypeDefIndex: 5763
    {
    // Fields
    public static AbilityState SHOULD_INTERRUPT_DEBUFF = 304; // 0x0
    protected BehaviorTree _aiTree; // 0x8
    protected MonsterActor _owner; // 0xc
    private LevelActor _levelActor; // 0x10

    问下,这种情况的地址是不是没法修改数据了

    1. Select Mode: 1. Manual 2.Auto
      CodeRegistration : 7e39b05e
      MetadataRegistration : 10221a010
      ERROR: Unable to process file automatically, try to use manual mode.
      在 Il2CppDumper.Program.Main(String[] args) 位置 C:\projects\il2cppdumper\Il2CppDumper\Program.cs:行号 76
      Press any key to exit…

      原因就是DecodeADRP哪里算出来的负值导致CodeRegistration uiAddr >= x.address && uiAddr <= x.end); <-这里因为CodeRegistration太小出错
      return uiAddr – (section.address – section.offset);
      }

    2. 刚打开IDA看了下
      var codeRegistration = decodeAdrp(subaddr, ReadBytes(4));时
      subaddr的指令并不是ADRP – –

    3. 看样子你是需要找到 adrp add adrp add 这样的 InitFunc_ 但是我发现你这个 InitFunc_也定位错了

    4. 原因找到啦
      private bool Searchv16_22()
      {
      var __mod_init_func = sections.First(x => x.section_name == “__mod_init_func”);
      var addrs = ReadClassArray(__mod_init_func.offset, (long)__mod_init_func.size / 8);
      foreach (var i in addrs)
      {
      if (i > 0)
      {
      Position = MapVATR(i); <-这里+16就对了

  3. ERROR: Metadata file supplied is not a supplied version[24]
    这个是怎么回事,大佬看看 :?:

  4. ERROR: Metadata file supplied is not valid metadata file.
    在 Il2CppDumper.MetadataGeneric..ctor(Stream stream) 位置 C:\projects\il2cppdumper\Il2CppDumper\MetadataGeneric.cs:行号 49
    在 Il2CppDumper.Program.Main(String[] args) 位置 C:\projects\il2cppdumper\Il2CppDumper\Program.cs:行号 31
    Press any key to exit…
    大佬这是什么原因呢?

    1. 我知道你们说的都是崩三,metadata文件需要修复,但是这个修复技术被大佬们捂得严严实实,完全没流出来,我也是一头雾水。

    2. 已破解,这个修复技术简简单单,dump出来后我很失落,我苦苦找的修复技术就这么简单,他们为什么要捂得这么严严实实!!!

      网上有一篇文章有相关说明……

  5. 想借地问问dalao,不是unity。。
    VTMB文件头的jpg图片。。是加密了吗。图片打不开,有办法解吗这个。。不知道怎么搜索了,搜索不出呜呜

    游戏里ccbi文件有很多,有乱码直接打开的话。。会有文本剧情吗这种文件

  6. 我也试着搞邦邦的通讯…
    aes的key和initialization vector都很好找…
    开发者妥妥的V家粉
    解出来确实一看就是protobuf…但是从dump里重建了.proto以后丢去deserialize一直会invalid wire type…
    不知道是我protobuf的版本猜的不对(我猜的是v3)还是解出来的binary还需要trim一下…
    不知道P大对此有没有什么成果…

    1. 邦邦用的是protobuf-net不是Google.Protobuf,不需要.proto文件,你只需要找到带ProtoContractAttrbuit的类并还原出properties上ProtoMemberAttribute的值就可以序列化了

    2. 试了一下确实是这样…非常感谢
      我下一步打算看一下API的交互流程然后看看能不能自己构造包去调用邦邦的API…其实主要是想看有没有那种查询任意用户的API…

  7. 大大,拜托解答一下
    02 D3 2A EB sub_F26C48这是1.1.1的地址
    86 D4 2A EB sub_F25CB8这是1.1.0的地址
    这个地址怎么算到的,你说要跳转的地址减去代码所在地址,可以帮我解答清楚一点吗,谢谢了

    1. 也许是不会提炼关键词?
      有时候很难让搜索引擎返回自己想要的东西╮(╯_╰)╭

    2. 只希望那游戏赶快隐藏掉il2cpp::vm::MetadataCache::Register吧,然后无数人只能懵逼了哈哈
      翻作者博客发现基本只要这个一没了就全懵逼了,不过对于知道怎么改的人来说有没这个完全无所谓只要不是有各种壳或者乱七八糟的验证 :mrgreen:

    3. 做影之诗60fps的时候……我就没找到这个函数啊,我还以为是我ida有问题呢 :twisted:
      原来是被隐藏了啊,看来还得再去找找看怎么回事……