Protection of software against reverse engineering that is done by individuals with different purposes becomes more and more complex with time due to evolving technology. No matter how unimportant a piece of software is some kind of protection against intellectual property and data theft must be in place. In the help of protection against reverse engineering, a method of encoding is proposed that encodes the principal section of a Portable Executable(PE) file in such a way that the encoded assembly instruction look like a normal assembly instructions of a program. This method is using a Genetic Algorithm(GA) together with Asm2Vec engine. The Genetic Algorithm has into his population the assembly instructions of the input program and other assembly instructions from other legitimate programs. The decoding is made at the user request based with a key that is uniquely generated for each encoded program. The results show that the encoded program is not obfuscated nor encrypted which may misled the attacker and hide the behavior of the program.

错误:搜索内容不能为空,请输入英文关键词
错误:关键词超出字数限制,请精简
高级检索

Securing Software Using Genetic Algorithms and Encoding

  • Alexandru-Gheorghe Reuț

摘要

Protection of software against reverse engineering that is done by individuals with different purposes becomes more and more complex with time due to evolving technology. No matter how unimportant a piece of software is some kind of protection against intellectual property and data theft must be in place. In the help of protection against reverse engineering, a method of encoding is proposed that encodes the principal section of a Portable Executable(PE) file in such a way that the encoded assembly instruction look like a normal assembly instructions of a program. This method is using a Genetic Algorithm(GA) together with Asm2Vec engine. The Genetic Algorithm has into his population the assembly instructions of the input program and other assembly instructions from other legitimate programs. The decoding is made at the user request based with a key that is uniquely generated for each encoded program. The results show that the encoded program is not obfuscated nor encrypted which may misled the attacker and hide the behavior of the program.