开始码字后突然不懂标题应该怎么取,原本想像隔壁一样来个什么“关于Unity的xxx保护(1)”,不过目前只打算写写这一个例子,估摸着也没有下篇,还是别挖坑了。

至于为什么写这个东西呢?最近突然遇到好多游戏用上了某些加固,里面都用上了这个东西,但是这玩意对我来说其实已经算是“玩剩下”的东西了,最早遇到的时候是2016年在androidrepublic的一款游戏上,第一次遇到的时候还感觉非常有意思,但是在恶补了.net的PE结构后顿时索然无趣,因为,这玩意的强度实在太弱了,以至于我当年写的这东西的加密解密程序现在都可以直接用

使用工具:
010 Editor 或其他16进制编辑器
CFF Explorer
dnSpy

以下按照修复顺序介绍可破坏的点

0x1 Nt Header – Signature

固定偏移:0x80-0x83
原始值:0x50 0x45 0x00 0x00
效果:不被识别为PE文件

0x2 Optional Header – NumberOfRvaAndSizes


固定值:0x10
效果:使程序无法正常识别.Net头

0x3 MetaData Header – NumberOfStreams


固定值:正常情况下为0x5,某些混淆程序会影响该值
效果:如图

0x4 Storage Stream #~ – Tables Stream – m_rows

所有元素长度为4字节,前两个字节可编辑
如图,删除红框内数据即可正常反编译

0x0 题外话 关于Unity下的DLL应该如何有效的保护

首先,把il转为本地代码(il2cpp)来避免il的易读性和易修改性肯定是最佳的选择,而且转换后能玩的花样也多了起来。如果由于某些原因无法使用il2cpp,混淆也是首选。Unity下因为环境和MonoBehaviour等等的限制,混淆看起来强度不强,其实最主要的是避免使用主流的混淆软件,因为网上大多都有解决方案,把ConfuserEx的源码拖出来改改能达到极好的效果,其中最主要的就是流程混淆和引用代理了,能不能让别人看见流程图就丢回收站就靠它们了。

混淆之后才再考虑加密,由于Unity需要DLL常驻内存读取代码,所以大多数保护直接dump就能搞定,再复杂点根据mono的读取流程分开解密,但是本身mono也是开源的,可以通过对比源码找到相关函数,而且大部分加固使用的都是Hook的形式进行加密,导致扫一遍text段就能很容易找到被Hook的点。其他还有一些奇技淫巧向的保护方式,比如替换opcode,重新定义PE文件结构之类的,这类特征比较明显,照着源码也还是能找到位置的,就是很费时间,总的来说加密在保护代码上并没有混淆有用。

以上只是关于代码的保护,也可以从一定程度上使游戏不被修改,但是真正想不被修改的话,还是需要其他方面的东西。

【2018-10-27】碧蓝航线Live2D提取

2018-10-27 v1.2 完善4种Segment 2018-10-23 v1.1 修复易拉罐等SteppedSegment问题 正文 自从看到敦刻尔克的live2d后就决定要提取一发来射爆,经过简单的分析...

阅读全文

Unity下的注入与修改

已经有很长一段时间没写过游戏修改的文章了,一个原因是现在越来越多的手游厂商都开始给游戏上各种各样的保护,以前简单的直接修改dll或者直接修改so早已经不...

阅读全文

少女前线Live2D解密

上周在CP22看到这个游戏两周年了,打算回坑玩一阵,不过上一个号是买的初始号账号密码都忘记了,所以只好开了个新号。然后新皮肤倒是抽到了,不过枪都没有怎...

阅读全文

25 条评论

  1. 大神,用你的方法类名函数名反编译出来了,但是方法里面的代码不行,能给我一个提示吗?

  2. 谢谢楼主的分享,我成功的反编译出一部分代码,但是函数代码没有反编译成功,能教一下我吗?

  3. 直接检测程序完整性修改就没辙了
    某个麻辣土豆(MLTD)动用nProtect APPGuard来搞…
    :twisted:

  4. 0x4 Storage Stream #~ – Tables Stream – m_rows 在cff里找不到啊,是否需要特殊设置? P大能否发个图给我,多谢!

        1. 3月25日更新之后fgo_1.20.0_3_1_bili_253531.apk,失效了,我试着还原,只能还原目录结构,里面代码竟然无法还原,不知道大大有没有办法搞定

  5. 大佬,幻想神域手游能弄么?解压后,看到的资源都是.png格式,还有什么MD5。美术一个,对程序搞不懂···网上查了一堆加密,都没有什么教程,搞得头晕。。 :???: :???:

  6. 这种不仅破坏了而且还自定义了吧 大佬你看这个图,右边是原版,左边是被破坏的https://i.loli.net/2018/01/25/5a69fd7b80205.png

  7. 正好最近遇到了这种的加密,androidrepublic。platinmods 。mgame,现在都是这样而且后两者都有对游戏进行了可视化菜单的修改开关。也是最近国外比较流行的形式了

      1. 采用u3d自身的样式出来的菜单很丑且不易操控,自定义的多功能菜单platinmods 是做的非常好看且实用的了。

欢迎留言

2 + 0 =