这两者之间的差异是什么?为什么我要一个或另一个或两个?这适用于将通过WiX打包的商业.NET C#WPF应用程序.我需要一个试用许可证来购买许可证功能.
我需要保护我们的程序集免遭逆向工程,以减少 IP 盗窃或许可证黑客的风险。.NET Reactor 看起来很强大,我们已经有了它的许可证。
通读文档似乎有几种机制可以防止除混淆之外的反编译。我读过混淆会破坏序列化,这是我们系统的重要组成部分,我希望完全避免它。
我主要对 NecroBit 感兴趣,它声称对 CIL 进行加密,使其“无法反编译/逆向工程”。在我看来,如果这是真的,混淆或任何其他设置将毫无意义。
任何有经验的 .NET Reactor 用户能否对各种选项给出更实际的解释和/或建议一个序列化系统的良好排列?有哪些好的工具可以用来测试这个软件的声明?
我正在学习如何使用.NET Reactor混淆我的程序集。
一种选择是“生成本机 x86 EXE 文件存根”,我不明白其目的。我导入一个程序集(例如一个 .exe 文件)并输出一个经过混淆的 .exe 文件,它的大小大致相同。如果我选中“生成本机 x86 文件存根”,软件会输出一个小得多的 .exe 文件(就像 .exe 被压缩......)
我不明白这是什么意思。在文档中:
.NET Reactor 能够为您的应用程序生成本机 x86 EXE 文件存根。这样就不可能在反编译器中直接打开受保护的应用程序。反编译器将您受保护的应用程序识别为本地 EXE 文件。
为什么我想从一个已经是 .exe 的文件生成一个 .exe?
我是 Xamarin Android 的新手。我使用 Visual Studio 2015 社区版创建了一个应用程序。我已将解决方案配置设置为发布。
为了进行混淆,我使用了 .Net Reactor。
这就是我试图混淆的方式
1: 一旦我构建了应用程序,我将转到 Bin\Release 文件夹
2:混淆App.dll
3:在Bin\Release、Obj\Release和Obj\Release\assemblies中用混淆的dll替换原来的dll
4:转到工具->Android->发布
但是,当我尝试发布混淆的 dll 时,将被原始 dll 替换。
那么我做错了什么?我是否必须手动打包apk文件。如果是这种情况,我该怎么做?
我有一个用 .NET Reactor v.6.0.0.0 混淆的 .NET Core 3.0.100 程序集。
所述主程序集依赖于已通过使用 Reactor命令与其一起打包和混淆的附加程序集:
-satelite_assemblies [path/s]
-merge 1
使用 dotPeek 并反编译程序集,我可以看到所有正确的 .dll 都包含在主程序集中,并与其一起混淆 - 到目前为止一切顺利。
仅构建(且未混淆)时,主 .dll 还具有一个与之一起的 [name].deps.json 文件,该文件告诉它在什么位置以及在哪里可以找到附加程序集(标准 .NET Core 过程)。
在混淆的程序集(包含所有其余部分)中,该文件不再有效(也无法包含),因为程序集的“位置”现在已更改,因此在运行混淆的 .dll 时,我们在控制台中收到错误消息找不到依赖的 .dll。
我们如何使用 .NET Reactor 混淆和合并多个 .dll,并且仍然让主程序集知道在哪里找到它们?