我有一个WPF应用程序,其输出是a.exe。此应用程序依赖于外部b.dll(我可以访问其源代码)。
要求:
输出应该只是应该包含dll的a.exe。我不想为我的用户提供单独的dll(如果可以避免的话)
我应该能够混淆代码。 (我不希望任何人能够修改它。)
尝试了方法:
我在a.exe中嵌入了b.dll,它有效。但我无法对exe进行模糊处理,因为它发出错误,无法找到b.dll。
我对a.exe和b.dll进行了模糊处理,但它无效。它无法找到b.dll。
替代方法:
有没有办法可以将b.dll的云杉代码添加到我的项目中,并将dll编译为exe本身而不是单独的dll。
是否可以使这种替代方法有效或有其他方法吗?
如果没有任何作用,我知道我可以单独编译a和b,混淆a并将b作为单独的文件提供(我正在努力避免)。
为格式化问题道歉,如果有的话,我正在使用Android应用程序。如果您需要任何细节,请告诉我。
答案 0 :(得分:1)
我过去在Eazfuscator.Net取得了巨大的成功。
http://www.gapotchenko.com/eazfuscator.net
要从命令行运行它,请输入以下命令:
Eazfuscator.Net.exe -n a.exe b.dll
它会将两个文件合并为一个exe文件。主程序将能够访问dll。
您甚至可以设置Visual Studio,以便上面的命令行作为后编译事件运行。
答案 1 :(得分:0)
程序集嵌入可能看起来很混乱,所以这里通常是这样做的:
AppDomain.AssemblyResolve
事件安装处理程序。那就是它。一个好的混淆工具可以很容易地实现这一点。我不明白为什么在使用WPF应用程序的情况下它不起作用。如果有问题,我建议您联系产品支持。
另一个选项是程序集合并。与嵌入式不同,合并的程序集成为目标程序集代码不可分割的一部分。因此,与嵌入相比,汇编合并通常有助于实现更好的混淆覆盖和应用程序启动时间。虽然它看起来可能是更好的选择,但合并有时可能会破坏应用程序的功能。