Reverse
Table of Contents
1. Mon setup
Gentoo avec Ghidra pour pouvoir désassembler et décompiler. GDB pour pouvoir exécuter et faire de l'exécution pas à pas. LXD pour avoir une VM Windows 10.
2. Premiers check à faire
strings
: affiche le binaire avec les chaînes de caractères trouvables dedans. Peut contenir un flag.file
: pour vérifier si le binaire a été striped et comment il est link.- striped : les symboles ont été enlevés, les fonctions ont un nom basé sur leur adresse dans le décompilateur.
- link : il peut l'être de 2 manières différentes
- dynamique : on a les noms de fonctions
- statique : les bibliothèques se trouvent dans le binaire. Un travail supplémentaire peut être nécessaire pour pouvoir identifier les fonctions de la libc par exemple
Vidéo de LiveOverflow sur les différences entre un binaire striped et les différentes manières de lier les bibliothèques.
3. Ressources
- begin.re : expliquations sur la pile et les premiers pas dans le RE avec IDA (avec des exercices que je n'ai pas encore fait)
3.1. Go
4. Lire la matrice (l'assembleur)
4.1. X86
Pour lire le code désassemblé, c'est utile de connaître un petit peu les bases ainsi qu'une feuille de référence des instructions. Je lis le code désassemblé depuis Ghidra.
5. Liste logiciels
Je n'ai pas testé tous les logiciels listés ici. Je les rajouterai au fur et à mesure dans ma configuration ou via des sections dédiées avec plus d'informations si je me penche dessus sérieusement.
5.1. Décompilateurs et désassembleurs
5.1.1. Java
javap
: désassemble des fichiers.class
- VineFlower (anciennement QuiltFlower)
- Nester : utile pour l'obfuscation
- Enigma : idem
- ASM OW2 : permet de patcher des classes
5.2. Débuggueurs
5.3. Instrumentation binaire
6. Ghidra
Si l'on voit des zones mémoires qui ressemblent à des strings, il est possible de changer leur type en faisant un clic droit puis dans le menu Data. Cela les affichera comme des chaînes de caractères dans le décompilateur.
6.1. Scripts
ResolveX86orX64LinuxSyscallsScript.java
(built-in) : permet de remplacer les appels systèmes faient viasyscall
par les fonctions.
6.2. Débuggeur
Permet de poser des points d'arrêts avec le raccourcis k
sur la
ligne où l'on souhaite s'arrêter. Il y a différentes vues pour pouvoir
voir l'état des registres, de la stack… Il n'est pas possible de
taper dans l'entrée standard par défaut.
7. Radare2
10. Cutter
Interface graphique basée sur le désassembleur Radare2.
10.1. Installation de plugins
Sur Gentoo
cmake -DBUILD_CUTTER_PLUGIN=ON -DCMAKE_INSTALL_PREFIX=~/.local -DCUTTER_INSTALL_PLUGDIR=~/.local/share/rizin/cutter/plugins/native/ ..
11. Python compilé
pyinstxtractor pour extraire les fichiers Python du .exe
.
decompyle3 pour générer le fichier Python à partir du fichier
.pyc
. Ne crash pas en cas d'erreur, contrairement à uncompyle6.
12. IDA
Outil non libre et payant. Il existe une version gratuite limitée. Merci les chinois.
14. Liste challenges
14.1. Reversing.kr
- Easy Crack (Windows) [WU]
- Easy Keygen (Windows)
- Easy Unpack (Windows)
- Music Player (Windows)
- Replace (Windows)
- ImagePrc (Windows)
- Position (Windows)
- Direct3D FPS (Windows)
- Ransomware (Windows)
- Twist1 (Windows)
- Easy ELF (Linux)
- WindowsKernel (Windows)
- AutoHotKey1 (Windows)
- CSHOP (Windows)
- PEPassword (Windows)
- HateIntel (Apple)
- SimpleVM (Linux)
- AutoHotKey2 (Windows)
- x64 Lotto (Windows)
- CSHARP (Windows)
- Flash Encrypt (Flash)
- MetroApp (Windows)
- CRC1 (Windows)
- Multiplicative (Java)
- CRC2 (Windows)
- Adventure (Windows)
- CustomShell
14.2. Crackmes.one
Site regroupant pleins de challenges de reverse. La communauté propose
des challenges, en respectant quelques règles. Ces challenges sont
ensuite résolus par la communauté qui peut soumettre des
solutions. Elles sont listées dans l'onglet "Solutions". Les
challenges et les solutions se trouvent dans des dossiers ZIP
chiffrés, le mot de passe est crackmes.one
, sauf indication
contraire dans la description.
Il reprend le fonctionnement et le design de crackmes.de qui n'est plus en ligne. Certains challenges viennent de ce site aussi.
14.2.1. Niveau 1 à 2 (simple)
Ice9 par tripletordo[WU]avr_crackme par xylitol[WU]xyl_crypto_keygenme_1_barbecueme par xylitol: faut pas lire le code source en faitBasis static par m4dd1n[WU]simple overflow par BitFriends[WU]EZ crackme par R3tr0BS[WU]Personal Safe par LubimPiskoty[WU]Keyg3n_M1#1 par Shad3[WU]easyAF par 476f64[WU]EZwan par DirkD[WU]EZwan2 par DirkD[WU]- Baby OCaml par Towel
- Teenager OCaml par Towel
- Advanced static analysis par m4dd1n
- VERY EASY VERY SIMPLE C CODE par mohammadali
- Mission: PowerGrid par pranav
- WarGames par YugnatD
- x86 par jeffli6789 [WU]
- nasm crack par BitFriends
- Small Keygenme par BinaryNewbie
- timotei crackme#1 par tim0tei
- timotei crackme#2 par tim0tei
- timotei crackme#3 par tim0tei
- timotei crackme#4 par tim0tei
- Lucky Numbers par oguzbey
- Quick Crypto, 18k par andrewl
- crackme-not par weissi1994
- racecars par chillywilly
- admin_panel par BitFriends
- Pass generator par TLOD
- 02 CrackMe - Expl0it par Expl0it-
- It's Easy par Harshil55
- Easy Crackme par TLOD
- unlockme par pranav
- Look Closer par r0B
- CrackThis par TLOD
- KeygenMe par TLOD
- Guess The Password par zx81
- Find the pass par chrisK
- New years crackme v02 par chrisK
- EscapeTheDunge0n - Expl0it par Expl0it-
- Baby Ransom par Shad3
- White Rabbit par hasherezade
- injectme_1 par xylitol
- injectme_2 par xylitol
- LateBird par stopaskingmedumbquestions
- f1nd_my_k3y5 par rezk2ll
- keygenmenasm par rezk2ll
- beatme par rezk2ll [WU]
- crackme_nasm par rezk2ll
- the_xor_algorithm par ksydfius
- crackme_1 par zephyrous
- crackme_2 par zephyrous
- crackme_5 par zephyrous
- frostykids_math_crackme_1 par frostykid
14.2.2. Niveau 3
- https://crackmes.one/crackme/5ab77f6633c5d40ad448cc18
- https://crackmes.one/crackme/5ab77f6633c5d40ad448cc50
- https://crackmes.one/crackme/5ab77f6633c5d40ad448cc01
- https://crackmes.one/crackme/5ab77f6533c5d40ad448cb8e
- https://crackmes.one/crackme/5e2c557933c5d419aa013658
- https://crackmes.one/crackme/5ed17e1633c5d449d91ae68e
- https://crackmes.one/crackme/5cfb961a33c5d41c6d56e069
- https://crackmes.one/crackme/5c90eb8633c5d46ecd37c8ea
- https://crackmes.one/crackme/5ff59e6733c5d42c3d0165c0
- https://crackmes.one/crackme/5e37c8bc33c5d43b8718c65a
- https://crackmes.one/crackme/5ebb7c6c33c5d47611746650
- https://crackmes.one/crackme/5ce6e06c33c5d450df314036
- https://crackmes.one/crackme/5edb0b8533c5d449d91ae73b
- https://crackmes.one/crackme/5ffd8ead33c5d42c3d016671
- https://crackmes.one/crackme/6079170e33c5d45ca94895fa
- https://crackmes.one/crackme/606b1faf33c5d418e8c4009e
- https://crackmes.one/crackme/5ab77f6633c5d40ad448cc63
- https://crackmes.one/crackme/5ab77f6233c5d40ad448c9ef
- https://crackmes.one/crackme/5ab77f5d33c5d40ad448c6a5
- https://crackmes.one/crackme/5ab77f6233c5d40ad448c9e6
- https://crackmes.one/crackme/5ab77f6233c5d40ad448c9e5
- https://crackmes.one/crackme/5aa9b4a633c5d40a63746b20
- https://crackmes.one/crackme/5aa9b47f33c5d40a63746b1f
- https://crackmes.one/crackme/5aa9b4e233c5d40a63746b21
- https://crackmes.one/crackme/5c90eb8633c5d46ecd37c8ea
- https://crackmes.one/crackme/5cfb961a33c5d41c6d56e069
- https://crackmes.one/crackme/5ccc421a33c5d4419da5598d
- https://crackmes.one/crackme/5ab77f6033c5d40ad448c880
- https://crackmes.one/crackme/5ab77f6033c5d40ad448c889
- https://crackmes.one/crackme/5ab77f6033c5d40ad448c888
- https://crackmes.one/crackme/5ab77f6633c5d40ad448cbd3
- https://crackmes.one/crackme/5ab77f6633c5d40ad448cbd1
- https://crackmes.one/crackme/5ab77f6633c5d40ad448cc15
- https://crackmes.one/crackme/5ab77f5833c5d40ad448c408
14.2.3. Niveau 4
- fuckalight par s4r
- KataVM – Level 1 par Towel
- hell86 par ttlhacker
- prisoners_dilemma par 4aca7f6c
- re_trace par crudd
- ReverseMe3 par jochen_
- Tr1cky Cr4ckm3 par BinaryNewbie
- yonkies_keygenme_4 par yonkie
- https://github.com/jeffli678/writeups/tree/master/x86 par
- feed_the_ghost par hasherezade
- Obfuscation1 par s4r
- ReverseMe3 par jochen_
- phoenix3 par phoenix87
- SuperIncreasing KeyGenMe par thesex
- crackme4 par lord_phoenix
- revenge_official_trial_keygenme2006 par lord_phoenix
- lord_phoenix_crackme_2 par lord_phoenix
- lord_phoenix_crackme_3 par lord_phoenix
- frostykids_math_crackme_3 par frostykid
14.2.4. Niveau 5 à 6 (BBT1)
- re_venge par crudd
- fuckalight2 par s4r
- bitflip par s4r
- crackme_1 par excrek
14.2.5. PWN
- rop par BitFriends
- chall par BitFriends
- nx bypass par BitFriends
- no_format par BitFriends
- auth par BitFriends
14.2.6. Random
Liste récupérée sur le serveur Discord de CrackMe.
Footnotes:
Boule et Bite Torture