超简单的il2cpp游戏修改教程

2016-12-06 60,321 ℃

本文较旧,已不适合参考

锁链战记3.0版本也是换上了il2cpp,所以刚好就用它来写一篇简单的il2cpp修改教程
使用的是日服3.0.1版的锁链战记

首先要使用一款工具:Il2CppDumper,暑假pokemon go火起来的时候国外出现了一堆U3D的修改工具,这就是其中之一。这里推荐使用这个增加了交互功能的版本,可以省的自己重新编译。至于这工具具体功能我就懒得介绍了,反正往下看就知道啦~。

使用Il2CppDumper

从apk解压出libil2cpp.soglobal-metadata.dat,把libil2cpp.so丢进ida,等分析结束后,在左侧Functions window搜索il2cpp::vm::MetadataCache::Register
qq%e6%88%aa%e5%9b%be20161206174523
双击.plt那一行,在右侧可以看到一个引用,双击

qq%e6%88%aa%e5%9b%be20161206175012

可以看到这个

qq%e6%88%aa%e5%9b%be20161206175145
接下来把上面的Il2CppDumperlibil2cpp.soglobal-metadata.dat放在一起,双击运行,分别输入上图的头两个offset,就是174E8581739C10,等待几秒后就能生成dump.cs啦

修改

打开dump.cs看一眼,你大概就可以猜出Il2CppDumper的功能了。接下来就是找修改的位置,这里直接参考了我去年写的一篇文章,里面列举了非常基础的修改位置,可以看出修改攻击力的话就是修改CardInfo下的get_ATK函数的返回值,在dump.cs里搜索就能找到,右侧的值就是函数所在的位置啦
qq%e6%88%aa%e5%9b%be20161206180421

接下来就是修改so,因为这就是个返回攻击力int数值的函数,所以修改思路就是让它返回一个大值,这里il的代码还是有点参考价值的,arm下也就是两句话
mov r0,#0x19000  —>  ldc.i4 0x19000
bx lr                       —>  ret
注意arm里不是所有数都可以是立即数的,具体的就自行百度啦
接下来就把这两句话转换成HEX,用这个在线转换网站,输入上面两段代码,在ida里明显可以看出代码的间隔是4字节,也就是32位,所以就选x32,点击Convert后就可以得到HEX
190AA0E3
1EFF2FE1
接下来就在16进制编辑器里,跳转到偏移0x91ae50,把上面的HEX写进去就修改成功啦~

关于修改锁链战记最后一击为毒伤

日服 2.5.2 上期抽托托莉抽到没石头了,看下了成就还有个最后一击毒伤没做,于是今天就试着改了一下,没想到一下就成功了233 因为sega的优良传统,直...

阅读全文

关于锁链战记的一回合过关

日服 2.5.1 在其他地方已经发过了,这次顺带丢到博客上 我研究过的1w过关有两种方式,其中一种是一开始就是最后一wave,但是因为超过10wave的本从最后...

阅读全文

解密锁链战记资源的小工具

关键代码在上一篇文章 锁链战记资源提取 运行方法 需要.Net 4.0 双击运行,会解密所在文件夹下的所有“.bdl”,“.scr”文件(包括子文件夹) bdl解密后为 原文件名...

阅读全文

52 条评论

  1. 请问 我打开ida后会发现仅限ida界面半小时过后仍然非常非常卡 是因为处于解析中吗?通常ida解析要超过半小时之类的吗?

    1. 请问
      1.解析完成时ida是不会卡的吗?
      2.我的电脑是4G运存的国产cpu 解析是否要超过半小时?
      谢谢!

  2. 版主您好!想請問一下如果找不到il2cpp::vm::MetadataCache::Register 是代表什麼?
    我想修改的是女東京食屍鬼 :Re Invoke 可以幫忙看一下?

  3. 分析完后,并没有找到Functions window这个窗口..应该怎么弄。。

  4. 您好,我看了你的教程之后,想修改一下崩坏3的il2cpp,我找到了il2cpp::vm::MetadataCache::Register,在plt里面并没有找到引用的地方,所以我想请问一下如何找到那个引用

  5. 膜大佬,顺便问问,我这有个游戏,地址对于了一段挺长的函数,但是ida没识别出来这是段函数,有没有办法知道这段函数的长度好让我Phrase出来一个函数反编译?

  6. 你好,我是在网上找的时候发现这个文章的。我是想修改崩2来着。但是把文件扔进去之后,加载完,很多次只有一次能够搜到il2cpp::vm::MetadataCache::Register,而且就那一次搜到之后,plt里也找不到引用。。。。。。我问了一些会修改的人,他们不愿意透露太多给我,只说要搜il2cpp::vm::MetadataCache::Register。所以你知道为什么会有这种情况吗?谢谢了

    1. 额,后来我搜到了,就是最尴尬的是好像他们给加密了,所以现在我也没有什么办法了。尤其是我还不怎么懂这方面的。。。。。。知识

  7. 我在修改天華百剣 斬 【OBT】 这个的时候,发现攻击力那里是浮点数:
    public float get_Atk();
    按照你的教程弄回去后,伤害固定为1,是否与浮点数有关?

  8. P大,问一下你有研究过少女前线的修改么?很早的版本可以直接修改Assembly-CSharp.dll,自己试着改了改,后来的版本大概是加密了,解析不了dll文件。想问一下这时候该怎么解析加密的dll文件?非常感谢

    1. 一般是在libmono里面 有个 mono_image_open_from_data_width_nam这个开头的函数,可以看到解密方法,如果这里面没有 一般是hook

    1. This is not an error, just warning
      Only the program used by the compiler is relatively new, your old version of the IDA doesn’t recognize something

    2. now ida 6.8 pro, same apk

      for example

      tribal mania game no error good decompile but grow castle this error :/

  9. Howdy, i read your blog from time to time and i
    own a similar one and i was just curious if you get a
    lot of spam comments? If so how do you protect against it,
    any plugin or anything you can recommend? I get so much lately it’s driving me insane so any
    support is very much appreciated.

  10. 請問3.0.2版的打不痛我還能用嗎?
    我點開進用程式就閃退,有安裝幸運破解器
    但還是無法使用
    目前用電腦模擬,BlusStacks
    不知道哪個環節出了問題
    想要打天魔XDD
    可以請大大教學,或是能發個傻瓜包給我嗎?

  11. 版主您好,不知道你對鎖鍊戰記的網路傳輸封包是否有研究?

    小弟玩的是台版,本來台版在密路傳輸過程中都是沒有加密的明文,可以簡單透過wireshark或是fiddler之類的debug proxy瞭解到封包內容。

    但是從2.7.2之後,response給加密了起來,因為日版是早已加密過的了,不知道版主是否有經驗能從反組譯的apk當中找到加解密的function可以分享一下

  12. 又再來打擾P大你.. 302的地址真的不知怎樣找.. 雖然已經跟據你提供的get_ATK地址修改好了.. 但還是不會找地址.. 希望P大能再分享多一點經驗.. 謝謝~

  13. Perfare大大, 最新版 3.0.2用 IDA Pro打開 libil2cpp.so 時會出現

    This file contains non standard usage of relocations.
    Please send the input file to

    按OK進去後, 也搜尋不到 “il2cpp::vm::MetadataCache::Register”……

  14. Il2CppDumper.exe没法运行,请问至少要安装哪个版本以上的运行环境?

  15. 感激P大的教程..
    有一點想P大具體說明一下: 就是說跟以往要修改不用mana珠就能發動必殺技的這類修改是不是不可行? (要把變量 增加或縮減 一個整數或浮動數值)

    1. 首先你要找到变量的位置,然后具体问题具体分析,就会有很多种修改方式,比如
      mov r0,r1的时候改成add r0,r1,#1
      或者改为B到一个没用到的地方,add完以后再b回来
      或者还有很多修改的方法我这里就不列举了

    2. 謝謝回覆.. 了解多了..
      我怕的就是把某段刪減後, 整體位置都會亂掉..
      例:
      A0 mov r4,r0
      A4 mov r6,r1
      A8 mov r1,#0x123
      AC …
      … …
      把A4 mov r6,r1 刪除後, 是不是要把往後的地址全都要改?

    3. 還是不明白.. 用mov r0,r0 只把要刪掉的那一句替換就可以?
      因為我查看P大修改的3.0.0 版, 發現是整段函數只有兩句.. 但原本是有8句.. 教程中說到只替換兩句就完成.. 這點一直想不明白.. 是要把後面的HEX都置零?

    4. 报告!报告! 终於成功修改了.. 虽然也就是跟P大修改相同的地方而已.. 但已经有突破点..

      应该要花更多时间才可以修改无限技能, 快速超必杀技, 10倍速, 完成宝箱等, 较复杂的修改..

      再次谢谢P大的教程和回覆我的愚问~ 感激..