PreEmptive logo

Support Corner: Protect .NET Apps That Use P/Invoke Methods

Dotfuscator works with the full range of application types—desktop, Mobile, Cloud, and Internet of Things (IoT). It does this by setting sensible defaults and then providing complete granular control over obfuscation settings. Additionally, Dotfuscator understands specific coding patterns and automatically applies obfuscation rules wherever possible. One such example is Platform Invoke (P/Invoke).

What Is P/Invoke?

P/Invoke is a way of calling unmanaged C or C++ functions from a .NET program. This is useful if we have existing APIs written in C/C++, and we’re building new components in. NET. We can continue using the unmanaged codebase without rewriting while leveraging the power of the .NET ecosystem.

How Dotfuscator Handles P/Invoke

Dotfuscator has built-in rules to handle P/Invoke methods. If the original method name is used to find the corresponding native function, Dotfuscator preserves the method name to not break this mapping. On the other hand, if an alias, ordinal, or entry point is used, the P/Invoke method can safely be renamed without breaking runtime behavior.

Check Out This Example:

This .NET application has two calls to an unmanaged library via P/Invoke and the Dllimport attribute. The first method name maps to the corresponding native function. The second method uses the EntryPoint parameter to locate the native function:

pinvoke1

After obfuscation, Dotfuscator renames myMethod to “a” but skips renaming the print_line method:

pinvoke2

This occurs without any user configuration. On a project-wide scale, this ensures Dotfuscator applies the maximum renaming possible while not breaking runtime behavior.

Wrapping It Up

P/Invoke is one example of how Dotfuscator automatically applies obfuscation rules, saving time and effort during project configuration.

The above example can be downloaded here.

If you have any feedback on this topic or other topics you would like us to discuss in the Support Corner, please contact our Support Department.


In This Article:

Try a Free Trial of PreEmptive Today!