Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我应该担心我的软件被反编译吗?_C#_C++_Command Line Interface_Decompiler - Fatal编程技术网

C# 我应该担心我的软件被反编译吗?

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#中实现了这一点。但是

我正在尝试创建一个软件,允许用户登录并传输用于注入的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#中实现了这一点。但是,您可以轻松地反编译程序,并使其在计算机上的特定位置创建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以防被看到的目的是什么?如果您想阻止用户看到它,那么正如前面提到的,没有什么可以真正做到这一点。如果你只是想阻止竞争对手使用你的动态链接库,那么就不要考虑技术限制,而是考虑法律限制。