C# 如何保护extarcted嵌入式资源?
因此,我正在进行一个项目,需要构建一个登录应用程序,授予对嵌入式可执行资源的访问权。我一直在寻找,但没有找到一种方法。作为一个gatter,我不能不提取它就直接执行。所以我必须有一种方法来锁定可执行文件,就像密码一样,这样,只有我的程序才能访问它。我没有可执行文件的源代码。这可能吗?谢谢,因为另一个应用程序是.net应用程序(您在评论中说,当您执行C# 如何保护extarcted嵌入式资源?,c#,C#,因此,我正在进行一个项目,需要构建一个登录应用程序,授予对嵌入式可执行资源的访问权。我一直在寻找,但没有找到一种方法。作为一个gatter,我不能不提取它就直接执行。所以我必须有一种方法来锁定可执行文件,就像密码一样,这样,只有我的程序才能访问它。我没有可执行文件的源代码。这可能吗?谢谢,因为另一个应用程序是.net应用程序(您在评论中说,当您执行程序集.LoadFile时,它没有抛出EXEC选项),您可以将exe作为字节数组加载到AppDomain中,然后从内存中运行程序集 static vo
程序集.LoadFile
时,它没有抛出EXEC选项),您可以将exe作为字节数组加载到AppDomain中,然后从内存中运行程序集
static void Main(string[] args)
{
byte[] data = SomeFunctionThatRetrunsTheBytesOfTheExeResource()
var assembly = Assembly.Load(data);
assembly.EntryPoint.Invoke(null, null);
}
这将启动您作为嵌入式资源使用的应用程序。请注意,Invoke(null,null)
函数将阻塞,直到另一个程序从其主方法返回
这将允许您运行exe,而不将其作为驱动器上自己的文件存在
注意:这将使新应用程序与应用程序共享相同的内存空间,因此它可以访问静态变量和类。您可能可以创建一个新的AppDomain并将其加载到那里(但当我试图编写此文件时,无法在第二个AppDomain中运行)
第二个注意事项:如果不通过代码模糊器运行你的应用程序,那么使用任何免费的.net反编译器从你的程序中提取exe将非常容易。请定义嵌入的可执行资源。请注意,许多反病毒应用程序都会对你的应用程序发出恐怖的尖叫。你想改变其他人的可执行文件,没有源代码?您可以学习组装,分解它,并在密码检查或命令行检查中找到一个位置进行修补。否则,没有。与应用程序的所有者讨论如何使您成为自定义生成。此其他应用程序是.NET应用程序还是本机应用程序?它是普通的.exe文件。应用程序的全部目的就是保护它。