Article Wonders - http://articlewonders.com
Stay Out Of Software Piracy Problems - Software Security Against Code Obfuscation
http://articlewonders.com/articles/474/1/Stay-Out-Of-Software-Piracy-Problems---Software-Security-Against-Code-Obfuscation/Page1.html
Jose Sogiros
Jose Sogiros is a known developer in protection software. Publishing about software compression and the related anti hack applications is the beloved spare-time activity for J. Sogiros. 
By Jose Sogiros
Published on 04/26/2010
 
The developer's task to make reverse engineering difficult, is not an easy one. Client-server models of software protection provide the best security but suffer from network limitations. Hardware based encryption schemes require the user to have specialised hardware, it limits the portability of programs. Native object programming makes reverse engineering harder but increases the software development effort. It brings us to one more possibility: code obfuscation.

Stay Out Of Software Piracy Problems - Software Security Against Code Obfuscation

Security of intellectual property is crucial for every business in today's state-of-the-art reality. Competitive vantage is acquired through technical finds. However, thievery of applications and/or algorithms might leave the rival a dominant situation over his challengers. Therefore, plagiarism, counterfeit, patent infringement and theft of source code, all develop a major concern for computer software businesses.

Hardly a few systems can be applied -  in a relatively sound style - to forestall cracking. An instance is server-side execution of software, one more is encryption where the total decryption/execution process occurs in particular hardware. Those choices both offer solid security against cracking since the cracker gets a profound problem reaching the code. However, there are some serious downsides to these techniques because server-side execution performs worse than if running locally and hardware execution requires the end user to have special hardware.

There are more security picks usable though, one of which is code obfuscation. Even so, code obfuscation is rather a way of making cracking economically unfeasible in terms of time and resources necessary. Of course, there are conditions enforced to the employed code obfuscation method. For example, the applied techniques must be efficient to stave off attempts with deobfuscator applications.

Code obfuscation is making software code intentionally difficult to understand. This can be done in several manners, such as using encryption and by adding random comments and variable names. Evidently, to forbid plagiarism of the software is the main argue why somebody uses code obfuscation.

By producing source code difficult to understand, legitimate owners can frequently ward off unlicensed access. In a way, it manages the risks of stealing of intellectual property and income.

Code obfuscation methods can be split in three classes. All are known for a one-to-one mapping between the transformation type and the obfuscation type. This means that source code obfuscation makes transmutations to the source code and bytecode obfuscation to the bytecode. Accordingly, binary obfuscation executes its modifications to the binary code.

Source code obfuscation is frequently employed to object oriented cross platform developing languages such as Java and/or NET. That is because else, such source code can easily be decompiled into the original source. Evidently, this constitutes those formats to be vulnerable to reverse engineering.

Till now, we discussed mainly source code obfuscation methods, which are relatively simple to enforce.
Binary code obfuscation methods translate code at binary stage, so in the compiled executable. Encrypting object or procedure names like done in source code obfuscation  is less problematic than obfuscating binary code. In the instance of binary obfuscation, the code is changed by employing a diversity of transformations, for instance self modifying code, stack operations or even by throwing in loads of obfuscating bytes and/or instructions between the factual instructions. In fact, binary code obfuscation modifies the primary code structure at machine code level. All this is done whilst sustaining the initial functionality.

Nonetheless, for means of software protection, code obfuscation can as well help a different boss and it is especially interesting that it also functions in favor of the opposit side. Indeed, the wrong guys practice the scheme to safeguard their virii, trojans and the likes, from discovery. Now, imagine code obfuscation is also often employed to protect cracked software against re-cracking by their friends.