我使用的是Costura.Fody,它允许用户将依赖项嵌入到资源中。在我的例子中,它将.dll嵌入到我的.exe中.问题是,当我后来尝试使用ConfuserEX来防止反编译时,就会出现以下错误:
[ERROR] Failed to resolve dependency of 'Program.exe'.
Exception: dnlib.DotNet.AssemblyResolveException: Could not resolve assembly: Siticone.Desktop.UI, Version=2.0.9.0, Culture=neutral, PublicKeyToken=422d444a8a9fa6db
at dnlib.DotNet.Extensions.ResolveThrow(IAssemblyResolver self, IAssembly assembly, ModuleDef sourceModule) in E:\Source\Public\Confuser2\dnlib\src\DotNet\IAssemblyResolver.cs:line 113
at Confuser.Core.ConfuserEngine.Inspection(ConfuserContext context) in e:\Source\Public\Confuser2\Confuser.Core\ConfuserEngine.cs:line 264如何嵌入我的.dlls并防止反编译?
发布于 2022-07-30 04:00:54
您的问题在于Costura将删除dll的事实。
请参见以下问题以解决问题:不能将Costura.Fody与ConfuserEx结合使用
确保在混淆时,dll与您的可执行文件位于同一个目录中。
如果您想要混淆依赖项本身--,例如您创建的自定义库--您必须做得更多。
就我个人而言,我是通过直接引用dll来完成的,我在我的主要项目的预构建事件中使用并混淆了它们。
我创建了两个蝙蝠脚本,一个用来构建我的依赖关系/库,还有一个用来混淆它们。
我的预建事件:
cd %cd%\..\..\..\..\
call dependency_builder.bat
if $(ConfigurationName) == Release (
call dependency_obfuscator.bat
)"dependency_builder.bat“只使用msbuild构建我所有的依赖项,而"dependency_obfuscator.bat”则使用ConfuserEx2 CLI混淆它们。
这相当乏味,但就目前而言,这是我所能想到的最好的方法,也是混淆依赖关系的最佳方法。
希望这会有所帮助:)
https://stackoverflow.com/questions/72056824
复制相似问题