Linking .NET Assemblies

When packaging, during the assembly obfuscation, you can combine assemblies using the assembly linker. For example, instead of deploying main.dll, a.dll, and b.dll separately, you could deploy main.dll using the Assembly Linker interface that is a significant part of Skater .NET Obfuscator. The a.dll and b.dll will be joined into the main.dll

Skater .NET Obfuscator
More about Skater .NET Obfuscator
Download Skater .NET Obfuscator
Order Skater .NET Obfuscator

When distributing several closely related but separate DLLs is not that much of a plague, it would be a nice if, since they are so closely interlaced, you could merge these different assemblies into one. The ability to merge multiple libraries together would simplify deployment in many cases; applications that use several different languages or huge applications written in the same language but built upon many different projects would benefit from single-assembly deployment.

The Skater's special Linker interface is the utility that can link multiple modules into a single file for deployment. It does the linkage afterwards your main assembly has been obfuscated. The Linker interface intended for linking multiple managed executables or assemblies into a single module or assembly. The assigned referenced and non-referenced assemblies will be linked into your final obfuscated assembly afterwards when obfuscation is done for your current open assembly. NOTE: The linked assemblies will not be obfuscated. Please obfuscate the joined modules before Linkage. Or you may suggest secure the combined libraries after Linkage.



Usually, if all the functionality of your distributed application is not required at once, you might want to consider having the application divided into separate modules or libraries. The .NET runtime will load each component only when a type is referenced.

On the second hand, packaging everything into a single file will bring performance improvements, mostly because the loader does not have to take the time to resolve all the dependency issues. Also, you do not have to worry about missing dlls when your application is deployed.


How does it work? What steps we need to do to link assemblies into one module and then obfuscate it?
1.
Open a main assembly (exe or dll) in Skater.
2. By using Linker interface select referenced and non-referenced assemblies and include them.
3. Do not apply any obfuscation settings for the main assembly. All assemblies have to be not obfuscated before.
4. Run obfuscation. Actually the obfuscation will not be implemented since you do not select any obfuscation settings. It will just link assemblies into a single module.
5. Open the linked single module in Skater interface. Apply obfuscation settings to the obtained .NET assemblies' bundle and then run obfuscation.


Code obfuscation is a form of software protection against unauthorized reverse-engineering.
The chief functions of any software protection technique can be determined as detection of pirate attempts to decipher or tamper software, protection against such attempts and alteration of software to ensure that it functionality degrades in an undetectable manner if the protection fails.

Skater .NET obfuscator performs the deciphering protection by various means that mainly concentrate on making the assembly members names meaningless, encrypting string values, and including tricking code commands that render disassembled code not recompilable.

Cardinal obfuscation techniques:

Private and Public members names obfuscation.
It scrambles names of classes, methods, variables, and other assembly members. It makes assembly code reverse engineering much harder by obfuscating names. Some Skater settings allow to generated names that will prevent recompilation.
Public members in dll libraries are advisedly reserved from obfuscation because they are intended to be used in external assembly code. If you are sure some of public members are not to be accessed from outside, you may want to obfuscate them.
For exe executables you may consider the assemblies to be self-contained, and set obfuscation of all possible names very aggressively, including Public Members.

String encryption.
The string encryption function allows you to select literal values of string data type to be encrypted. You may select all strings to be encrypted. Also you may mark some specific strings to obfuscate. You have choice to apply a cryptography method for the string encryption. Only specified strings will be encrypted /obfuscated.
Since Strings can provide useful clues for anyone trying to reverse-engineer your code it makes sense to protect your string data from spying eyes. It will not prevent an absolute hacker from deciphering the conversion and seeing your data. However, for example, an attacker trying to break a licensing routine would first focus attention on Strings having to do with licensing to locate the appropriate spot of code. Skater can make this more difficult by encrypting the strings in your .NET assembly. This is done by inserting a decryption routine into the assembly and calling the decryption code at runtime to return the original Strings.

Control Flow obfuscation intended to stop decompilers and deobfuscators from functioning correctly.
Control Flow obfuscation subdues reverse engineering by scrambling .NET methods (functions and procedures) code. The Control Flow obfuscation algorithm distorts and reorders the IL code in the assembly, inserting bait branch instructions while preserving code semantics. This obfuscating essentially converts assembly method implementations into "spaghetti code", making interpretation by human hackers and decompiler tools much more difficult.
Actually Control Flow obfuscation involves the insertion of additional instructions. Applying of this feature increases the size of the output assembly. If a maximum level of code protection is not required for your assembly, you may want to consider disabling this feature to minimize your output executable code size.
Control Flow obfuscation discourages reverse engineering and malicious tampering of software codes by applying false conditional statements and other misleading constructs in order to confuse and break decompilers. Given the original source codes and desired obfuscation criteria, the proposed Control Flow obfuscation works by decomposing the source codes into fragments and then applying various transforms to the code fragments. As the Skaters output, the transformed fragments are re-assembled and obfuscated with the designated obfuscation criteria. Moreover, since only Control Flows are obfuscated with a sequence of transformations that produce equivalent results of the original fragments, the final output can still preserve the same execution results as the original codes.

RustemSoft presents Skater .NET Obfuscator, an obfuscation tool for .NET code protection. It implements all known software protection techniques and obfuscation algorithms.
If you would like periodically obfuscate your .NET products the Skater .NET Obfuscator is for you. RustemSoft is using the Skater for internal needs securing all RustemSoft .NET executables and assemblies. Its command-line version running in batch mode is much useful for your scheduled products updates. You have to assign settings for an assembly in GUI version first. Then the batch obfuscate task will use the settings.

Main features of Skater .NET Obfuscator

Prohibits reverse engineering
Obfuscated application usually is not recompilable
Processes any .NET application, executable or assembly
Encrypts string constants
Compatible with any .NET framework from 1.0 through 4.5
Control flow obfuscation stops decompilers and deobfuscators
Scrambles class names, method names, field names etc.
Protects XAML (baml) files in WPF application
It works well on both (x86 and x64) platforms

Order Skater .NET Obfuscator!

Read Skater on-line documentation

Skater .NET Obfuscator is a .NET code intellectual property protection tool that implements all known software protection techniques to completely protect your .NET apps. RustemSoft .NET Obfuscator is compatible with any .NET framework and offers effective methods of protection against unauthorized reverse-engineering. Obviously you need the Skater .NET Obfuscator for the following reasons:

1. You have a clear understanding of obfuscation benefits and appropriate use cases.
2. You generally understand that obfuscation prevents source code extraction.
3. You have practical understanding of how and when obfuscation should be used.
4. Also your organization has a consistent approach to assessing the risk of source code extraction.





Copyright © 2001-2022 RustemSoft

environment and programming model for constructing a range of software solutions. RustemSoft develops the assemblies (dll) for .NET developers. With the RustemSoft .NET assemblies and controls, customers gained the benefits of enhanced tool and framework functionality for building enterprise-critical software.
RustemSoft?s .NET programming components are reducing the amount of code required to accomplish common tasks and delivering high-end features for advanced .NET developers.
RustemSoft presents DataGridColumns .NET assembly for VB.NET, C#, C++, J# the intelligent software package designed for .NET developers.
A quantity of jobs you may want to achieve with the Windows Forms DataGrid control are, unexpectedly, more troublesome than you might expect. Principally, this is because the Windows Forms DataGrid control is column-based, rather than cell-based. As a result, to attain most tasks, you have to work with the columns, not the cells themselves.
DataGridColumns .NET assembly from RustemSoft is a DataGrid Columns Styles software package specifically designed for .NET developers. The assembly allows you to use all strengths of the MS Windows .NET forms DataGrid control without waiving the user interface elements your customers need.