防止Codedom构建被反编译

Met*_*tab -3 c# codedom

只是询问加密构建.现在排序,谢谢所有<3

Use*_*678 7

托管程序集相对容易进行逆向工程,主要是因为编译器省略的IL代码已经非常易读,但您可以在其他地方阅读更多相关信息.

防止或者试图阻止某人对托管程序集进行逆向工程的常用方法是混淆.混淆器将从程序集中加载有意义的数据,然后使用各种技术(例如加扰标识符和用冗长的算术函数替换字符串文字)使其难以读取.

我遇到的最好的混淆器,我认为它是最好的,因为我看到逆向工程师抱怨最多的是混淆器,是Confuser(开源).

Confuser UI基于一个可插拔的核心API,您可以从应用程序中引用该API以混淆程序省略的程序集.我想你可以复制和归功于一些代码,以便在内存中混淆你的代码串,但据我所知你需要解析代码,以便你可以识别成员,例如Mono.Cecil (也是开放的)源代码并由confuser使用)将能够使用程序集元数据识别代码中的成员等.

混淆是可以的,如果混淆器是最新的,可能会保护你的程序集免受新手或懒惰的逆向工程师的攻击.像de4dot这样的开源工具可以轻松改变流行混淆器的效果.

但请记住"通过混淆保护根本不是保护"

更新

为了在构建程序集之前对代码进行模糊处理,您将需要一个解析器,它将向您显示代码中的所有标识符和表达式.从那里你可以工作为标识符生成随机无意义的名称,并修改表达式尽可能少的意义.

例如Console.Writeline("Hi")变成:

Console.WriteLine("{0}{1}", (char) (36 << 1), (char) ((26 << 2) + 1));

这很难读.我在现场做了这个,显然不符合任何算法,因为位移可能会丢失重要的位.但就像我之前说的那样,请查看其他一些可以复制和信用的算法来源.