我有一个来自我的网站的源代码,来自这个动态编译的源代码。我的exe是受保护的,它在C#上,但是当我使用内存转储器时,我可以轻松获取动态编译表单的源代码。有什么方法可以保护它吗?
P.S。 这不是重复的线程。我有一个很好的保护器,我的主程序受到很好的保护,所以使用dotPeek我只能获得这个动态编译的源代码,我在我的主程序中加载和编译,所以我的问题是如何保护它?我只能混淆形式来源?或者还有其他方法吗?
这是我编译表单的方式
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");
}
}
}
}
答案 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%的保护,但对于它以前的破解者来说要难得多。
所以现在我检查服务器上的信息,如果一切正常,服务器用受保护的dll字节响应然后我用Assemble.Load加载它们。一个主要程序只是一个代码程序集,只能与服务器通信并执行命令+它甚至不知道下一步是什么。