DotFuscator 混淆程序集给出了错误的 API 结果

DotFuscator obfuscated Assembly gives wrong API result

我是混淆的新手。我正在使用与 Visual Studio 2010.

捆绑在一起的混淆工具 DotFuscator

我有一个 Web 服务只有很少 APIs。此服务在正常发布时,所有 API 都工作正常并给出预期结果。

但是当我混淆 DLL 并发布服务时,所有 APIs 都会进入 Catch 块并在我从该服务执行任何 API 时出错。

此外,我尝试过,在混淆 DLL 时,我禁用了重命名 属性。所有 APIs 工作正常。但是,没有混淆的感觉,因为 DLL 中的任何内容都没有被重命名,并且可以轻松获取 DLL 中的所有代码。

我在混淆 DLL 时是否缺少任何 属性 或选项??

混淆时,重要的是任何可从外部访问的 Class、方法和 属性,无论是通过程序集引用,还是通过 Web 服务 API (依赖于 xml 引擎盖下的序列化),未重命名。

根据您应用混淆的位置,客户端将根据其末端的混淆名称通过网络发送垃圾 XML,导致服务器无法读取消息。 或者 客户端可能会发送正确的消息,但随后服务器需要各种乱码名称,因为其 类 和属性已被混淆。

因此,在应用混淆时,当您有明确的数据合同或数据传输对象时,它会有所帮助,这些对象被排除在混淆之外,然后将它们映射到您的真实领域模型,这是私有的,并且被严重混淆。

或者,如果您希望在线路上的消息难以阅读,请混淆整个合同,但在客户端和服务器上使用相同的混淆程序集。这样他们说话就一样了"nonsense"。混淆工具理解序列化协议很重要,这样它就不会生成与 XML 不兼容的名称,例如

所以,回答最后一个问题,如果我必须关闭混淆有什么用类?,好吧,它是为了保护真正的业务代码,同时允许您的交互仍然通过众所周知且定义明确的界面进行。

关于它,许多银行和医院使用标准协议进行序列化,线路上的对象是众所周知的,但软件的力量不在从 A->B 传输的消息中,它是来自发送和接收这些消息的算法和操作。混淆可以帮助您保护这个重要的 IP。

来自 Dotfuscator 常见问题解答:

How does Dotfuscator work on API libraries?

You can still take advantage of renaming your non-public types, methods and fields. Dotfuscator obfuscation is very configurable in this respect. Dotfuscator has a convenient "Library" option that automatically prevents all public methods from being renamed. If this doesn't quite fit your application, you can customize the exclusion rules at various levels of granularity. Not to mention control flow obfuscation and string encryption go a long way to protect code without renaming.

有可能(使用属性)to turn Obfuscation on or off for specific types and attributes as well。允许您完整地保留 属性 名称,但加密或混淆 method/property.

的内部结构