Introduction au reverse Palm

Introduction:


Just for fun.


Les outils:



I: Configuration/installation des outils:


Bon si vous n’avez jamais touché à du palm de votre vie, c'est très simple de configurer l'environnement.
On va déjà config l'émulateur, il se peut qu'à la première ouverture le firewall Windows pop une fenêtre au démarrage, pour vous demander comment vous souhaitez configurer l'accès réseau de l'appli (réseau domestique ou privé).

Donnez-lui un accès réseau (important pour plus tard), puis la fenêtre de démarrage s'ouvre.
Cliquez sur le bouton [New] Start a new emulator session, donnez-lui la rom 3.5 puis configurez le reste comme sur la screenshot si ce n’est pas déjà fait par défaut:


1 1

L'émulateur ce lance, faites un Drag'n'drop de l'appli xgrCrackme1.prc et X-Master.prc (requis pour le débogueur) pour les installer.
Alternativement vous pouvez aussi faire un clique-droit n'importe où sur l'émulateur, et allez dans le menu Install Application/Database > Menu, ou bien simplement Alt+I.

C'est tout pour l'émulateur, maintenant passons à PRCEdit si c'est votre première ouverture, PRCEdit va vous demander de config le path de pildis (notre désassembleur).


1

Indiquez-lui où se trouve votre PilDis.exe et c'est fini pour la configuration des outils.


II: Analyse du crackme:


La première chose à identifier est une chaîne quelconque qui nous permettra de faire une recherche initiale.
Alors lancez l'appli, entrez un name/serial bidon, et là nous l'avons:


1

'You son of a bitch, Buy my program!'

La fenêtre appelée ici est une "Alert" (l'équivalent de MessageBox sous Windows) et non un "Form".
Ça se distingue de la même manière que sous Windows: un messagebox ne contient qu'un message et un bouton, un form quant à lui peut contenir des champs, et beaucoup d'autres éléments.

Ouvrez PRCEdit puis chargez le crackme, une boîte de dialogue apparaît pour vous demander si vous voulez lancer le désassemblage, vous faites 'Yes'.
Une fois désassemblé regardez le volet d'exploration de gauche, et allez dans 'Alerts' puis développez la référence du bad boy 'You son of a bitch, Buy my program!'

La fenêtre de désassemblage affiche la référence, la ligne verte met en évidence l'appelle, ici en 0000043a, sélectionnez L26, clique-droit, et faites un Search Up for: L26.

Le désassembleur remonte quelques lignes plus haut:


00000428 66000010 BNE L26

BNE C'est quoi ?
D'ailleurs c'est quoi toute cette merde ?


1

C'est de l'asm motorola 68k, tu peux choper les opcodes ici: https://repo.zenk-security.com/Programma...pcodes.pdf.
Si on regarde le tableau du PDF, BNE appartient à la famille des Bcc il prend une condition pour nous: NE (Not Equal) son contraire est BEQ (Branch on Equal).
C'est une condition pour jump sur le bad boy, si c'est true, alors on va en 0000043a.

L26 c'est une variable qui contient notre texte 'You son of a bitch, Buy my program!' (en vrai c’est un peu plus subtil, mais on va pas la jouer trop fine).
SysTrapStrCompare un peu plus haut est une API de comparaison.
sysTrapFrmAlert est une API pour les alertes (messagebox).



III: Chopper le sérial:


L'analyse statique c'est cool, mais moi ça me fait chier et j'aime bien dbg dans la mesure où c'est possible.
Lancez south débugger, une fenêtre vous demande d'entrer l'IP de la machine sur lequel l'émulateur tourne, laissez la valeur pas défaut (127.0.0.1), puis cliquez sur le bouton connect.
Si tout se passe bien vous devriez voir en bas à droite, écrit en rouge "connected. waiting for breakpoint..."
Les fenêtres du dbg sont affichables et déplaçables à votre guise, via le menu 'window'.

Rapidement pour les shortcuts du dbg:
F5: exécute le programme
F6: exécute le programme jusqu'à ce qu'il y ait une instruction RTS (pratique pour sortir d'une fonction)
F7: exécute la fonction sans rentrer dedans en pas-à-pas
F8: exécute la fonction en pas-à-pas

Voilà pour l'explication rapide.
De retour sur votre émulateur allez ouvrir l'application X-master, le débogueur break.
De retour sur le débogueur cherchez la fenêtre de breakpoint, allez dans l'onglet trap breakpoint et ajoutez en un sur SysTrapStrCompare en cliquant sur le bouton [...]


1

Une fois ça fait, appuyez sur F5 pour reprendre l'exécution du programme, retournez sur le crackme, entrez un nom et un sérial bidon puis cliquez sur [Get It], le débogueur break.


1

Après avoir break sur TrapStrCompare il ne reste plus qu'à afficher la fenêtre trap stack depuis le menu Window du débogueur:
on s'aperçoit que notre sérial est comparé à 300773


1

Pas de surprise, c'est bien le bon sérial:


1

IV: Patcher l'application:


Là aussi c'est simple, en plus on connaît la condition qui nous enmerde (le BNE), la solution la plus rapide est de poser un de bon gros nops sur 66000010.
Donc c'est quoi l'équivalence hexa, 90?

Perdu! c'est 4e71 en asm 68k donc je ne vais pas vous apprendre la vie pour patcher le fichier, moi j'utilise hxd.
Ctrl+F on cherche b644660000103f3c03ea en chaîne hexa, on fait la modification et CTRL+S ensuite il n'y a plus qu'à tester.


V: Conclusion


No comment, si tu veux aller plus loin il y a ça aussi dans le repo:
https://repo.zenk-security.com/Programma...mbleur.pdf




Copyright (C)- xtx Team (2021)

XHTML valide 1.1 CSS Valide !