盘点下.Net程序破解/反编译的几种方法

前言

.Net作为一个托管的程序,它的破解/反编译有几种方法呢?本篇来盘点下。

概括

1.MSIL的破解
Dnspy/ILspy/Reflector/DotPeek
这种是最常见的,把托管DLL拖入进去,然后查看其源码或者MSIL,进行修改。也是比较简单的一种,不过如果对程序进行了加密,则反编译出来大量无用的混淆的代码,这三个里面Reflector收费,前两个免费。低层次的破解/反编译。.

2.Roslyn/CLR/JIT破解
Roslyn这种是在生成托管DLL之前,干涉托管DLL的生成过程,通过篡改了的托管DLL,来生成篡改的机器码。因为机器码是根据托管DLL而来。而修改CLR的内存模型,内存布局可以更改机器码生成的结果,JIT则是根据MSIL来生成机器码,修改JIT的表象生成也即是IR也可以修改或者破解.Net程序生成的结果。

3.Obj/Exe破解
这种适用于,AOT的本地机器码,本地机器码是预编译。它分为两步,目标文件和可执行文件。目标文件可以通过对照16进制编辑器和dumpbin tools进行修改和破解,而Exe则可以直接修改PE文件,来篡改结果。

以上三种方式,基本上可以破解/反编译的方方面面。只做技术研究,其它用途本人概不负责。