如何保护动态编译的代码

时间:2016-05-11 22:05:29

标签: c# forms winforms dynamic compilation

我有一个来自我的网站的源代码,来自这个动态编译的源代码。我的exe是受保护的,它在C#上,但是当我使用内存转储器时,我可以轻松获取动态编译表单的源代码。有什么方法可以保护它吗?

P.S。 这不是重复的线程。我有一个很好的保护器,我的主程序受到很好的保护,所以使用dotPeek我只能获得这个动态编译的源代码,我在我的主程序中加载和编译,所以我的问题是如何保护它?我只能混淆形式来源?或者还有其他方法吗?

enter image description here

这是我编译表单的方式

using System;
using System.CodeDom.Compiler;
using System.IO;
using Microsoft.CSharp;

namespace myForm
{
    class Program
    {
        static void Main(string[] args)
        {
            using (var foo = new CSharpCodeProvider())
            {
                var parameters = new CompilerParameters
                {
                    GenerateInMemory = true,
                    GenerateExecutable = false
                };

                parameters.ReferencedAssemblies.Add("System.dll");
                parameters.ReferencedAssemblies.Add("System.Core.dll");
                parameters.ReferencedAssemblies.Add("System.Drawing.dll");
                parameters.ReferencedAssemblies.Add("System.Windows.Forms.dll");

                var source = File.ReadAllText("form.txt");
                CompilerResults results = foo.CompileAssemblyFromSource(parameters, source);
                Type type = results.CompiledAssembly.GetType("radarHack.mainForm");
            }
        }
    }
}

1 个答案:

答案 0 :(得分:0)

Dunno为什么你们这些人减去了我的问题。我找到了一个方法。我用我的源代码制作了一个dll并保护它。现在我可以将它与Assembly.Load一起使用。

<Stock>
   <Vehicle id="123456">
      <Images>
         <Image Id="222222" Url="http://somewhere.com/GetImage.aspx?ImageId=222222" LastModified="2016-05-13 09:00:00"/>
         <Image Id="333333" Url="http://somewhere.com/GetImage.aspx?ImageId=333333" LastModified="2016-05-12 13:09:00"/>
      </Images>
   </Vehicle>
</Stock>

它得到了更好的保护,我知道使用C#不可能实现100%的保护,但对于它以前的破解者来说要难得多。

enter image description here

所以现在我检查服务器上的信息,如果一切正常,服务器用受保护的dll字节响应然后我用Assemble.Load加载它们。一个主要程序只是一个代码程序集,只能与服务器通信并执行命令+它甚至不知道下一步是什么。