.NET 提供的 API 也会被混淆吗?

发布于 2024-10-29 22:41:54 字数 108 浏览 4 评论 0原文

我正在考虑对我的 .NET 应用程序使用混淆。我的问题是,这些混淆器也会混淆我的代码调用的任何 .NET API。例如,如果我的类调用任何 .NET 文件流函数或套接字相关的 API,它们也会被混淆吗?

I am considering using obfuscation for my .NET application. My question is that any of these obfuscators also obfuscates any .NET APIs that my code calls. So for example if my class calls any .NET file stream functions or socket related APIs, will they also get obfuscated?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

伴我老 2024-11-05 22:41:54

是的,可以混淆对 .Net API 的调用 Crypto Obfuscator 正是这样做的 - 它用代理方法替换对 .Net API 的方法调用。

之前:

Application.EnableVisualStyles();

之后:

AA();

免责声明:我在 LogicNP Software 工作,该公司是 Crypto Obfuscator 的开发者。

Yes, it is possible to obfuscate the calls to .Net APIs, Crypto Obfuscator does exactly this - it replaces method calls made to .Net APIs with proxy methods.

Before:

Application.EnableVisualStyles();

After:

A.A();

DISCLAIMER: I work at LogicNP Software, the developer of Crypto Obfuscator.

还在原地等你 2024-11-05 22:41:54

类、属性、参数、字段和方法的公共名称不会被混淆。

您向引用程序集公开的 API 必须是公共的,因此该 API 不会被混淆。

Public names of classes, properties, parameters, fields and methods will not be obfuscated.

The API you expose to referencing assemblies must be public, so, the API will not be obfuscated.

云淡风轻 2024-11-05 22:41:54

不,系统 .NET 程序集很自然地不会被混淆。它们不是您的代码。除非您尝试将它们包含在您的混淆配置中,否则它们不会被触及。如果您确实包含它们,您很可能最终会得到不起作用的结果。

此外,人们通常不会混淆 public API(类、成员……)。但是,如果它们只是为了在您的软件中绑定而公开,那么您的混淆器也可能能够混淆它们。

No, the system .NET assemblies — quite naturally — won't be obfuscated. They aren't your code. Unless you try to include them among your obfuscation configuration they won't be touched. In case you do include them, you most likely will end up with a non-functioning result.

Also, people usually don't obfuscate public APIs (classes, members, …). However, in case they are public for the sake of binding within your software only, your obfuscator might be capable of obfuscating them as well.

德意的啸 2024-11-05 22:41:54

理论上当然可以混淆对 .net 库的调用,但显然不能混淆 .net 库本身。

在许多地方,我们可以用委托调用来代替对库函数的调用。这会导致一定的性能下降,并且 ngen 之类的一些东西可能会受到影响。它仅防止程序集的简单反射,而不是当您的代码在调试器中运行时。

It's certainly possible in theory to obfuscate your calls to the .net libraries, but not the .net libraries themselves obviously.

One could replace the calls to library functions with delegate calls in many places. That'd result in a certain performance hit, and some things like ngen might be affected. And it only protects against simple reflection of your assemblies, and not when your code runs in a debugger.

任谁 2024-11-05 22:41:54

是的,实际上这就是所谓的跨汇编混淆。完美的混淆确实需要它。

外部引用的重命名因此大大增加了混淆构造的数量。给定一组相互接口的程序集,FxProtect 将统一重命名从其他程序集引用的类、方法和字段。例如,如果程序集 B 引用了程序集 A 中声明的类 A,并且 FxProtect 将类 A 重命名为 A1,则它还会将 B 的外部引用从 A 重命名为 A1。

我正在使用 FxProtect 进行交叉程序集混淆。你可以尝试一下... .NET 混淆器

Yes, actually it is called cross assembly obfuscation. It is really needed for perfect obfuscation.

Renaming of external references thus dramatically increasing the number of obfuscated constructs. Given a set of assemblies that interface each other, FxProtect will rename classes, methods and fields referenced from other assemblies uniformly. For example, if class A declared in assembly A is referenced from assembly B and FxProtect renames class A to A1, it will also rename B's external reference from A to A1.

I am using cross assembly obfuscation with FxProtect. You can try it... .NET Obfuscator

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文