{'fraction_non_alphanumeric': 0.010775862068965518, 'fraction_numerical': 0.0, 'mean_word_length': 5.406896551724138, '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}}
Software Tamper Resistance Based on the Difficulty of Interprocedural Analysis

Software obfuscation is a promising approach for protection of intellectual property rights of software in untrusted environments. Unfortunately most of previous obfuscation techniques do not have a theoretical basis and thus it is unclear how effective they are. Therefore in this paper we propose new software obfuscation techniques, which are based on the difficulty of interprocedural analysis. The essence of our obfuscation techniques is a new complexity problem to precisely determine the address a function pointer points to in the presence of arrays of function pointers. We show that the problem is NP-hard and the fact provides a theoretical basis for our obfuscation techniques. Furthermore, we have already implemented a prototype obfuscation tool. In this paper we also describe the implementation and discuss the experiments results.