Baboon's Blog

Aller au contenu | Aller au menu | Aller à la recherche

Recherche

Votre recherche de starforce a donné 6 résultats.

dimanche, mars 7 2010

StarForce : Tip and Tricks

Bon je me suis ch** dessus dans mes paramètres de configuration donc je re-compile tout xerces ..

J'en profite donc pour vous bassiner encore un peu avec StarForce en vous donnant un petit truc pour arriver à l'OEP :

Arriver à l'OEP sans encombre : Lancer le programme normalement, quand une fenêtre apparait vous informant qu'il ne vous reste plus que X jours avant expiration, s'attacher au processus avec olly, mettre un BP sur VirtualProtect, continuer l'exécution du processus, le programme break 2 fois sur VirtualProtect, à la troisième fois, mettre un BP sur la page mémoire correspondant au code (F2 dans la fenêtre memory map), virer le breakpoint sur VirtualProtect, reprendre l'exécution et hop magique, on arrive à l'OEP !

Sur ce je m'en vais réviser ma crypto .... Bon dimanche ;)

Starforce Again

Je profite du temps de compilation de xerces pour écrire un petit post à la va vite.

Aujourd'hui nous allons voir une autre feature de StarForce : la redirection de fonction.

J'ai rencontré cette feature après mon post sur la redirection des APIs et quand je l'ai vu j'ai pensé que c'était de la virtualisation de code tant le code de la fonction était horrible et prenait extrêmement de temps à s'exécuter avec plein de loop de partout etc.

J'avais abandonné jusqu'à ce que je tombe sur une application compilée avec VC 7.0 et dont l'une des fonction d'initialisation (donc commune à tout les programmes compilés avec VC 7.0) était redirigée. J'ai donc décidé de me re-pencher dessus avec cette fois ci un point de comparaison.

Pour étudier cette fonction de redirection (que je pensais être une fonction de virtualisation) j'ai posé des HBP en accès sur la valeur de EAX enregistré dans la pile. Cette valeur est baladée en mémoire dans 4-5 emplacement et finalement elle est dépilée et la fonction retourne dans ... la fonction originale ! Ce n'est donc pas une fonction de virtualisation mais bien une fonction de redirection !

Le problème est maintenant de fixer automatiquement ces redirections. On ne peut se baser sur une écriture de la pile, StarForce usant et abusant de call $+5 | pop reg et écrivant de cette façon extrêmement souvent à l'adresse située juste au dessus de l'adresse de retour. Heureusement, malgrès la complexité de la fonction de redirection et de ce petit inconvénient, StarForce utilise toujours la même portion de code pour retourner à la fonction originale. Cette portion de code étant très facilement identifiable, il suffit de faire une recherche en mémoire du pattern, de poser un HBP dessus et on arrive directement à la fonction redirigée !

Code restaurant les registres et retournant à la fonction redirigée :

  1. POP EAX
  2. POPFD
  3. POP EBP
  4. LEA ESP,DWORD PTR SS:[ESP+4]
  5. POP EDI
  6. POP ESI
  7. POP EDX
  8. POP ECX
  9. POP EBX
  10. XCHG DWORD PTR SS:[ESP],EAX
  11. RETN

signature de la portion de code : 58 9D 5D 8D 64 24 04 5F 5E 5A 59 5B 87 04 24 C3

Voili voilou, xerces a fini de compiler, je retourne à mon boulot ;)

samedi, décembre 19 2009

BINI et BaDu, plus mieux que LordPE, plus moins bien que ImpRec

J'avais prévu de vous faire un post sur armadillo mais étant donné que j'avais un peu trop de trucs à dire j'ai décidé de vous parler d'abord des 2 libs que j'ai écrites à l'occasion du développement de mon call fixer

Ces 2 librairies servent à dumper et à reconstruire une IT depuis une DLL injectée (pour ceux qui n'auraient pas compris, je ne jure que par l'injection de DLL ;) ). ImpRec ne m'a jamais posé trop de problèmes par contre LordPE m'a plusieurs fois fait de sales coups surtout lors de la phase de reconstruction de dump.

Taille non optimisée, dernier byte non nul de chaque section supprimé. Tout ça m'a amené à écrire la première lib : BaDu (Baboon Dumper). Comme mon dumper optimise la taille du code au maximum et que je voulais caser l'IT dans une des sections de Armadillo sans trop m'embêter (et parce que avoir un call fixer qui pond un exe fonctionnel c'est la classe) j'ai décidé d'écrire une lib pour reconstruire l'IT : BINI (BINI Is Not ImpRec).

Désolé pour les noms foireux :D

Lire la suite...

dimanche, novembre 8 2009

Impulse ou la poudre aux yeux de l'activation par internet

Je sais que ca fait longtemps que je n'ai rien posté, les études, la flemme etc.

Pour me rattraper je vais essayer de faire une petite série de posts, si ils n'arrivent pas n'hésitez pas à me gueuler dessus ca me motivera ;) (pas toi over, toi t'es pas venu pour mon anniversaire donc ch'te cause plus)

Au programme donc dans les prochains posts (pas forcément dans l'ordre ...) :

  1. Impulse ou la poudre aux yeux de l'activation par internet
  2. l'ARM c'est rigolo
  3. Hack.lu et challenges
  4. HITB WMD CTF
  5. Armadillo 6.X

On commence donc aujourd'hui par Impulse ...

Lire la suite...

jeudi, février 12 2009

Achevons la bête StarForce

Maintenant que nous avons un joli call fixer pour StarForce pourquoi ne pas faire un plugin pour ImpRec ?!

Il y a plusieurs obstacles avant d'arriver à un plugin fonctionnel et rapide et ce à cause du système de plugin ImpRec qui n'a pas été super bien pensé (enfin je trouve ..)

Lire la suite...

mercredi, février 4 2009

StarForce 4.70.X ou l'ami du poly

Salut les zouaves ;)

J'ai eu récemment l'occasion d'étudier un programme protégé par StarForce 4.70.X cette version de StarForce à l'air d'être conçue spécialement pour les logiciels contrairement a StarForce 3 qui lui visait surtout les jeux. Cette version donc est beaucoup moins robuste que celle utilisée pour les jeux, pas de drivers, pas de VM, pas de stolen bytes, pas de code redirigés MAIS une protection des imports pas mal foutue. J'exposerai donc dans ce post la technique que j'ai utilisée pour rebuild tout ca ...

Lire la suite...