繁体   English   中英

在WPF应用程序中混淆嵌入式dll的方法

[英]Approach to obfuscate an embedded dll in a WPF application

我有一个WPF应用程序,其输出是a.exe。 此应用程序依赖于外部b.dll(我可以访问其源代码)。

要求:

  1. 输出应仅为a.exe,其中应包含dll。 我不想为用户提供单独的dll(如果可以避免的话)

  2. 我应该能够混淆代码。 (我不希望任何人都能对其进行修改)。

尝试的方法:

  1. 我将b.dll嵌入a.exe内,它起作用了。 但是我无法对exe进行混淆处理,因为它给出了无法找到b.dll的错误。

  2. 我混淆了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,以使上面的命令行作为后编译事件运行。

程序集嵌入可能看起来很混乱,因此通常是这样进行的:

  1. 如果需要,对依赖项进行混淆。
  2. 目标组件被混淆。 此时,还指示混淆器嵌入某些依赖项,作为混淆过程的一部分。
  3. 结果,嵌入式程序集被存储为目标程序集的资源。
  4. 为了在运行时加载依赖项,混淆器通常为AppDomain.AssemblyResolve事件安装一个处理程序,该事件在CLR无法自动解析程序集时引发。
  5. 处理程序从资源中提取并加载嵌入式程序集。

而已。 一个好的混淆工具可以很容易地做到这一点。 我不明白为什么在WPF应用程序中它不起作用。 如果有问题,建议您与产品支持联系。

另一种选择是程序集合并 与嵌入式程序不同,合并后的程序集成为目标程序集代码不可分割的一部分。 因此,与嵌入相比,程序集合并通常有助于实现更好的混淆范围和应用程序启动时间。 尽管看起来更好,但是合并有时可能会破坏应用程序的功能。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM