Skip to the content.

Reverse Engineering and Malware Analysis

Dynamic analysis

CAPE is the captain now, Captain Jack Sparrot circa 1588

Android

Pour décompresser une sauvegarde Android non chiffrée :

# ajoute un header tar pour pouvoir extraire l'archive
(printf "\x1f\x8b\x08\x00\x00\x00\x00\x00"; tail -c +25 backup.ab) | tar -xzvf -

Pour décompiler :

Emulateur Android :

# lister les images d'émulateurs existants
emulator -list-avds

# lancer l'image avec le noyau original
emulator -avd Pixel_4_API_29

# lancer l'image à froid avec un autre noyau
emulator -avd Pixel_4_API_29 -kernel bzImage -wipe-data

Debugger

Pour lancer :

gdb <binaire>
Commande Description
p Prints the value of a given expression.
p/x affiche en hexadécimal
x Displays the memory contents at a given address using the specified format.
x/8x affiche 8 octets en hexadecimal
x/8i affiche 8 instructions en assembleur
macro define offsetof(t, f) &((t *) 0)->f définit une macro nommée offsetof
# afficher l'adresse d'une fonction/variable
(gdb) p [fonction/&variable]

# afficher le contenu d'une fonction en hexadécimal
(gbd) x/8x [fonction]

# afficher le contenu d'une fonction en assembleur
(gbd) x/4i [fonction]

# afficher les champs d'une structure S
(gdb) pt struct S
(gdb) pt/o struct S

# afficher l'offset d'un champ F dans une structure S
(gdb) p offsetof(struct S, F)