C# 我应该担心我的软件被反编译吗?
我正在尝试创建一个软件,允许用户登录并传输用于注入的dll的字节[]。比如说C# 我应该担心我的软件被反编译吗?,c#,c++,command-line-interface,decompiler,C#,C++,Command Line Interface,Decompiler,我正在尝试创建一个软件,允许用户登录并传输用于注入的dll的字节[]。比如说 public static byte[] getDLL() { using (WebClient wc = new WebClient()) { Uri url = new Uri("http://mysite/dll.dll"); return wc.DownloadData(url); } } 我使用visual studio成功地在C#中实现了这一点。但是
public static byte[] getDLL()
{
using (WebClient wc = new WebClient())
{
Uri url = new Uri("http://mysite/dll.dll");
return wc.DownloadData(url);
}
}
我使用visual studio成功地在C#中实现了这一点。但是,您可以轻松地反编译程序,并使其在计算机上的特定位置创建dll,从而泄漏它。我几乎无法阻止这一切
我会更好地使用一种更难分解的语言,比如说C++或C,或者我只是会遇到同样的问题,我用什么语言?你的问题的第一段我不是很清楚,但这里有一些想法给你 如果局外人不能使用生成的代码劫持程序集,那么简单的反编译不是问题 据我所知,有很多工具可以“合理地反编译”或浏览.NET程序集内容。 如果使用C++或C,则有解压缩程序,源代码是由它们生成的,不准确,需要大量的手工工作。 其次,如果你使用了C语言或C++语言,那么这些漏洞就有很多。您必须使用所有良好的实践来避免此类问题 有避免反编译的工具。你可以用谷歌搜索模糊器。一些著名的是Dotfuscator,安全团队 您还可以考虑项目架构的变化。例如在主EXE中包含DLL代码等
您还可以使用密钥生成机制来验证DLL。在加载DLL EXE调用DLL的普通函数后,得到<代码>一个时间键<代码>,验证。 < P>不能阻止反编译任何东西,既不C++也不C++或其他任何东西。 像C++这样的语言需要比C语言更多的手工操作,而混淆器会让代码变得更难理解,但是所有的东西都会减慢代码的速度,而不是阻止它。 (像DLL和加密之类的东西根本无助于保护代码)
如果某个程序用户看到完整代码时出现问题,则说明您做错了。密码等任何秘密都不属于用户获得的文件,而是在您控制的某些服务器上,用户只能通过网络连接等方式访问。如果用户有足够的知识和动机,则用户可以对用户机器上运行的任何软件进行反编译/黑客攻击等。你可以让它变得更难,但不是不可能。你说的动态链接库的一个字节[]是什么意思?加载DLL并从中获取字节数组?您担心有人用返回不同字节的不同DLL替换DLL?也许您正在寻找的解决方案是代码签名,这样您就知道加载的DLL是您的。我想象的另一个潜在含义是,您关心的是其他人打开您的DLL并在不通过前端应用程序的情况下获取数据。解决这个问题的方法是,在应用程序和DLL之间通过不重复的协商进行握手,再加上模糊处理。DRM问题您好harningt谢谢您的回复。我用一段代码更新了这篇文章,希望能说明我的意思。我正在使用下载的dll中的字节[]注入进程。隐藏dll以防被看到的目的是什么?如果您想阻止用户看到它,那么正如前面提到的,没有什么可以真正做到这一点。如果你只是想阻止竞争对手使用你的动态链接库,那么就不要考虑技术限制,而是考虑法律限制。