{'fraction_non_alphanumeric': 0.01638176638176638, 'fraction_numerical': 0.0, 'mean_word_length': 5.2444444444444445, 'pattern_counts': {'":': 0, '<': 0, '<?xml version=': 0, '>': 0, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
A code obfuscation technique to prevent reverse engineering

Reverse engineering is the process of decompiling and disassembling the executables to recover the source code/assembly code embedded within it. While reverse engineering is the process of examining the code, in offensive context the attackers can re-engineer the code which leads to software piracy. Software anti-tamper technology like obfuscation is used to deter both reverse engineering and re-engineering of proprietary software and software-powered systems. Code obfuscation, as a part of software protection, got commercial interest from both vendors and as well as from the clients. Vendors want to keep their proprietary code as secret and customers needs software upon which they can trust. In this article, a code obfuscation technique has been proposed to complicate the process of reverse engineering. The basic idea is to conceal the proprietary code section by using preventive design obfuscation and insertion of self-modifying code at the binary level. The combination of design level obfuscation and the insertion of self-modifying code converts the code into a semantically equivalent one that makes it difficult to reverse engineer. The technique is evaluated using different sorting algorithms. The experimental results quantify the degree of obfuscation, stealth of the code, and effects on execution time and code size.