Commenced in January 2007
Frequency: Monthly
Edition: International
Paper Count: 33122
Program Camouflage: A Systematic Instruction Hiding Method for Protecting Secrets
Authors: Yuichiro Kanzaki, Akito Monden, Masahide Nakamura, Ken-ichi Matsumoto
Abstract:
This paper proposes an easy-to-use instruction hiding method to protect software from malicious reverse engineering attacks. Given a source program (original) to be protected, the proposed method (1) takes its modified version (fake) as an input, (2) differences in assembly code instructions between original and fake are analyzed, and, (3) self-modification routines are introduced so that fake instructions become correct (i.e., original instructions) before they are executed and that they go back to fake ones after they are executed. The proposed method can add a certain amount of security to a program since the fake instructions in the resultant program confuse attackers and it requires significant effort to discover and remove all the fake instructions and self-modification routines. Also, this method is easy to use (with little effort) because all a user (who uses the proposed method) has to do is to prepare a fake source code by modifying the original source code.Keywords: Copyright protection, program encryption, program obfuscation, self-modification, software protection.
Digital Object Identifier (DOI): doi.org/10.5281/zenodo.1079590
Procedia APA BibTeX Chicago EndNote Harvard JSON MLA RIS XML ISO 690 PDF Downloads 1510References:
[1] 4C-Entity, Policy statement on use of content protection for recordable media, (CPRM) in certain applications, 2001, http://www.4centity.com/ (Available online).
[2] D. W. Aucsmith, Tamper Resistant Software: An Implementation, ser. Lecture Notes in Computer Science. Springer-Verlag, 1996, vol. 1174, pp. 317-333.
[3] P. Cervan, Crackproof Your Software. San Francisco: No Starch Press, 2002.
[4] F. Cohen, Operating system protection through program evolution, Computers and Security, vol. 12, no. 6, pp. 565-584, 1993.
[5] C. Collberg and C. Thomborson, Watermarking, tamper-proofing, and obfuscation - tools for software protection, IEEE Transactions on Software Engineering, vol. 28, no. 8, pp. 735-746, June 2002.
[6] D. Grover, Ed., The Protection of Computer Software: Its Technology and Applications. Cambridge University Press, 1989.
[7] F. Hohl, Time limited blackbox security: Protecting mobile agents from malicious hosts, ser. Lecture Notes in Computer Science. Springer- Verlag, 1998, vol. 1419, pp. 92-113.
[8] IA-32 Intel Architecture software developer-s manual vol.1 : Basic Architecture, Intel Co., http://www.intel.co.jp/ (Available online).
[9] IA-32 Intel Architecture software developer-s manual vol.2 : Instruction Set Reference, Intel Co., http://www.intel.co.jp/ (Available online).
[10] IA-32 Intel Architecture software developer-s manual vol.3 : System Programming Guide, Intel Co., http://www.intel.co.jp/ (Available online).
[11] J. Irwin, D. Page, and N. Smart, Instruction stream mutation for nondeterministic processors, in Proc. ASAP2002, July 2002, pp. 286-295.
[12] Y. Kanzaki, Protecting secret information in software processes and products, Ph.D. dissertation, Nara Institute of Science and Technology, Mar. 2006.
[13] Y. Kanzaki, A. Monden, M. Nakamura, and K. Matsumoto, A software protection method based on instruction camouflage, Wiley Publishers, Electronics and Communications in Japan, Part 3, vol. 89, no. 1, pp. 47-59, January 2006.
[14] Y. Kanzaki, A. Monden, M. Nakamura, and K. Matsumoto, Exploiting self-modification mechanism for program protection, in Proc. 27th IEEE Computer Software and Applications Conference, Dallas, USA, Nov. 2003, pp. 170-179.
[15] M. Mambo, T. Murayama, and E. Okamoto, A tentative approach to constructing tamper-resistant software, in Proc. 1997 New Security Paradigm Workshop, Sep. 1997, pp. 23-33.
[16] E. W. Myers, An O(ND) difference algorithm and its variations, Algorithmica, vol. 1, no. 2, pp. 251-266, 1986.
[17] C. Wang, J. Hill, J. Knight, and J. Davidson, Software tamper resistance: Obfuscating static analysis of programs, Department of Computer Science, University of Virginia, Technical Report SC-2000-12, Dec. 2000.