DE102005046696A1 - Secured program code producing method for license verification, involves storing modified program code including exchanged references, coded program blocks and program block with decoded function as protected computer program - Google Patents
Secured program code producing method for license verification, involves storing modified program code including exchanged references, coded program blocks and program block with decoded function as protected computer program Download PDFInfo
- Publication number
- DE102005046696A1 DE102005046696A1 DE200510046696 DE102005046696A DE102005046696A1 DE 102005046696 A1 DE102005046696 A1 DE 102005046696A1 DE 200510046696 DE200510046696 DE 200510046696 DE 102005046696 A DE102005046696 A DE 102005046696A DE 102005046696 A1 DE102005046696 A1 DE 102005046696A1
- Authority
- DE
- Germany
- Prior art keywords
- program code
- code block
- program
- encrypted
- block
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 43
- 238000004590 computer program Methods 0.000 title claims abstract description 38
- 238000012795 verification Methods 0.000 title abstract description 11
- 230000006870 function Effects 0.000 claims description 64
- 230000003936 working memory Effects 0.000 claims description 4
- 230000008569 process Effects 0.000 claims description 2
- 230000005540 biological transmission Effects 0.000 claims 1
- 238000004519 manufacturing process Methods 0.000 abstract 1
- 230000008859 change Effects 0.000 description 5
- 230000015654 memory Effects 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 4
- 238000012552 review Methods 0.000 description 2
- 241001441724 Tetraodontidae Species 0.000 description 1
- 241000700605 Viruses Species 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000009760 functional impairment Effects 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 229920001690 polydopamine Polymers 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000001681 protective effect Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/121—Restricting unauthorised execution of programs
- G06F21/125—Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
Abstract
Description
Die Erfindung betrifft ein Verfahren zum Schutz einer Lizenzüberprüfung eines Computerprogramms.The The invention relates to a method for protecting a license check of a Computer program.
Computerprogramme mit Lizenzüberprüfungsmechanismen sind vielfach bekannt. Für eine Lizenzüberprüfung wird ein Computerprogramm oft mit einem individuellen Lizenzschlüssel versehen, der beispielsweise bei der Installation des Programms unter Verwendung einer vom Hersteller zur Verfügung gestellten Lizenznummer und nutzer- oder computerspezifischen Daten erstellt wird.computer programs with license verification mechanisms are widely known. For becomes a license review a computer program often provided with an individual license key, the for example, when installing the program using one available from the manufacturer provided license number and user or computer specific data is created.
In installierten Computerprogrammen befindet sich in der Regel Programmcode, der einen so erstellten Lizenzschlüssel auf Vorhandensein und Richtigkeit hin überprüft und die Ausführung des Programmes andernfalls unterbindet. Dabei unterscheiden sich die verwendeten Lizenzmechanismen in ihrer Komplexität, beispielsweise ob lediglich ein einzelner in einer lokal gespeicherten Datei abgelegter Lizenzschlüssel überprüft wird oder ob komplexe Nutzungsprofile einer Netzwerkinstallation für mehrere Benutzer zentral erfasst und überprüft werden.In installed computer programs are usually program code, of the created license key for availability and correctness checked out and the execution otherwise prevents the program. There are differences the used license mechanisms in their complexity, for example whether only a single license key stored in a locally stored file is checked or whether complex usage profiles of one network installation for multiple Users are recorded and checked centrally.
Praktisch alle beschriebenen Lizenzmechanismen haben jedoch eine gemeinsame Schwachstelle. Wenn es nämlich möglich ist, den Aufruf des Programmcodes zu unterbinden, der die eigentliche Überprüfung vornimmt, oder so abzuändern, dass die Überprüfung stets erfolgreich ist, ist es möglich das Pro gramm auch ohne gültige Lizenz zu nutzen. Die dadurch ermöglichte Nutzung solcher sogenannter Raubkopien lässt jährlich ein erheblicher wirtschaftlicher Schaden für die Hersteller und Verkäufer von Computerprogrammen entstehen.Practically however, all of the described licensing mechanisms have one common Weak spot. If it is possible is to stop the invocation of the program code, which performs the actual check, or change that, that review always successful, it is possible that Program also without valid License to use. The thus enabled use of such so-called Pirated copies yearly a significant economic damage for the manufacturers and sellers of Computer programs arise.
Ein solches Umgehen des Lizenzschutzes ist beispielsweise dadurch möglich, dass das Aufrufen einer Lizenzüberprüfungsfunktion effektiv aus dem Programm entfernt wird. Dabei wird der Aufruf, in der Regel ein Verzweigungs- oder Sprungbefehl, einfach durch einen anderen, wirkungslosen Befehl ersetzt, zum Beispiel eine sogenannte NOP (no operation) Anweisung.One such circumvention of the license protection is possible, for example, in that calling a license verification function effectively removed from the program. In doing so, the call, in usually a branch or jump command, simply by one other, ineffective command replaced, for example, a so-called NOP (no operation) statement.
Alternativ kann auch die Überprüfungsfunktion selber so abgeändert werden, dass sie stets ein positives Ergebnis zurückliefert. Beispielsweise kann der Rückgabewert einer Lizenzschlüsselverifizierungsfunktion fest auf den booleschen Wert "wahr" gesetzt werden, im Falle das dies eine erfolgreiche Überprüfung bedeutet.alternative can also use the verification function itself changed will always return a positive result. For example, the return value a license key verification function fixed to the boolean value "true", in case this means a successful check.
Solche Manipulationen sind mit verhältnismäßig geringem Aufwand durchführbar, zum Beispiel durch Verwendung eines Disassemblers mit dem ausführbarer Programmcode analysiert und verändert werden kann.Such Manipulations are relatively low Effort is feasible, for example, by using a disassembler with the executable Program code analyzed and changed can be.
Zwar sind von modernen Betriebssystemen und von Virenscanner her Verfahren bekannt, die eine Abänderung von ausführbarem Programmcode beispielsweise durch die Verwendung von Zertifikaten zur Signierung des ausführbaren Programmcodes erkennen und damit den Start verhindern können. Jedoch müssen solche Funktionen in der Regel durch den Benutzer selbst aktiviert werden. Nur bei wenigen Systemen, beispielsweise speziellen Smartphone Betriebssystemen, werden solche Verfahren zwangs weise durchgeführt, z.B. wenn dies von einem Betreiber eines Mobilfunknetzes erzwungen wird.Though are of modern operating systems and virus scanner forth procedures known, which is a modification of executable Program code, for example, through the use of certificates for signing the executable Recognize program codes and thus prevent the start. however have to Such features are usually activated by the user himself become. Only for a few systems, for example a special smartphone Operating systems, such procedures are enforced, e.g. if this is enforced by an operator of a mobile network.
Ein vorsätzliches Umgehen des Lizenzschutzes lässt sich mit solchen Verfahren in der Regel also nicht verhindern. Des Weiteren weisen nicht alle Betriebssysteme einen solchen Schutz auf, insbesondere ältere oder funktionseingeschränkte Betriebssysteme wie sie beispielsweise auf mobilen elektronischen Geräten wie PDAs oder Mobiltelefonen eingesetzt werden.One intentional Bypassing the license protection allows usually not prevent themselves with such procedures. Of Furthermore, not all operating systems have such protection on, especially older ones or functionally limited Operating systems such as those on mobile electronic devices how PDAs or mobile phones are used.
Aufgabe der Erfindung ist es daher, einen verbesserten Lizenzschutz für Computerprogramme zu beschreiben. Dabei soll der Schutzmechanismus nicht von einem zur Ausführung des Computerprogramms benutzten Betriebssystems abhängen.task It is therefore an object of the invention to provide improved license protection for computer programs describe. In this case, the protection mechanism should not from one to execution depend on the computer program used operating system.
Die Aufgabe wird erfindungsgemäß durch ein Verfahren zum Erzeugen von geschütztem Programmcode und ein Verfahren zum Ausführen von Programmcode eines geschützten Computerprogramms sowie ein Computerprogrammprodukt gelöst, wie sie in den Ansprüchen 1, 10 und 15 definiert sind.The The object is achieved by a Method for generating protected Program code and a method for executing program code protected Solved computer program as well as a computer program product, such as they in the claims 1, 10 and 15 are defined.
Erfindungsgemäß wird wenigstens ein Programmcodeblock verschlüsselt in dem ausführbaren Programmcode abgelegt. Während der Ausführung des Programms wird der verschlüsselte Programmcode dann nicht mehr direkt ausgeführt, sondern zunächst über eine Entschlüsselungsfunktion entschlüsselt und danach ausgeführt.According to the invention at least encoded a program code block in the executable program code stored. While the execution of the Program becomes the encrypted Program code then no longer executed directly, but first over a decryption function decrypts and then executed.
Gemäß einer Ausgestaltung der Erfindung handelt es sich bei dem verschlüsselten Programmcodeblock um eine Lizenzüberprüfungsfunktion. Durch die Verschlüsselung dieser Funktion wird ein einfaches Abändern der Lizenzüberprüfung verhindert, sodass nicht mehr auf einfache Weise die Rückgabe eines stets gültigen Überprüfungsergebnisses bewirkt werden kann.According to one Embodiment of the invention is in the encrypted Program code block for a license verification function. By the encryption This feature prevents a simple change to the license check so that no longer causes the return of an always valid verification result in a simple manner can be.
Um die Schutzwirkung des erfindungsgemäßen Verfahrens zu erhöhen, können sowohl einzelne Programmcodeblöcke als auch der Programmcode als Ganzes durch die Verwendung von Prüfsummen oder Signaturen geschützt werden. Diese Prüfsummen oder Signaturen können dann vor der Ausführung des Programmcodeblocks oder des Programms auf Richtigkeit hin überprüft werden. Wird der gesamte Programmcode durch eine Signatur oder Prüfsumme geschützt, kann zum Beispiel ein zum Laden verwendetes separates Programm oder das geschützte Programm selber die Verifizierung der Signatur bzw. der Prüfsumme durchführen. Entsprechender Programmcode kann beispielsweise in einem beim Programmstart aufgerufenen Programmcodeblock enthalten sein.Around To increase the protective effect of the method according to the invention, both individual program code blocks as well as the program code as a whole by the use of checksums or Signatures protected become. These checksums or signatures can then before the execution the program code block or program for correctness. If the entire program code is protected by a signature or checksum for example, a separate program used for loading or the protected program yourself verify the signature or checksum. Correspondent Program code may be, for example, in a program called at startup Program code block.
Durch die Verwendung eines asymmetrischen Verschlüsselungsverfahren wird in einer vorteilhaften Ausgestaltung der Erfindung verhindert, dass eine unberechtigte Person veränderten Programmcode selber verschlüsselt und in den ausführbaren Code einschleust. Somit kann verhindert werden, dass ein Programmcodeblock eines Computerprogramms verändert wird.By The use of an asymmetric encryption method is in one advantageous embodiment of the invention prevents a unauthorized person changed Program code itself encrypted and in the executable Inject code. Thus it can be prevented that a program code block of a computer program changed becomes.
In einer weiteren vorteilhaften Ausgestaltung werden wenigstens zwei Programmcodeblöcke verschlüsselt, wobei ein erster verschlüsselter Programmcodeblock einen Verweis auf einen zweiten verschlüsselten Programmcodeblock aufweist. Dadurch liegt der Verweis auf den zweiten Programmcodeblock selbst nur in verschlüsselter Form vor, so dass er in einem disassemblierten Programm nicht ohne erheblichen Aufwand entdeckt werden kann.In In another advantageous embodiment, at least two Program code blocks encrypted being a first encrypted Program code block a reference to a second encrypted Program code block. This is the reference to the second Program code block itself only in encrypted form, so he in a disassembled program not without considerable effort can be discovered.
Weitere Einzelheiten und Ausgestaltungen der Erfindung sind in den Unteransprüchen angegeben.Further Details and embodiments of the invention are specified in the subclaims.
Die Erfindung wird nachfolgend an einem Ausführungsbeispiel anhand der Zeichnungen näher erläutert. In den Zeichnungen zeigen:The Invention will be described below with reference to an embodiment with reference to the drawings explained in more detail. In show the drawings:
Der
erste Programmcodeblock
Der
Programmcodeblock
Die
Verweise
Beim
Erreichen des Verweises
Nach
Entschlüsselung
des Programmcodeblocks
Der
zweite verschlüsselte
Programmcodeblock
In
beiden Fällen
liegt der Programmcodeblock
Aber
auch das Ersetzen der Verweise
Noch
schwieriger wäre
ein Entfernen beziehungsweise ein Ersetzen des verschlüsselten
Verweises
Da
unverschlüsselter
Programmcode in der Regel redundante Informationen enthält, ist
der verschlüsselte
Programmcode
Zur
Entschlüsselung
muss die Entschlüsselungsfunktion
D jedoch die Länge
des verschlüsselten
Programmcodes
Zur
Erhöhung
der Sicherheit des erfindungsgemäßen Verfahrens
wurde des Weiteren eine Prüfsumme
Der
Auffüllbereich
Beim
Laden und Entschlüsseln
des verschlüsselten
Programmcodeblocks
In
einem ersten Schritt
In
einem Schritt
In
einem Schritt
In
einem weiteren Schritt
In
einem Schritt
Alternativ kann auch ein symmetrisches Verschlüsselungsverfahren eingesetzt werden. Diese sind zwar unsicherer, haben jedoch den Vorteil, dass sie schneller sind als asymmetrische Verschlüsselungsverfahren. Somit bietet sich insbesondere bei Geräten mit geringer Rechenleistung die Verwendung symmetrischer Verschlüsselungsverfahren an. Selbstverständlich können auch kombinierte Lösungen eingesetzt werden, bei denen ein für ein symmetrisches Verschlüsselungsverfahren genutzter, verhältnismäßig kurzer Schlüssel mit Hilfe eines asymmetrischen Verschlüsselungsverfahren geschützt ist.alternative can also be used a symmetric encryption method become. Although these are less secure, they have the advantage of being faster than asymmetric encryption methods. Thus offers especially in devices With low computational power the use of symmetric encryption methods at. Of course can also combined solutions be used, where one for a symmetric encryption method used, relatively short key protected by means of an asymmetric encryption method.
Die
Struktur des verschlüsselten
Programmcodeblocks
In
einem Schritt
In
einem Schritt
In
einem Schritt
In
einem Schritt
Die
Ausführung
des Programmcodeblocks
Wurde
ein Verweis
In
einem Schritt
In
einem Schritt
Der
Verweis
Nach
Beenden der Ausführung
des unverschlüsselten
Programmcodeblocks
Ob
ein einmal entschlüsselter
Programmcodeblock
Beispielsweise
kann am Ende der Ausführung
eines entschlüsselten
Programmcodeblocks
Alternativ
kann die Entschlüsselungsfunktion D
auch eine Tabelle verwenden, in der Einträge auf bereits entschlüsselte Programmcodeblöcke
- 11
- Computerprogrammcomputer program
- 22
- Programmcodeblock (Programmhauptfunktion main)Program code block (Main program function main)
- 33
- Programmcodeblock (Programmfunktion A)Program code block (Program function A)
- 44
- Programmcodeblock (Programmfunktion B)Program code block (Program function B)
- 55
- Programmcodeblock (Lizenzüberprüfungsfunktion C)Program code block (License check function C)
- 6–86-8
- Verweisereferences
- 99
- geschütztes Computerprogrammprotected computer program
- 1010
- Programmcodeblock (Programmhauptfunktion main)Program code block (Main program function main)
- 1111
- Programmcodeblock (Entschlüsselungsfunktion D)Program code block (Decryption function D)
- 1212
- Programmcodeblock (Programmfunktion A)Program code block (Program function A)
- 1313
- verschlüsselter Programmcodeblock (Programmfunktion B)encrypted Program code block (program function B)
- 1414
- verschlüsselter Programmcodeblock (Lizenzüberprüfungsfunktion C)encrypted Program code block (license verification function C)
- 15–1715-17
- Verweisereferences
- 1919
- Längenangabelength specification
- 2020
- verschlüsselter Programmcodeencrypted program code
- 2121
- Prüfsummechecksum
- 2222
- Auffüllbereichpadding
- 41–4741-47
- Schritte des Verfahrens zum Erstellen von geschützem Programmcodesteps the process of creating protected program code
- 51–5751-57
- Schritte des Verfahrens zum Ausführen von geschütztem Programmcodesteps the method for performing protected program code
Claims (15)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE200510046696 DE102005046696B4 (en) | 2005-09-29 | 2005-09-29 | A method for generating protected program code and method for executing program code of a protected computer program and computer program product |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE200510046696 DE102005046696B4 (en) | 2005-09-29 | 2005-09-29 | A method for generating protected program code and method for executing program code of a protected computer program and computer program product |
Publications (2)
Publication Number | Publication Date |
---|---|
DE102005046696A1 true DE102005046696A1 (en) | 2007-04-12 |
DE102005046696B4 DE102005046696B4 (en) | 2009-11-05 |
Family
ID=37886815
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE200510046696 Expired - Fee Related DE102005046696B4 (en) | 2005-09-29 | 2005-09-29 | A method for generating protected program code and method for executing program code of a protected computer program and computer program product |
Country Status (1)
Country | Link |
---|---|
DE (1) | DE102005046696B4 (en) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080301771A1 (en) * | 2007-06-04 | 2008-12-04 | Takanao Kawai | Electronic device, application authentication method, application execution system, and computer readable medium containing executable program instruction |
DE102009019089A1 (en) * | 2009-04-20 | 2010-11-04 | Pilz Gmbh & Co. Kg | Method and device for creating a user program for a safety control |
CN104537320A (en) * | 2014-12-05 | 2015-04-22 | 深圳市雷赛软件技术有限公司 | Automatic encrypting method and system for chip |
EP3798873A1 (en) * | 2019-09-24 | 2021-03-31 | Siemens Aktiengesellschaft | Method for protecting a computer-implemented application from manipulation |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5530752A (en) * | 1994-02-22 | 1996-06-25 | Convex Computer Corporation | Systems and methods for protecting software from unlicensed copying and use |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7320075B2 (en) * | 2001-11-20 | 2008-01-15 | Safenet, Inc. | Software protection method utilizing hidden application code in a protection dynamic link library object |
CA2415334C (en) * | 2002-12-31 | 2012-04-24 | Protexis Inc. | System for persistently encrypting critical software data to control operation of an executable software program |
-
2005
- 2005-09-29 DE DE200510046696 patent/DE102005046696B4/en not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5530752A (en) * | 1994-02-22 | 1996-06-25 | Convex Computer Corporation | Systems and methods for protecting software from unlicensed copying and use |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080301771A1 (en) * | 2007-06-04 | 2008-12-04 | Takanao Kawai | Electronic device, application authentication method, application execution system, and computer readable medium containing executable program instruction |
DE102009019089A1 (en) * | 2009-04-20 | 2010-11-04 | Pilz Gmbh & Co. Kg | Method and device for creating a user program for a safety control |
US8910131B2 (en) | 2009-04-20 | 2014-12-09 | Pilz Gmbh & Co. Kg | Method and apparatus for generating an application program for a safety-related control unit |
CN104537320A (en) * | 2014-12-05 | 2015-04-22 | 深圳市雷赛软件技术有限公司 | Automatic encrypting method and system for chip |
EP3798873A1 (en) * | 2019-09-24 | 2021-03-31 | Siemens Aktiengesellschaft | Method for protecting a computer-implemented application from manipulation |
Also Published As
Publication number | Publication date |
---|---|
DE102005046696B4 (en) | 2009-11-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP2515499B1 (en) | Method for generating a cryptographic key for a secure digital data object on the basis of the current components of a computer | |
DE60127310T2 (en) | DEVICE FOR PROTECTING DIGITAL DATA | |
DE102009041176B4 (en) | A compiler system and method for compiling a source code into an encrypted machine language code | |
DE10392528T5 (en) | Microcode patch authentication | |
DE102009013384A1 (en) | System and method for providing a secure application fragmentation environment | |
DE102013105042A1 (en) | Safe flash programming of a secondary processor | |
DE102016205289A1 (en) | Method, processor and device for checking the integrity of user data | |
DE102012205689A1 (en) | Instruction encryption / decryption arrangement and method with iterative encryption / decryption updating | |
EP1798653B1 (en) | Method, computer program product and device for protecting a program comprising a function block | |
EP1271310B1 (en) | Method to extend application that is to be installed with an installation program with a function and a computer program product | |
EP2913772A1 (en) | Method and computer system for protecting a computer program against influence | |
EP1999521B1 (en) | Field device | |
DE102005046696B4 (en) | A method for generating protected program code and method for executing program code of a protected computer program and computer program product | |
EP2434424B1 (en) | Method for increasing the security of security-relevant online services | |
EP3552344B1 (en) | Bidirectionally linked blockchain structure | |
EP1439446A1 (en) | Method for extending a program through a copy protection function | |
EP2394232B1 (en) | Device and method for preventing unauthorized use and/or manipulation of software | |
EP1636700A1 (en) | Method for booting up a software in the boot sector of a programmable read-only memory | |
EP3497606B1 (en) | Individual encryption of control commands | |
EP3745287B1 (en) | Protection of a software application | |
EP3251281B1 (en) | Intrinsic authentication of program code | |
DE102014113441A1 (en) | Protection against software components by means of encryption | |
EP1318451B1 (en) | Method to execute a program on a computer | |
EP2569726B1 (en) | Method for checking whether program instructions have been executed by a portable terminal | |
EP3441898B1 (en) | Method and device for protecting software against unauthorised use |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
OP8 | Request for examination as to paragraph 44 patent law | ||
8364 | No opposition during term of opposition | ||
R084 | Declaration of willingness to licence | ||
R081 | Change of applicant/patentee |
Owner name: FUJITSU TECHNOLOGY SOLUTIONS INTELLECTUAL PROP, DE Free format text: FORMER OWNER: FUJITSU SIEMENS COMPUTERS GMBH, 80807 MUENCHEN, DE Effective date: 20111229 |
|
R082 | Change of representative |
Representative=s name: EPPING HERMANN FISCHER, PATENTANWALTSGESELLSCH, DE Effective date: 20111229 Representative=s name: EPPING HERMANN FISCHER PATENTANWALTSGESELLSCHA, DE Effective date: 20111229 |
|
R119 | Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee | ||
R079 | Amendment of ipc main class |
Free format text: PREVIOUS MAIN CLASS: G06F0021220000 Ipc: G06F0021100000 |