[英]Approach to obfuscate an embedded dll in a WPF application
我有一个WPF应用程序,其输出是a.exe。 此应用程序依赖于外部b.dll(我可以访问其源代码)。
要求:
输出应仅为a.exe,其中应包含dll。 我不想为用户提供单独的dll(如果可以避免的话)
我应该能够混淆代码。 (我不希望任何人都能对其进行修改)。
尝试的方法:
我将b.dll嵌入a.exe内,它起作用了。 但是我无法对exe进行混淆处理,因为它给出了无法找到b.dll的错误。
我混淆了a.exe和b.dll,但是没有用。 无法找到b.dll。
替代方法:
有什么方法可以将b.dll的云杉代码添加到我的项目中,并且可以将dll编译为exe本身,而不是单独的dll。
是否可以使这种替代方法起作用,或者还有其他方法吗?
如果没有任何效果,我知道我可以分别编译a和b,混淆a并将b作为单独的文件提供(我想避免的事情)。
对于格式问题,我很抱歉,我正在使用android应用。 让我知道您是否需要任何详细信息。
过去,我在Eazfuscator.Net上取得了巨大的成功。
http://www.gapotchenko.com/eazfuscator.net
要从命令行运行它,请输入以下命令:
Eazfuscator.Net.exe -n a.exe b.dll
它将两个文件合并为一个exe。 主程序将能够访问dll。
您甚至可以设置Visual Studio,以使上面的命令行作为后编译事件运行。
程序集嵌入可能看起来很混乱,因此通常是这样进行的:
AppDomain.AssemblyResolve
事件安装一个处理程序,该事件在CLR无法自动解析程序集时引发。 而已。 一个好的混淆工具可以很容易地做到这一点。 我不明白为什么在WPF应用程序中它不起作用。 如果有问题,建议您与产品支持联系。
另一种选择是程序集合并 。 与嵌入式程序不同,合并后的程序集成为目标程序集代码不可分割的一部分。 因此,与嵌入相比,程序集合并通常有助于实现更好的混淆范围和应用程序启动时间。 尽管看起来更好,但是合并有时可能会破坏应用程序的功能。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.