Reversing Android. Aïe, robot...



Documents pareils
Android 4 Les fondamentaux du développement d'applications Java

SECURIDAY 2013 Cyber War

TD/TP 1 Introduction au SDK d Android

Généralités sur le Langage Java et éléments syntaxiques.

PPM(A) Programmation sur Plateformes Mobiles (Android) Legond-Aubry Fabrice

Programmation des applications mobiles avec Android. 1 Inspiré du cours de Olivier Le Goaer

Chapitre 2. Classes et objets

Installation et prise en main

Les fondamentaux du développement d applications Java

Votre premier projet Android

Tutorial pour une application simple

Annexe : La Programmation Informatique

Héritage presque multiple en Java (1/2)

1.3 Gestion d'une application

Outils, langage et approche Android Une introduction. Nicolas Stouls lyon.fr

TP SIN Programmation sur androïde Support : eclipse

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

- TP Programmation Android - NFA024 Conservatoire National des Arts et Métiers

Edutab. gestion centralisée de tablettes Android

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

RMI le langage Java XII-1 JMF

TP au menu «UI ANDROID»

Initiation à JAVA et à la programmation objet.

Annexe Android Studio

Machines virtuelles. Brique ASC. Samuel Tardieu Samuel Tardieu (ENST) Machines virtuelles 1 / 40

TP1 : Initiation à Java et Eclipse

Développement sous Android

Encapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets.

Programmer en JAVA. par Tama

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

Polymorphisme, la classe Object, les package et la visibilité en Java... 1

Cours 1: Java et les objets

Java - la plateforme

FORMATION PcVue. Mise en œuvre de WEBVUE. Journées de formation au logiciel de supervision PcVue 8.1. Lieu : Lycée Pablo Neruda Saint Martin d hères

Cours Plugin Eclipse. Université Paris VI / Parcours STL / Master I Pierre-Arnaud Marcelot - Iktek - pamarcelot@iktek.com

TP1. Outils Java Eléments de correction

as Architecture des Systèmes d Information

Machines Virtuelles. et bazard autour. Rémi Forax

Chapitre 10. Les interfaces Comparable et Comparator 1

Plan du cours. Historique du langage Nouveautés de Java 7

Point sur les solutions de développement d apps pour les périphériques mobiles

Le stockage local de données en HTML5

Chapitre 1 Retour en arrière

Introduction ANDROID

Environnements de développement (intégrés)

Android en action. Abdelkader Lahmadi Université de Lorraine

UE Programmation Impérative Licence 2ème Année

Magento. Magento. Réussir son site e-commerce. Réussir son site e-commerce BLANCHARD. Préface de Sébastien L e p e r s

et Groupe Eyrolles, 2006, ISBN :

Épisode 2 : Les outils de développement Alain Menu édition 2.1, septembre 2013

Java Licence professionnelle CISII,

2 Grad Info Soir Langage C++ Juin Projet BANQUE

Warren PAULUS. Android SDK et Android x86

Optimiser pour les appareils mobiles

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

LANGAGUE JAVA. Public Développeurs souhaitant étendre leur panel de langages de programmation

Java pour le Web. Cours Java - F. Michel

Plate formes mobiles. Utilisation. Contexte 9/29/2010 IFC 2. Deux utilisations assez distinctes :

Gestion des différentes tailles d écran

Remote Method Invocation (RMI)

INITIATION AU LANGAGE JAVA

Premiers Pas en Programmation Objet : les Classes et les Objets

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Langage Java. Classe de première SI

Android. Présentation d Android. Florent Garin

Programmation Mobile Android Master CCI

Environnements de développement (intégrés)

La carte à puce. Jean-Philippe Babau

Java c est quoi? Java. Java. Java : Principe de fonctionnement 31/01/ Vue générale 2 - Mon premier programme 3 - Types de Programme Java

Une introduction à Java

Générer du code à partir d une description de haut niveau

[Projet S9] Rédacteurs & Contributeurs Entité Rédacteurs Contributeurs Imededdine HOSNI Olivier MARTY. Validation du document Nom Date Visa

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

Java Licence Professionnelle CISII,

JOnAS Day 5.1. Outils de développements

Programmation par composants (1/3) Programmation par composants (2/3)

Intégration de l interface graphique de Ptidej dans Eclipse

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

Documentation module hosting

CAHIER DES CHARGES D IMPLANTATION

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

1. Installation d'un serveur d'application JBoss:

Java 7 Les fondamentaux du langage Java

La technologie Java Card TM

l ACTUSÉCU est un magazine numérique rédigé et édité par les consultants du cabinet de conseil XMCO JUILLET 2015

Polycopié Cours Programmation Orientée Objet sous Java Programme : Filière SMI S5

Télécom Nancy Année

Conception d'un système d'information WEB avec UML Par Ass SERGE KIKOBYA

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

24/11/2011. Cours EJB/J2EE Copyright Michel Buffa. Plan du cours. EJB : les fondamentaux. Enterprise Java Bean. Enterprise Java Bean.

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

Stages ISOFT : UNE SOCIETE INNOVANTE. Contact : Mme Lapedra, stage@isoft.fr

Projet de développement

Programmation d'applications sur PDA

Technologies du Web. Créer et héberger un site Web. Pierre Senellart. Page 1 / 26 Licence de droits d usage

Projet Viticulture - TP 3 : bases de données distantes BTS Services informatiques aux organisations

inviu routes Installation et création d'un ENAiKOON ID

Transcription:

Reversing Android Aïe, robot... Meeting #Hackerzvoice 5 mars 2011

Plan (1/4) Système Android Dalvik VM Format de paquetage Structure d'un paquetage Ressources Stockage des ressources Strings Ressources graphiques Menus Manifeste 2

Plan (2/4) Première approche Dex2jar + jd-gui Full java Avantages & inconvénients Seconde approche Smali & baksmali Full smali Avantages & inconvénients 3

Plan (3/4) Langage smali Présentation Méthodes, types, et variables Instructions courantes Patching Modification de code Reconstruction d'apk Signature 4

Plan (4/4) Protections usuelles Analyse de protections d'applications du market Evaluation du niveau des protections Systèmes de protection Protectors android Google licensing Astuces anti-reverse Pistes à suivre Manipulation de fichiers DEX Techniques de protection des applications 5

Plan (1/4) Système Android Dalvik VM Format de paquetage Structure d'un paquetage Ressources Stockage des ressources Strings Ressources graphiques Menus Manifeste 6

Android OS pour smartphones, PDAs, et tablet Développé par une startup Racheté par Google Avantages SDK fourni par Google Outils de développement dédiés Plateforme opensource et ouverte Emulateur Android fourni Outils de dev basés sur Eclipse http://android.google.com 7

Dalvik VM Ecrite originellement par Dan Bornstein Porte le nom d'un village islandais VM employant un bytecode dérivé de celui de la JVM VM employant des registres (!= JVM) A partir d'android 2.2, intègre un JIT-compiler Intègre un cloisonnement des applications Intègre un système de «permissions» Pas de JAR, mais un fichier DEX Dalvik EXecutable 8

Dalvik VM Structure d'android (VM + système) 9

Dalvik VM Contraintes liées au reversing Bytecode spécifique à Dalvik Format de fichier DEX spécifique (mais connu) Debogage difficile Impossible de déboguer (a priori) sans les sources Utilisation d'un émulateur nécessaire Utilisation d'un vrai téléphone possible 10

Format de paquetage Android utilise des «APKs» Android PacKage Fichier au format ZIP Un APK contient Le fichier DEX (code exécutable de l'application) Un dossier contenant les ressources Graphismes Chaînes de caractères localisées Layouts Un dossier contenant les signatures des fichiers Applications signées 11

Format de paquetage Structure d'un APK dézippé AndroidManifest.xml classes.dex res/ drawable/ layout/ raw/ rml/ resources.arsc 12

Format de paquetage AndroidManifest.xml Définit les propriétés et activités de l'application Format XML encodé pour Android Illisible tel quel Le fichier de manifeste contient Les permissions nécessaires à l'application Les informations sur les activités Les informations sur les services 13

Format de paquetage Fichier classes.dex Fichier au format DEX contenant le code de l'application Le format DEX est connu Caractéristiques de DEX Chaînes de caractères mutualisées et stockées de manière unique (annuaire) Stockage des propriétés des classes de manière compacte Emploie certains types permettant de gagner de la place ULEB128 et SLEB128 Dictionnaire de valeurs Optimisé pour économiser de la place sur disque 14

Format de paquetage Android Asset Packaging Tool Outil nécessaire à l'analyse de paquetage Permet de Lister les ressources Lister les permissions Modifier un fichier APK Ajout/Suppresion de fichier Renommage Packager un APK 15

Format de paquetage Dexdump Outil du SDK «must-have» fourni par google! Permet de Désassembler des sections de code Afficher des informations sur les en-têtes Afficher des informations sur les méthodes Afficher des informations sur les types Maintenu par Google, pourquoi s'en priver? Axé sur l'analyse de classes.dex 16

Format DEX DEX Format d'exécutable de Dalvik Format de fichier connu et documenté Particularités de DEX Emploi de types «spéciaux» ULEB128 et SLEB128 Structures spécifiques à DEX et documentées (enfin, presque ;) Données indexées Ressemble à du.net en vraiment plus lite Index croisés 17

Plan (1/4) Système Android Dalvik VM Format de paquetage Structure d'un paquetage Ressources Stockage des ressources Strings Ressources graphiques Menus Manifeste 18

Ressources Ressources d'un APK Dictionnaires de textes (Strings) Internationalisation des applications Facilité de traduction Graphismes Centralisation des images Layouts Elements d'affichage structurés Fichiers de définition d'interface Peuvent contenir du texte (attributs) Menus Manifeste 19

Ressources XML Ressources XML encodé spécialement pour Android Illisible tel quel Des outils existent pour les décoder Aapt Apktool Eléments référencés par des ID sur 32 bits dans le code On va devoir faire la correspondance entre ID de ressource et contenu de la ressource Mapping nécessaire 20

Ressources Strings Stockées dans /res/values Fichier strings.xml Internationalisation Dossiers par locale Values-fr Values-en 21

Ressources Layouts Fichiers XML définissant les éléments graphiques Chargés par le code Méthode SetContentView de l'activité Remplacent avantageusement la création de l'interface par programmation Nombreux widgets disponibles Gestion native du redimensionnement Gestion des proportions Atributs précisant la visibilité des éléments Visibility = (GONE VISIBLE INVISIBLE) 22

Ressources Manifeste Fichier Manifest.xml Permet d'identifier l'activité principale Permet d'identifier les services 23

Plan (2/4) Première approche Dex2jar + jd-gui Full java Avantages & inconvénients Seconde approche Smali & baksmali Full smali Avantages & inconvénients 24

Dex2jar + jd-gui Principe L'outil dx convertit des fichiers.class en fichier DEX Le processus est réversible DEX JAR Java Outils Dex2jar Jd-gui Effectue le processus inverse (d'où le nom) Regénère le bytecode Java Désassembleur Java Cross-platform 25

Dex2jar + jd-gui Mode opératoire $ dex2jar Example.apk version:0.0.7.8-snapshot 2 [main] INFO pxb.android.dex2jar.v3.main - dex2jar Example.apk -> Example.apk.dex2jar.jar Done. $ jd-gui Example.apk.dex2jar.jar 26

Dex2jar + jd-gui Exemple de code désassemblé 27

Dex2jar + jd-gui Avantages Obtention du code java quasi original Simple d'emploi Analyse facilitée par l'éditeur Inconvénients Impossible de modifier quoique ce soit Constantes non résolues (valeurs entières) Ressources non décodées Identifiants de ressources présents sous forme numérique seule 28

Plan (2/4) Première approche Dex2jar + jd-gui Full java Avantages & inconvénients Seconde approche Smali & baksmali Full smali Avantages & inconvénients 29

Smali & baksmali Principe Désassemblage du bytecode Dalvik Production d'un code source smali Réassemblage du code source smali Production d'un nouvel APK Outil Smali Assembleur Baksmali Désassembleur Intégrés dans l'outil apktool 30

Smali & baksmali Mode opératoire Utilisation d'apktool $ apktool d Example.apk I: Baksmaling... I: Loading resource table... I: Decoding resources... I: Loading resource table from file: /home/xxxx/apktool/framework/1.apk I: Copying assets and libs... 31

Smali & baksmali Exemple de code produit 32

Smali & baksmali Exemple de mapping de ressources Propre à apktool (fichier /res/values/public.xml) <?xml version="1.0" encoding="utf-8"?> <resources> <public type="drawable" name="android_logo" id="0x7f020000" /> <public type="drawable" name="icon" id="0x7f020001" /> <public type="layout" name="main" id="0x7f030000" /> <public type="string" name="hello" id="0x7f040000" /> <public type="string" name="app_name" id="0x7f040001" /> <public type="id" name="serial_input" id="0x7f050000" /> <public type="id" name="serial" id="0x7f050001" /> <public type="id" name="serial_cracked" id="0x7f050002" /> <public type="id" name="cracked" id="0x7f050003" /> </resources> 33

Smali & baksmali Avantages Désassemblage ET réassemblage Permet de patcher le code Permet de reconstruire un APK Décode les ressources Inconvénients Langage Smali Beaucoup de fichiers générés Pas simple de s'y retrouver Pas simple de localiser le code intéressant 34

Plan (3/4) Langage smali Présentation Méthodes, types, et variables Instructions courantes Patching Modification de code Reconstruction d'apk Signature 35

Langage Smali Abus de langage Ce n'est pas un langage «smali» signifie «assembleur» en islandais Smali & baksmali utilisent la syntaxe Jasmin Plus précisemment Transposition du bytecode DEX en pseudoassembleur On va quand meme appeler ca «langage smali» Plus simple Pas forcément correct Mais ça ponce les mamans ours 36

Langage Smali Types La notation de type est particulière Une lettre précise le type Un complément peut préciser une classe, une interface, etc... Types standards V: Void (valide seulement pour les types de retour) Z: booléen B: octet (byte) S: short C: char I: int 37

Langage Smali Types (suite) Types standards (suite) J: long F: float D: double L<nom>: classe [<nom>: tableau d'éléments de type <nom> Méthodes Utilisent la description des types vue précédemment Type de retour précisé 38

Langage Smali Exemple de méthode smali.method public oncreate(landroid/os/bundle;)v Nom OnCreate Paramètre Instance de classe android.os.bundle Retourne Void 39

Langage Smali Exemple d'appel à une méthode invoke-virtual {p0, v0}, Lcom/hzv/crackoid/Crackoid;->findViewById(I)Landroid/view/View; Appelle une méthode virtuelle nommée findviewbyid Cette méthode prend en paramètre un entier, ici le contenu de la variable v0 Elle retourne une instance de la classe android.view.view Le paramètre p0 est une instance de classe de type com.hzv.crackoid.crackoid 40

Langage Smali Variables La VM Dalvik utilise des registres, et non la stack Il existe donc des registres définis Vx: registres dédiés Nombre de registres définis dans le code smali.locals 2 Ces registres peuvent contenir n'importe quel type de donnée 41

Langage Smali Instructions courantes invoke-virtual: appelle une méthode virtuelle iput-object: copie la valeur d'une variable dans un champ d'une instance de classe iget-object: copie la valeur d'un champ d'une instance de classe dans une variable new-instance: instancie une classe, et stocke la référence de l'instance dans une variable Move-result-object: stocke l'objet résultant d'un précédent appel dans une variable Approfondir http://pallergabor.uw.hu/androidblog/dalvik_opcodes.html 42

Plan (3/4) Langage smali Présentation Méthodes, types, et variables Instructions courantes Patching Modification de code Reconstruction d'apk Signature 43

Patching Modification du code Une fois le code intéressant localisé, On le modifie et on sauvegarde le fichier smali 44

Patching Reconstruction de l'apk Apktool à la rescousse! $ apktool b Crackoid I: Checking whether sources has changed... I: Smaling... I: Checking whether resources has changed... I: Building apk file... 45

Patching Signature de l'apk Un APK contient des signatures de fichiers Génération d'un keystore Keytool -genkeypair -keystore <keystore> Signature du fichier APK Jarsigner -verbose -keystore <keystore> <apk> <alias> $ jarsigner -verbose -keystore ~/android.keystore Crackoid.apk virtualabs Enter Passphrase for keystore: adding: META-INF/MANIFEST.MF adding: META-INF/VIRTUALA.SF adding: META-INF/VIRTUALA.RSA signing: res/drawable/android_logo.png signing: res/drawable/icon.png signing: res/layout/main.xml signing: AndroidManifest.xml signing: classes.dex signing: resources.arsc 46

Patching Le fichier APK est prêt à être installé NB: la clef publique utilisée pour la signature n'a pas été approuvée par Google Il faut accepter les sources d'applications inconnues Installation de l'apk avec adb $ adb install Crackoid.apk 121 KB/s (8770 bytes in 0.070s) pkg: /data/local/tmp/crackoid.apk Success $ 47

Patching Test de l'application patchée 48

Plan (4/4) Protections usuelles Analyse de protections d'applications du market Evaluation du niveau des protections Systèmes de protection Protectors android Google licensing Astuces anti-reverse Pistes à suivre Manipulation de fichiers DEX Techniques de protection des applications 49

Protections usuelles Mécanismes de protection Retour aux années 1990!! Pas d'obfuscation de code Pas de schéma complexe de protection Routines de vérification aisément modifiables Checks franchement idiots Analyse de deux applications du market DroidPod Shuffle Black (je ne sais même pas à quoi ca sert ) OfficeSuite (coûte cher en plus...) 50

Protections usuelles DroidShuffle Black Désassemblage avec apktool Un fichier de gestion de licence! LicMan.smali Plusieurs méthodes intéressantes check4key() getexpiretime() GetLicense() Analysons! 51

Méthode getlicense() Appel à check4key() check4key() Protections usuelles Variable locale v8 «unlocked» à False dès le départ On peut patcher cette méthode de manière à retourner toujours «unlocked» Suffisant pour forcer l'enregistrement! 52

Protections usuelles Modification de check4key().method private static check4key(landroid/content/context;)z.locals 1 const/4 v0, 0x1 return v0.end method 53

Protections usuelles Aperçu du résultat 54

Protections usuelles OfficeSuite Désassemblage avec apktool Dossier registration Contient la classe ActivationManager Méthodes intéressantes setactivated() isactivated() CheckActivation() Analysons! 55

Protections usuelles Activation Manager isactivated() Ouvre le fichier «.activated» Ferme ce fichier Si le fichier existe, alors l'application est «activée» setactivated() Crée le fichier «.activated» checkactivation() Vérifie une clef d'activation en ligne 56

Vérification en ligne Protections usuelles Contacte l'url suivante http://mobisystems.com/officesuitepro_keys2.php?imei= %1$s&key=%2$s Récupération du numéro de série du téléphone Clef calculée en fonction du numéro de série Accessoirement, donne l'imei à un service distant! Méthode checkactivation() Seulement appelée sur saisie de la clef. 57

Protections usuelles Contournement simple Réécriture de la méthode isactivated() Retourne toujours vrai (1).method public static isactivated(landroid/content/context;)z.locals 1.parameter "context" const/4 v0, 0x1 return v0.end method 58

Protections usuelles Contournement simple Modification de la méthode IsRegistered du fichier SerialNumber.smali Modification purement cosmétique :).method public IsRegistered()Z.registers 2.prologue.line 222 const/4 v0, 0x1 return v0.end method 59

Protections usuelles Office Suite 60

Protections usuelles Constat Certaines protections exploitent un enregistrement en ligne Génération de clef/licence Vérification en ligne Traçabilité des utilisateurs La grande majorité des vérifications effectuées par l'application sont aisément contournables Fuites d'information IMEI, etc En HTTP certaines fois! (la plupart?) 61

Protections usuelles Remarques Je n'ai pas désassemblé toutes les applications Trial du market Ce ne sont que deux exemples parmi d'autres Des études ont déjà été réalisées Démontrent les fuites d'information N'ont pas forcément évalué la solidité des protections Il existe des solutions à ce problème 62

Plan (4/4) Protections usuelles Analyse de protections d'applications du market Evaluation du niveau des protections Systèmes de protection Protectors android Google licensing Astuces anti-reverse Pistes à suivre Manipulation de fichiers DEX Techniques de protection des applications 63

Systèmes de protection Nécessité Nous avons vu que Il est facile de désassembler des applications On peut retrouver quasimment le code original (Java) Analyser sans trop de problème le code Protection d'algorithme Protection de Propriété Intellectuelle Techniques répandues Obfuscation des noms de méthodes Optimisation du bytecode 64

Obfuscation Systèmes de protection Modification des noms de champs, de méthodes et de classes (textuels) Le code ne fait référence qu'à des index de classes, de méthodes ou de champs Aucune référence textuelle Les textes sont simplement là à titre «informatif» (enfin, presque ) Les changer ne change foncièrement pas le fonctionnement du programme Visibilité Java Deux packages différents peuvent avoir deux classes de même nom possédant des méthodes de même noms... 65

Systèmes de protection Optimisation du bytecode Suppression de code non-atteint Évaluation du code Détection des sections de code non-atteintes Suppression du bytecode Effets de bord Peut supprimer du code atteint dynamiquement Objectifs Supprimer des informations inutilement présentes 66

Systèmes de protection Proguard Système fourni avec android Implémente l'obfuscation et l'optimisation de bytecode Configurable Fichier proguard.cfg Intégré à l'environnement de développement Eclipse Mal documenté... mais efficace! 67

Systèmes de protection Androguard Projet OpenSource Vise à fournir un framework python de manipulation de DEX et d'apk Intègre un protector Implémentation de l'obfuscation Obfuscation des entiers Formules mathématiques http://code.google.com/p/androguard/ 68

Systèmes de protection Google Licensing Framework permettant de gérer des licences Permet Développé par google Bibliothèque appelée par l'application De vérifier/valider une licence De dialoguer avec le Market (qui effectue les vérifications) D'empêcher tout usage frauduleux Inconvénients Dépend de l'implémentation faite par le développeur de l'application 69

Systèmes de protection Google Licensing (suite) Contournement toujours possible Patch de l'application N'implémente pas Validation selon le checksum de l'application Blacklist de licence Conclusion Le système de licensing de Google reste faible Le système est aussi faible que son maillon le plus faible On peut toujours désactiver les vérifications dans l'application (patching) 70

Systèmes de protection Astuces anti-reverse Effectuer de nombreux checks dans des endroits différents du code Encoder les chaînes de caractères Pas forcément compatible avec la localisation Plus difficile à mettre en œuvre Ca va être dur de faire plus Android ne fournit qu'un accès limité au système Impossible de bidouiller à partir de l'application en VM Certains éléments restent inaccessibles bien qu'essentiels à l'anti-debugging 71

Systèmes de protection mais une solution se profile Google a dévoilé son NDK Native Development Kit Le NDK permet de créer des bilbiothèques JNI Fichier.so Contient des méthodes implémentées en C/C++ Possibilité d'intégrer un système de gestion de licence via le NDK Avantages Plus «dur» à reverser (mais ca reste possible) Moins exposé aux néophytes (archi. spéciale) 72

Plan (4/4) Protections usuelles Analyse de protections d'applications du market Evaluation du niveau des protections Systèmes de protection Protectors android Google licensing Astuces anti-reverse Pistes à suivre Manipulation de fichiers DEX Techniques de protection des applications 73

Pistes à suivre Manipulation de DEX Le format DEX est complexe et vaste Il y a certainement des manipulations possibles Inspiration des manipulations du format PE Possibilité de «cacher» des informations Meillleure obfuscation de bytecode La manipulation du bytecode DEX en est à ses débuts Il y a certainement moyen d'atteindre des niveaux de protection identiques aux protectors d'exe 74

Bibliographie Opcodes Dalvik http://pallergabor.uw.hu/androidblog/dalvik_opcodes.html Format DEX http://www.netmite.com/android/mydroid/dalvik/docs/dex-format.html Apktool http://code.google.com/p/android-apktool/ Dex2jar http://code.google.com/p/dex2jar/ Site developpeur d'android http://developer.android.com/index.html 75

Questions Questions? 76

Remerciements Heurs, Trance, et ceux ayant testé et analysé des applis Android :) 77