Language selection

Search

Patent 2752259 Summary

Third-party information liability

Some of the information on this Web page has been provided by external sources. The Government of Canada is not responsible for the accuracy, reliability or currency of the information supplied by external sources. Users wishing to rely upon this information should consult directly with the source of the information. Content provided by external sources is not subject to official languages, privacy and accessibility requirements.

Claims and Abstract availability

Any discrepancies in the text and image of the Claims and Abstract are due to differing posting times. Text of the Claims and Abstract are posted:

  • At the time the application is open to public inspection;
  • At the time of issue of the patent (grant).
(12) Patent: (11) CA 2752259
(54) English Title: METHOD FOR PROTECTING THE SOURCE CODE OF A COMPUTER PROGRAM
(54) French Title: PROCEDE DE PROTECTION DU CODE SOURCE D'UN PROGRAMME D'ORDINATEUR
Status: Deemed expired
Bibliographic Data
(51) International Patent Classification (IPC):
  • G06F 21/14 (2013.01)
(72) Inventors :
  • DESCLAUX, FABRICE (France)
(73) Owners :
  • EUROPEAN AERONAUTIC DEFENCE AND SPACE COMPANY-EADS FRANCE (France)
(71) Applicants :
  • EUROPEAN AERONAUTIC DEFENCE AND SPACE COMPANY-EADS FRANCE (France)
(74) Agent: FASKEN MARTINEAU DUMOULIN LLP
(74) Associate agent:
(45) Issued: 2017-05-09
(86) PCT Filing Date: 2010-02-23
(87) Open to Public Inspection: 2010-09-02
Examination requested: 2015-01-20
Availability of licence: N/A
(25) Language of filing: French

Patent Cooperation Treaty (PCT): Yes
(86) PCT Filing Number: PCT/EP2010/052279
(87) International Publication Number: WO2010/097383
(85) National Entry: 2011-08-11

(30) Application Priority Data:
Application No. Country/Territory Date
0951162 France 2009-02-24

Abstracts

English Abstract

The invention relates to a method for protecting the source code of a computer program, comprising the following steps: translating said source code into a target code; using said target code to generate an object code; and applying an obfuscation program to protect said source code. According to the invention, the obfuscation step is performed after translating the source code into the target code and before generating said object code.


French Abstract




L' invention concerne un procédé de protection du code source
d'un programme d'ordinateur comportant les étapes suivantes : - traduire ledit

code source en un code cible, - générer à partir dudit code cible un code
objet, -
appliquer un programme d'obscurcissement pour protéger ledit code source.
Selon l'invention, l'étape d'obscurcissement est exécutée après la traduction
du
code source en code cible et avant la génération dudit code objet.



Claims

Note: Claims are shown in the official language in which they were submitted.


7
REVENDICATIONS
1. Procédé de
protection du code source
d'un programme d'ordinateur, ledit procédé étant
mis en uvre par ordinateur et comportant les
étapes suivantes :
a- traduire ledit code source en un code cible,
b- générer à partir dudit code cible un code
objet,
c- appliquer un programme d'obscurcissement pour
protéger ledit code source
dans lequel ledit programme
d'obscurcissement est exécutée après la
traduction du code source en code cible et avant
la génération dudit code objet et comporte les
étapes suivantes :
d- remplacer au moins une ligne dudit
programme d'ordinateur par une nouvelle ligne de
programme réalisant une opération qui fournit une
variable numérique utilisée par ledit programme
d'ordinateur ou une instruction dudit programme
d'ordinateur,
e- assembler une ligne du programme
d'ordinateur pour en obtenir les opcodes,
f- utiliser les opcodes obtenus comme
opérandes de l'opération fournissant la variable
numérique.

8
2. Procédé selon la revendication 1,
comportant en outre une étape d'optimisation
dudit code cible.
3. Procédé selon la revendication 2,
dans lequel ledit code source est écrit dans un
langage évolué de haut niveau d'abstraction et
ledit code cible est en langage assembleur.
4. Procédé selon l'une des
revendications 1 à 3, dans lequel ledit programme
d'obscurcissement consiste à modifier au moins
une ligne du code cible de manière à empêcher la
reproduction du code source par désassemblage du
code objet et par analyse du code cible obtenu
par le désassemblage.
5. Procédé selon la revendication 1
consistant à remplacer la valeur de ladite
variable numérique par le résultat de l'opération
dont l'exécution fournit ladite variable
numérique donnée.
6. Procédé selon la revendication 1
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).

9

7. Procédé selon la revendication 1,
dans lequel les étapes d) à e) sont répétées de
façon récursive.
8. Une mémoire lisible par ordinateur
stockant des instructions exécutables dans
l'ordinateur dont l'exécution permet d'obtenir
l'obscurcissement dudit programme conformément au
procédé selon la revendication 1.
9. Utilisation du procédé selon la
revendication 1 pour obscurcir ledit programme
d'ordinateur enregistré sur un support et destiné
à réaliser les fonctions d'un simulateur de vol
lorsqu'il est exécuté par un ordinateur.

Description

Note: Descriptions are shown in the official language in which they were submitted.



CA 02752259 2011-08-11
WO 2010/097383 PCT/EP2010/052279
PROCÉDÉ DE PROTECTION DU CODE SOURCE D'UN
PROGRAMME D'ORDINATEUR

DESCRIPTION
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.


CA 02752259 2011-08-11
WO 2010/097383 PCT/EP2010/052279
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.

En outre, dans les techniques de l'art
antérieur, les packers agissent sur la version
binaire du programme compilé. Ceci ne permet pas de
retrouver l'information sémantique ayant servie à
l'obscurcissement. Ces packers peuvent agir également

sur le programme source. Un inconvénient de cette
méthode résulte du fait que l'obscurcissement qui en
résulte n'est pas fiable et peut être tronqué par la
phase de compilation/optimisation.

Un but de l'invention est de réaliser un
obscurcissement simple et efficace et indépendant du
langage source du programme à obscurcir.
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 consistant à insérer des


CA 02752259 2011-08-11
WO 2010/097383 PCT/EP2010/052279
3
étapes de traitement avant la génération du code objet
de sorte que l'obscurcissement agisse sur le langage
machine généré après optimisation.

Ce procédé comporte les étapes suivantes

- traduire le code source du programme à obscurcir en
un code cible,

- générer à partir dudit code cible un code objet,

- appliquer un programme d'obscurcissement pour
protéger ledit code source,

Selon l'invention, l'étape
d'obscurcissement est exécutée après la traduction du
code source en code cible et avant la génération dudit
code objet.
En outre, ledit programme d'obscurcissement
comporte une étape d'optimisation dudit code cible.
Préférentiellement, ledit code source est

écrit dans un langage évolué de haut niveau
d'abstraction et ledit code cible est en langage
assembleur.

Dans un mode préféré de réalisation, le
programme d'obscurcissement consiste à modifier au
moins une ligne du code cible de manière à empêcher la
reproduction du code source par désassemblage du code
objet et par analyse du code cible obtenu par ce
désassemblage.

A cet effet, ledit programme
d'obscurcissement 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,


CA 02752259 2011-08-11
WO 2010/097383 PCT/EP2010/052279
4
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 par une nouvelle ligne de programme réalisant
ladite opération.

Selon une autre caractéristique, 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.

Dans une première variante, la valeur de
ladite variable numérique V est ensuite remplacée par
le résultat de l'opération préalablement définie.

Dans une autre variante, le codage
numérique de ladite instruction est remplacé par
l'adresse mémoire pointée par l'opération préalablement
définie.

Les étapes a), b) et c) sont répétées de
façon récursive.

Le procédé selon l'invention est mis en
oeuvre par 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
conformément aux étapes a) b) et c).
Le procédé selon l'invention peut être
utilisé 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é
par un ordinateur.


CA 02752259 2011-08-11
WO 2010/097383 PCT/EP2010/052279
BREVE 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

5 référence à la figure annexée illustrant les étapes
essentielles du procédé.

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.

La figure annexée illustre les étapes
essentielles du procédé selon l'invention.

L'étape 2 consiste à trouver dans la chaine
de compilation existante l'étape de compilation du code
source au code objet.

L'étape 4 consiste à insérer dans l'étape
de compilation les étapes 6, 8 et 10.

L'étape 6 consiste à générer des fichiers
en langage assembleur à partir des fichiers en langage


CA 02752259 2011-08-11
WO 2010/097383 PCT/EP2010/052279
6
source tout en préservant les options d'optimisation
associées à la phase de compilation.

L'étape 8 consiste à appliquer le programme
d'obscurcissement aux fichiers en langage assembleur
pour générer des fichiers en langages assembleur

obscurcis. Dans ce cas, le programme d'obscurcissement
assure une fonction similaire à celle d'un optimiseur
de code.
L'étape 10 consiste à générer les fichiers
objets à partir des fichiers en langage assembleur.
L'insertion du programme obscurcissant a un

impact très faible sur un projet en développement. En
effet, la seule modification apportée à la chaîne de
compilation est l'ajout d'une instruction appelant le

programme obscurcissant lors de la génération du
fichier en langage machine. Cela est réalisé en
spécifiant une option dans la ligne de commande du
compilateur. Le programme obscurcissant utilise ensuite
les informations contenues dans le fichier en langage

machine généré, l'obscurcit, et régénère un fichier en
langage machine, qui sera ensuite repris dans les
étapes de compilations suivantes.

Cette solution rend l'obscurcissement
indépendant du langage source. De plus le programme
obscurcissant agit au plus près du langage machine,

avec toutefois un bon niveau d'informations, et donc
permet un obscurcissement précis.

Representative Drawing
A single figure which represents the drawing illustrating the invention.
Administrative Status

For a clearer understanding of the status of the application/patent presented on this page, the site Disclaimer , as well as the definitions for Patent , Administrative Status , Maintenance Fee  and Payment History  should be consulted.

Administrative Status

Title Date
Forecasted Issue Date 2017-05-09
(86) PCT Filing Date 2010-02-23
(87) PCT Publication Date 2010-09-02
(85) National Entry 2011-08-11
Examination Requested 2015-01-20
(45) Issued 2017-05-09
Deemed Expired 2021-02-23

Abandonment History

There is no abandonment history.

Payment History

Fee Type Anniversary Year Due Date Amount Paid Paid Date
Application Fee $400.00 2011-08-11
Maintenance Fee - Application - New Act 2 2012-02-23 $100.00 2011-08-11
Registration of a document - section 124 $100.00 2012-05-18
Maintenance Fee - Application - New Act 3 2013-02-25 $100.00 2013-02-04
Maintenance Fee - Application - New Act 4 2014-02-24 $100.00 2014-02-03
Request for Examination $800.00 2015-01-20
Maintenance Fee - Application - New Act 5 2015-02-23 $200.00 2015-01-21
Maintenance Fee - Application - New Act 6 2016-02-23 $200.00 2016-01-26
Maintenance Fee - Application - New Act 7 2017-02-23 $200.00 2017-02-10
Final Fee $300.00 2017-03-21
Maintenance Fee - Patent - New Act 8 2018-02-23 $200.00 2018-02-13
Maintenance Fee - Patent - New Act 9 2019-02-25 $200.00 2019-02-11
Maintenance Fee - Patent - New Act 10 2020-02-24 $250.00 2020-02-10
Owners on Record

Note: Records showing the ownership history in alphabetical order.

Current Owners on Record
EUROPEAN AERONAUTIC DEFENCE AND SPACE COMPANY-EADS FRANCE
Past Owners on Record
None
Past Owners that do not appear in the "Owners on Record" listing will appear in other documentation within the application.
Documents

To view selected files, please enter reCAPTCHA code :



To view images, click a link in the Document Description column. To download the documents, select one or more checkboxes in the first column and then click the "Download Selected in PDF format (Zip Archive)" or the "Download Selected as Single PDF" button.

List of published and non-published patent-specific documents on the CPD .

If you have any difficulty accessing content, you can call the Client Service Centre at 1-866-997-1936 or send them an e-mail at CIPO Client Service Centre.


Document
Description 
Date
(yyyy-mm-dd) 
Number of pages   Size of Image (KB) 
Abstract 2011-08-11 2 75
Claims 2011-08-11 3 62
Drawings 2011-08-11 1 11
Representative Drawing 2011-08-11 1 9
Description 2011-08-11 6 195
Cover Page 2011-10-07 2 39
Claims 2016-04-21 3 67
PCT 2011-08-11 22 803
Assignment 2011-08-11 4 123
Fees 2013-02-04 1 39
Assignment 2012-05-18 3 69
Fees 2014-02-03 1 33
Prosecution-Amendment 2015-01-20 2 55
Examiner Requisition 2015-10-27 3 206
Amendment 2016-04-21 7 203
Final Fee 2017-03-21 2 55
Representative Drawing 2017-04-10 1 6
Cover Page 2017-04-10 1 36