首页 > Unity3D频道 > 【Unity3D研究院之游戏开发】 > Unity3D研究院之在把代码混淆过的游戏返混淆回来(七十七)
2014
08-01

Unity3D研究院之在把代码混淆过的游戏返混淆回来(七十七)

最近一直在找如何在MAC上混淆Android的DLL,至今没能找到合适的,有大神知道记得告诉我喔。今天群里有人说了一个混淆代码和返混淆代码的工具de4dot ,不查不知道一查吓一跳。这玩意可以把别人混淆过的代码反混淆回来。

这个工程是开源的 https://github.com/0xd4d/de4dot  找一台Windows电脑,下载后在VS上面打开它,另外它不能直接编译,需要在引入一个库文件。为了方便大家我把能正常编译的工程提供出来。

下载地址: http://pan.baidu.com/s/1ntjw3mL

如下图所示,打开工程后在VS里面快捷键F6,编译完成后会生成出来de4dot.exe 。那么我们返混淆就是通过这个exe来将unity生成的dll返混淆回来。

Unity3D研究院之在把代码混淆过的游戏返混淆回来(七十七) - 雨松MOMO程序研究院 - 1

 

经过混淆的代码反编译后。

Unity3D研究院之在把代码混淆过的游戏返混淆回来(七十七) - 雨松MOMO程序研究院 - 2

 

返混淆以后,如下图所示,属性名子就出来了。但是方法名就回不来了,都是按数字一次加上去,不过这些总比方括号好看多了。而且我看了一下内容,有些方法内容奇葩的地方也都解的至少能看。

Unity3D研究院之在把代码混淆过的游戏返混淆回来(七十七) - 雨松MOMO程序研究院 - 3

在Windows里面的cmd里面输入

de4dot.exe test.dll -p un

Unity3D研究院之在把代码混淆过的游戏返混淆回来(七十七) - 雨松MOMO程序研究院 - 4

 

另外你随便下载一个用Unity做的安卓游戏,然后把apk解开把里面的Assembly-CSharp.dll找出来,它的代码都在里面。如果它的代码没有做混淆工作,那么可以直接反编译出来。 如下图所示,返混淆会在原始dll的目录下生成一个后缀-cleaned.dll的文件。然后用反编译工具打开它即可。

Unity3D研究院之在把代码混淆过的游戏返混淆回来(七十七) - 雨松MOMO程序研究院 - 5

 

de4dot 看起来应该是非常强大,他支持返混淆这么多工具。。我就不一个一个试了,希望阅读本文的你帮我做一下测试,看看是不是所有混效果的Unity游戏都可以解开。

  • Agile.NET (aka CliSecure)
  • Babel.NET
  • CodeFort
  • CodeVeil
  • CodeWall
  • CryptoObfuscator
  • DeepSea Obfuscator
  • Dotfuscator
  • .NET Reactor
  • Eazfuscator.NET
  • Goliath.NET
  • ILProtector
  • MaxtoCode
  • MPRESS
  • Rummage
  • Skater.NET
  • SmartAssembly
  • Spices.Net
  • Xenocode

de4dot不仅仅可以返混淆,它也可以自身去混淆。。大家可以看看它的gitHub上的介绍,哎 又是一个必须在Windwos上完成的操作。。 今天把研究成果发出来,希望大家多多测试一下,看看能不能把所有混淆过的Unity游戏返混淆回来。 另外有什么最近进展大家一定要告诉我呀。。嘿嘿嘿嘿。

最后编辑:
作者:雨松MOMO
专注移动互联网,Unity3D游戏开发
捐 赠写博客不易,如果您想请我喝一杯星巴克的话?就进来看吧!

Unity3D研究院之在把代码混淆过的游戏返混淆回来(七十七)》有 25 条评论

  1. 从小做个痞子 说:

    大佬您好,我今天找了一下午反混淆的工具,没找到适合Mac使用的。请问您这边有适合Mac使用的工具吗

  2. ren 说:

    难道是asm 写的dll?上面的那个工具可以反混淆asm 的dll吗?

  3. angle 说:

    手动重命名的方试混淆 可以还原吗?
    如:
    int i=10;//====>
    int ded4a18c3ad220f4c883cbaf97ae69c83=10;

  4. 没做过混沌 难道是把编译好的APK 用这个.EXE来混沌?

  5. hiyforever 说:

    方法名类似c_iterval,变量是f$__this这样的,不做任何修改直接编译替换回去就会闪退,de4dot反混淆失败,是不是要自己一个个改正变量名? Unity3D研究院之在把代码混淆过的游戏返混淆回来(七十七) - 雨松MOMO程序研究院 - 1

  6. 常文道 说:

    报错了!报错了!“System.IO.FileNotFoundException”类型的未经处理的异常在 未知模块。 中发生其他信息: 未能加载文件或程序集“de4dot.cui, Version=3.1.41592.3405, Culture=neutral, PublicKeyToken=d3f3ed1e47f67fc6”或它的某一个依赖项。系统找不到指定的文件。

  7. 省事 说:

    de4dot可以用于混淆代码?没看见有这个功能啊?怎么用呢?

  8. Li_hero 说:

    学习~学习!~~~只是感脚以后我们的游戏别折腾了~反正能反编译~~还是提高游戏美术品质吧!~灵魂的东西反编译不了~ Unity3D研究院之在把代码混淆过的游戏返混淆回来(七十七) - 雨松MOMO程序研究院 - 1

  9. 松哥,一般那些用于平滑的函数(比如插值)是不是都写在fixedUpdate或者lateUpdate里面啊? Unity3D研究院之在把代码混淆过的游戏返混淆回来(七十七) - 雨松MOMO程序研究院 - 1

  10. Unity渣渣 说:

    MOMO大大,你是用什么混淆的啊?我混淆后,代码反编译出来还是一堆数字和字母,不是你的括号啥的。还有就是,Unity的函数如Awake,Start,以及一些public提供给外面的接口是不能混淆的,但是我看你贴出来的代码,都是被混淆了。用de4dot 混淆,再用de4dot反编译,100%还原。

  11. seasa00p 说:

    崩毁学院2反混淆成功 Unity3D研究院之在把代码混淆过的游戏返混淆回来(七十七) - 雨松MOMO程序研究院 - 1

留下一个回复

你的email不会被公开。