FR2942558A1 - Procede d'obscurcissement d'un programme d'ordinateur. - Google Patents
Procede d'obscurcissement d'un programme d'ordinateur. Download PDFInfo
- Publication number
- FR2942558A1 FR2942558A1 FR0951161A FR0951161A FR2942558A1 FR 2942558 A1 FR2942558 A1 FR 2942558A1 FR 0951161 A FR0951161 A FR 0951161A FR 0951161 A FR0951161 A FR 0951161A FR 2942558 A1 FR2942558 A1 FR 2942558A1
- Authority
- FR
- France
- Prior art keywords
- program
- value
- instruction
- line
- variable
- 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 25
- 238000004590 computer program Methods 0.000 title claims abstract description 14
- 230000006870 function Effects 0.000 description 3
- 230000009466 transformation Effects 0.000 description 2
- 238000000844 transformation Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 230000006837 decompression Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000004088 simulation 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/14—Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
Abstract
L'invention concerne un procédé d'obscurcissement d'un programme d'ordinateur. Ce procédé comporte les étapes suivantes : a - sélectionner une variable numérique V utilisée par ledit programme ou une instruction dudit programme utilisant ladite valeur numérique V, b - définir au moins une opération dont l'exécution fournit ladite valeur numérique V, c - substituer au moins une ligne dudit programme utilisant la variable numérique V par au moins une nouvelle ligne de programme réalisant l'opération fournissant la valeur de ladite variable numérique V.
Description
PROCÉDÉ D'OBSCURCISSEMENT D'UN PROGRAMME D'ORDINATEUR DOMAINE TECHNIQUE L'invention se situe dans le domaine de la protection des données et des programmes d'ordinateur et concerne plus spécifiquement un procédé d'obscurcissement d'un programme d'ordinateur afin d'en empêcher le désassemblage, c'est-à-dire la reconstruction du code source à partir du code exécutable, et/ou la modification (patch) par des personnes non autorisées. L'invention concerne également un programme d'ordinateur enregistré sur un support et comportant des lignes d'instructions qui lorsqu'elles sont exécutées par un ordinateur permettent d'obtenir l'obscurcissement dudit programme. L'invention concerne également une utilisation du procédé selon l'invention pour obscurcir un programme d'ordinateur enregistré sur un support et destiné à réaliser les fonctions d'un simulateur de vol lorsqu'il est exécuté sur un ordinateur. ÉTAT DE LA TECHNIQUE ANTÉRIEURE Les techniques d'obscurcissement de programmes d'ordinateur connues sont essentiellement basées sur l'utilisation d'utilitaires appelés packers dont la fonction consiste à compresser le programme exécutable (.exe, .dll, .ocx, etc...) et à le crypter simultanément. 2 Les packers sont donc constitués de deux parties . - la routine de compression/cryptage, extérieur au programme compressé ; - la routine de décompression/décryptage embarquée dans le programme compressé. Les "packers" sont plus adaptés à la protection contre la copie qu'à l'obscurcissement des programmes. En outre, il existe des outils logiciels appelés "dépackers" qui sont capables de supprimer automatiquement la protection réalisée sur un programme au moyen d'un packer. Par ailleurs, les packers introduisent des transformations sur le programme à protéger qui en complexifient l'exécution.
Un but de l'invention est de réaliser un obscurcissement simple et efficace d'un programme sans en complexifier l'exécution. Un autre but de l'invention est de masquer les transformations d'un programme.
EXPOSÉ DE L'INVENTION Ces buts sont atteints au moyen d'un procédé d'obscurcissement d'un programme d'ordinateur comportant les étapes suivantes : a - sélectionner une variable numérique V 25 utilisée par ledit programme ou une instruction dudit programme utilisant ladite valeur numérique V, b - définir au moins une opération dont l'exécution fournit ladite valeur numérique V, c - substituer au moins une ligne dudit 30 programme utilisant la variable numérique V par au moins une nouvelle ligne de programme réalisant 3 l'opération fournissant la valeur de ladite variable numérique V. Dans un mode préféré de réalisation, le procédé selon l'invention comporte en outre une étape consistant assembler la nouvelle ligne de programme pour en obtenir les opcodes et à utiliser les opcodes obtenus comme opérandes de l'opération fournissant la valeur numérique V. En outre, le procédé selon l'invention comporte une étape consistant à remplacer la valeur de ladite variable numérique V par le résultat de l'opération définie à l'étape b) Grâce au procédé selon l'invention, il est impossible de distinguer entre les instructions du programme et les données utilisées par ces instructions. Dans une première variante de mise en oeuvre du procédé de l'invention, le codage numérique de l'instruction utilisant la valeur numérique V est remplacé par l'adresse mémoire pointée par l'opération dont l'exécution fournit ladite valeur numérique V. Dans le mode préféré de mise en oeuvre, les étapes a), b) et c) du procédé selon l'invention sont répétées de façon récursive.
BRÈVE DESCRIPTION DES DESSINS D'autres caractéristiques et avantages de l'invention ressortiront de la description qui va suivre, prise à titre d'exemple non limitatif, en référence à figure annexée illustrant les étapes essentielles du procédé. 4 MODES DE RÉALISATION PARTICULIERS L'invention s'applique à l'obscurcissement d'un programme d'ordinateur enregistré sur un support et destiné à réaliser, lorsqu'il est exécuté par un ordinateur, des fonctions de simulation, des traitements de données de sécurité, ou encore de gestion de processus industriels. De manière générale, le procédé selon l'invention est applicable à tous les programmes d'ordinateur comportant une pluralité de lignes d'instructions écrites dans un langage source et destiné à être traduit par un compilateur en un langage cible. Le langage source peut être par exemple un langage de programmation de haut niveau d'abstraction et le langage cible est un langage d'assemblage ou langage machine appelé code objet. Dans un exemple particulier, le procédé selon l'invention est utilisé pour obscurcir un programme d'ordinateur représentant un simulateur de vol. La figure annexée illustre les étapes essentielles du procédé selon l'invention. A l'étape 2, on sélectionne une ligne particulière du code source.
Préférentiellement, on sélectionne une ligne comportant une instruction ou une donnée essentielle du programme que l'on souhaite masquer A l'étape 4, on vérifie que la ligne sélectionnée peut être assemblée indépendamment des autres lignes du code source.
Si oui, on exécute l'assemblage de la ligne sélectionnée et on la remplace par ces opcodes. Sinon, on re-sélectionne une ligne comportant une instruction ou une donnée essentielle du 5 programme que l'on souhaite masquer et on exécute l'étape 4. A l'étape 8, on choisit une variable numérique V ou une instruction avec une valeur numérique V. A l'étape 10, on définit une opération dont l'exécution fournit ladite valeur numérique V et on substitue au moins une ligne du programme à masquer par une nouvelle ligne de programme réalisant ladite opération. A l'étape 12, on génère le code assembleur représentant l'opération définie à l'étape 10. Dans une première variante de mise en oeuvre du procédé selon l'invention représenté par l'étape 14, si V est une variable numérique, on remplace 20 l'initialisation de ladite variable par l'expression qui permet de l'obtenir. Dans une autre variante représentée par l'étape 16, si V est une valeur numérique constante, on place le code assembleur représentant l'opération 25 définie à l'étape 10 avant l'instruction choisie à l'étape 8 et on remplace la valeur numérique V par le registre ou l'adresse mémoire contenant le résultat de l'opération définie à l'étape 10. Les deux variantes de mise en oeuvre sont 30 illustrées respectivement par le premier exemple et le deuxième exemple décrits ci-après.
15 6 Dans le premier exemple, le premier code montre que la valeur numérique 0x12 est remplacée par un calcul utilisant l'élément "non-numérique" situé à l'adresse 0x2, dans ce cas un opcode d'instruction 0x89 auquel il retire 0x77 pour retrouver la valeur 0x12. Le code original est le suivant : 00000002 89ca mov edx, ecx 00000012 83c612 add esi, 0x12 Le code modifié par le procédé selon l'invention est le suivant : 00000002 89ca mov edx, ecx 00000012 0fb63d02000000 movzx edi, byte ptr[0x2] 00000019 83ef77 sub edi, 00000077 0000001c Olfe add esi, edi Dans le deuxième exemple, on remplace une valeur globale située à l'adresse 0x2000 valant 0x11223344 par la valeur 0xec53f375 à laquelle le code soustrait un élément non numérique. Dans ce cas, les opcodes des instructions à l'adresse 0x4 et 0x6 valant respectivement 31c0 et 31db résultent à 0x11223344, c'est à dire la valeur originale. Le code original est : 00000004 31c0 xor eax, eax 00000006 31db xor ebx, ebx 00000008 90 nop 00000009 8b3d00000000 mov edi, [0x2000] 0000000f 83ff12 cmp edi, 00000012 00002000 44332211 global value = 0x1122334430 modifié par le procédé selon Le code l'invention est : 00000004 31c0 xor 00000006 31db 00000008 90 00000009 8b3d00200000 0000000f 2b3d04000000 00000015 83ff12 00002000 75f353ec eax, eax xor ebx, ebx nop mov edi, [0x2000] sub edi, [0x4] cmp edi, 0x12 global value = 0xec53f37.10
Claims (5)
- REVENDICATIONS1. Procédé d'obscurcissement d'un programme d'ordinateur, caractérisé par les étapes suivantes : a - sélectionner une variable numérique V utilisée par ledit programme ou une instruction dudit programme utilisant ladite valeur numérique V, b - définir au moins une opération dont l'exécution fournit ladite valeur numérique V, c - substituer au moins une ligne dudit programme utilisant la variable numérique V par au moins une nouvelle ligne de programme réalisant l'opération fournissant la valeur de ladite variable numérique V.
- 2. Procédé selon la revendication 1 comportant en outre une étape consistant assembler la nouvelle ligne de programme pour en obtenir les opcodes et à utiliser les opcodes obtenus comme opérandes de l'opération fournissant la valeur numérique V.
- 3. Procédé selon la revendication 2 consistant à remplacer la valeur de ladite variable numérique V par le résultat de l'opération définie à l'étape b).
- 4. Procédé selon la revendication 2 consistant à remplacer le codage numérique de ladite instruction par l'adresse mémoire pointée par l'opération définie à l'étape b). 5 10 . Procédé selon l'une des revendications 1 à 4, dans lequel les étapes a), b) et c) sont répétées de façon récursive. 6. Programme d'ordinateur enregistré sur un support et comportant des lignes d'instructions permettant d'obtenir l'obscurcissement dudit programme conformément au procédé selon l'une des revendications 1 à
- 5. 7. Application de la revendication 6 sur un simulateur de vol.
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR0951161A FR2942558B1 (fr) | 2009-02-24 | 2009-02-24 | Procede d'obscurcissement d'un programme d'ordinateur. |
EP10709452A EP2401693A1 (fr) | 2009-02-24 | 2010-02-23 | Procédé d'obscurcissement d'un programme d'ordinateur. |
US13/201,503 US9239913B2 (en) | 2009-02-24 | 2010-02-23 | Method for obfuscating a computer program |
CA2752339A CA2752339C (fr) | 2009-02-24 | 2010-02-23 | Procede d'obscurcissement d'un programme d'ordinateur |
PCT/EP2010/052276 WO2010097382A1 (fr) | 2009-02-24 | 2010-02-23 | Procédé d'obscurcissement d'un programme d'ordinateur. |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR0951161A FR2942558B1 (fr) | 2009-02-24 | 2009-02-24 | Procede d'obscurcissement d'un programme d'ordinateur. |
Publications (2)
Publication Number | Publication Date |
---|---|
FR2942558A1 true FR2942558A1 (fr) | 2010-08-27 |
FR2942558B1 FR2942558B1 (fr) | 2014-05-30 |
Family
ID=40852490
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
FR0951161A Expired - Fee Related FR2942558B1 (fr) | 2009-02-24 | 2009-02-24 | Procede d'obscurcissement d'un programme d'ordinateur. |
Country Status (5)
Country | Link |
---|---|
US (1) | US9239913B2 (fr) |
EP (1) | EP2401693A1 (fr) |
CA (1) | CA2752339C (fr) |
FR (1) | FR2942558B1 (fr) |
WO (1) | WO2010097382A1 (fr) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10068070B2 (en) * | 2015-05-05 | 2018-09-04 | Nxp B.V. | White-box elliptic curve point multiplication |
US20160328539A1 (en) * | 2015-05-05 | 2016-11-10 | Nxp B.V. | Obscuring Software Code With Split Variables |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1999001815A1 (fr) * | 1997-06-09 | 1999-01-14 | Intertrust, Incorporated | Techniques d'obscurcissement pour augmenter la securite de logiciels |
WO2005020068A2 (fr) * | 2003-08-20 | 2005-03-03 | Macrovision Europe Limited | Occultation de code et controle de processeur par emulation |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7770016B2 (en) * | 1999-07-29 | 2010-08-03 | Intertrust Technologies Corporation | Systems and methods for watermarking software and other media |
US7430670B1 (en) * | 1999-07-29 | 2008-09-30 | Intertrust Technologies Corp. | Software self-defense systems and methods |
US7757097B2 (en) * | 1999-09-03 | 2010-07-13 | Purdue Research Foundation | Method and system for tamperproofing software |
US7287166B1 (en) * | 1999-09-03 | 2007-10-23 | Purdue Research Foundation | Guards for application in software tamperproofing |
US8220058B2 (en) * | 2003-09-25 | 2012-07-10 | Oracle America, Inc. | Rendering and encryption engine for application program obfuscation |
WO2006115219A1 (fr) * | 2005-04-21 | 2006-11-02 | Matsushita Electric Industrial Co., Ltd. | Dispositif et procede rendant illisible un programme |
WO2007091558A1 (fr) * | 2006-02-06 | 2007-08-16 | Matsushita Electric Industrial Co., Ltd. | Brouilleur de programme |
EP2022207B1 (fr) * | 2006-05-31 | 2018-10-10 | Orange | Procédé cryptographique à chiffrement et révocation intégrés, système, dispositif et programmes pour la mise en oeuvre du procédé |
WO2008010508A1 (fr) * | 2006-07-18 | 2008-01-24 | Panasonic Corporation | dispositif de génération de commande |
US8321666B2 (en) * | 2006-08-15 | 2012-11-27 | Sap Ag | Implementations of secure computation protocols |
EP1947584B1 (fr) * | 2006-12-21 | 2009-05-27 | Telefonaktiebolaget LM Ericsson (publ) | Dissimulation de code de programme informatique |
JP4905480B2 (ja) * | 2009-02-20 | 2012-03-28 | 富士ゼロックス株式会社 | プログラム難読化プログラム及びプログラム難読化装置 |
-
2009
- 2009-02-24 FR FR0951161A patent/FR2942558B1/fr not_active Expired - Fee Related
-
2010
- 2010-02-23 CA CA2752339A patent/CA2752339C/fr not_active Expired - Fee Related
- 2010-02-23 US US13/201,503 patent/US9239913B2/en not_active Expired - Fee Related
- 2010-02-23 EP EP10709452A patent/EP2401693A1/fr not_active Withdrawn
- 2010-02-23 WO PCT/EP2010/052276 patent/WO2010097382A1/fr active Application Filing
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1999001815A1 (fr) * | 1997-06-09 | 1999-01-14 | Intertrust, Incorporated | Techniques d'obscurcissement pour augmenter la securite de logiciels |
WO2005020068A2 (fr) * | 2003-08-20 | 2005-03-03 | Macrovision Europe Limited | Occultation de code et controle de processeur par emulation |
Non-Patent Citations (2)
Title |
---|
COHEN F B: "OPERATING SYSTEM PROTECTION THROUGH PROGRAM EVOLUTION", COMPUTERS & SECURITY, ELSEVIER SCIENCE PUBLISHERS. AMSTERDAM, NL, vol. 12, no. 6, 1 October 1993 (1993-10-01), pages 565 - 584, XP000415701, ISSN: 0167-4048 * |
COLLBERG C S ET AL: "Watermarking, tamper-proofing, and obfuscation - tools for software protection", IEEE TRANSACTIONS ON SOFTWARE ENGINEERING, IEEE SERVICE CENTER, LOS ALAMITOS, CA, US, vol. 28, no. 8, 1 August 2002 (2002-08-01), pages 735 - 746, XP011094684, ISSN: 0098-5589 * |
Also Published As
Publication number | Publication date |
---|---|
EP2401693A1 (fr) | 2012-01-04 |
WO2010097382A1 (fr) | 2010-09-02 |
CA2752339A1 (fr) | 2010-09-02 |
US20120110349A1 (en) | 2012-05-03 |
US9239913B2 (en) | 2016-01-19 |
CA2752339C (fr) | 2018-01-02 |
FR2942558B1 (fr) | 2014-05-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CA2752259C (fr) | Procede de protection du code source d'un programme d'ordinateur | |
KR102433011B1 (ko) | Apk 파일 보호 방법, 이를 수행하는 apk 파일 보호 시스템, 및 이를 저장하는 기록매체 | |
Rahimian et al. | On the reverse engineering of the citadel botnet | |
CN107273723B (zh) | 一种基于so文件加壳的Android平台应用软件保护方法 | |
Zhang et al. | Android application forensics: A survey of obfuscation, obfuscation detection and deobfuscation techniques and their impact on investigations | |
CN105550581B (zh) | 一种恶意代码检测方法及装置 | |
Jain et al. | Enriching reverse engineering through visual exploration of Android binaries | |
CN104951674A (zh) | 用于应用程序的信息隐藏方法 | |
CN105989252A (zh) | 一种针对函数级别加壳的脱壳方法及系统 | |
Cheng et al. | DynOpVm: VM-based software obfuscation with dynamic opcode mapping | |
CA2752339C (fr) | Procede d'obscurcissement d'un programme d'ordinateur | |
KR102459774B1 (ko) | Dll 파일 암호화 방법, 이를 수행하는 dll 파일 암호화 시스템, 및 이를 저장하는 기록매체 | |
Schrittwieser et al. | Covert Computation—Hiding code in code through compile-time obfuscation | |
Chetry et al. | Memory forensics analysis for investigation of online crime-a review | |
CN107209815B (zh) | 用于使用返回导向编程的代码混淆的方法 | |
Bhojani | Malware analysis | |
FR2977342A1 (fr) | Verification d'integrite d'un programme execute par un circuit electronique | |
JP2013065237A (ja) | モジュールの暗号化/復号化プログラム | |
CN105574409B (zh) | 一种注入代码提取方法及装置 | |
Vidyarthi et al. | Identifying ransomware-specific properties using static analysis of executables | |
US8205263B1 (en) | Systems and methods for identifying an executable file obfuscated by an unknown obfuscator program | |
FR3056787A1 (fr) | Methode de protection d’un programme logiciel par offuscation par virtualisation | |
JP5389734B2 (ja) | 抽出装置及び抽出方法 | |
Tsai et al. | Physical forensic acquisition and pattern unlock on Android smart phones | |
Lim et al. | Mal-Xtract: hidden code extraction using memory analysis |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PLFP | Fee payment |
Year of fee payment: 8 |
|
PLFP | Fee payment |
Year of fee payment: 9 |
|
PLFP | Fee payment |
Year of fee payment: 10 |
|
PLFP | Fee payment |
Year of fee payment: 12 |
|
PLFP | Fee payment |
Year of fee payment: 13 |
|
ST | Notification of lapse |
Effective date: 20221005 |