Browse Prior Art Database

Method for Protecting Software Components Against Reverse Code Engineering

IP.com Disclosure Number: IPCOM000202921D
Publication Date: 2011-Jan-10
Document File: 3 page(s) / 386K

Publishing Venue

The IP.com Prior Art Database

Related People

Juergen Carstens: CONTACT

Abstract

Nowadays, huge efforts are required for developing modern software solutions. This comprises the design of software architecture, the implementation of all desired functionalities as well as performing system tests to ensure high software quality. Thus, each software manufacturer spends a lot of money for developing a good product and fully depends on its product being sold. Therefore, any software must be protected against being copied illegally. Usually, a copy protection and/or a sophisticated registration mechanism are applied in order to counteract unintended software duplication. Moreover, there is another threat to software manufacturers, namely the reverse code engineering of software components. This is the process of decompiling or disassembling binary files in order to extract their source code. There are a lot of programs available which are able to decompile binary files and generate source code from them. The result is that the code of the product can easily be read and analyzed by a competitor, who is interested in the proprietary algorithms implemented into the product by the manufacturer. Therefore, appropriate protection of the software is crucial.

This text was extracted from a PDF file.
This is the abbreviated version, containing approximately 51% of the total text.

Page 01 of 3

(This page contains 01 pictures or other non-text object)

(This page contains 00 pictures or other non-text object)

Method for Protecting Software Components Against Reverse Code Engineering

Idea: Bernd Steiner; DE-Nuremberg

Nowadays, huge efforts are required for developing modern software solutions. This comprises the design of software architecture, the implementation of all desired functionalities as well as performing system tests to ensure high software quality. Thus, each software manufacturer spends a lot of money for developing a good product and fully depends on its product being sold. Therefore, any software must be protected against being copied illegally. Usually, a copy protection and/or a sophisticated registration mechanism are applied in order to counteract unintended software duplication. Moreover, there is another threat to software manufacturers, namely the reverse code engineering of software components. This is the process of decompiling or disassembling binary files in order to extract their source code. There are a lot of programs available which are able to decompile binary files and generate source code from them. The result is that the code of the product can easily be read and analyzed by a competitor, who is interested in the proprietary algorithms implemented into the product by the manufacturer. Therefore, appropriate protection of the software is crucial.

Until today, the probability of being a victim of reverse engineering has been lower than being a victim of illegally copied software or registrations with keys generated by e. g. illegal key generators. This is why software manufacturers often did not consider reverse code engineering as a threat at all. It requires in-depth knowledge of low-level programming languages, like Assembler, and a good understanding of processor architecture. To that effect, reverse code engineering requires huge efforts and there is also still no solution available for protecting against it, until today. However nowadays, reverse code engineering becomes increasingly relevant and core components of software solutions, which contain complex business logic, need to be protected appropriately.

However, the actual process of building software solutions relates to its compiling and linkage processes. After the source code files of the product are compiled, e.g. into .cpp and .h files, they are subsequently linked together into binary files, such as .dll or .exe. After that, the generated binary files are supplied to the customer. This is illustrated in figure 1 with the first two steps of the blue colored flow. It is an example, where a component "A", comprising several .cpp and .h files, is compiled and linked into an .exe or any other binary file.

In the following, a new method is introduced as a concept for protecting software solutions against reverse code engineering. It is pro...