加密.net程序集/反调试技术

时间:2016-09-29 11:31:04

标签: c# .net debugging encryption obfuscation

我正在寻找一种加密.net程序集(exe,dll)或应用反调试技术的方法。我知道程序集不包含本机字节代码,但CIL代码可以很容易地反编译。老实说,我不得不说我是.NET的新手。我来自网络开发者背景,C#只是一个爱好,所以我不需要加密我的可执行文件,但我想知道像dotfuscator这样的解决方案是如何工作的。
我也知道文件必须在内存中解密才能执行它们,但这与包含本机代码的程序集相同。
我不想要的是讨论加密.NET可执行文件是否有用。我只对应用加密或反调试技术(例如控制流混淆)的理论方法感兴趣。 正如您从下面的示例和相关问题中可以看到的,我的知识远远低于ZERO。我是典型的应用程序编码员,如果代码编译并运行,我很高兴,但我想深入挖掘。

using System;
namespace HelloWorld
{
    class Hello 
    {
        static void Main() 
        {
            if(1 < 2) 
            {
                if(3 == 3)
                {
                    if ("a" != "b")
                    {
                        if(0 != 1)
                        {
                            Console.WriteLine("Hello World!");
                        }
                    }
                }
            }
            Console.ReadLine();
        }
    }
}

无用条件是否可以标记为控制流混淆?
请分享您的建议,任何可能感兴趣的链接或预订建议。

1 个答案:

答案 0 :(得分:1)

有一些商业工具可以帮助您对代码进行模糊处理,例如Dotfuscator。另一种选择是使用ngen将MSIL编译为本机代码。

我认为并希望在发布版本时,您的自定义“控制流混淆”会被优化掉。