Un OEP Finder pour escargot en C
Introduction
Je voulais m'amuser avec l'API de debug sous windows ( voir autre chose que ptrace() ).
J'ai donc décidé d'écrire un OEP finder pour le packer escargot.
Voici le cheminement de mon programme :
- Bypass IsDebuggerPresent()
- Hadware Breakpoint à l'éxécution sur l'OEP
- Step Over de 3. L'état de tous les registres seront sauvés sur la pile (PUSHAD)
- Hardware Breakpoint à l'accés de l'un de ses états
- Step Over de 3. On arrive à l'OEP original
- Il suffit de fix le dump crée avec ImportRec à partir de l'OEP trouvé par le programme et le tour est joué
Source
Voici les sources : main.c, main.h
Conclusion
Ce programme peut vous apprendre les subtilités des debug register, comment utiliser l'API de debug de Windows, et jouer avec le format PE.
Have fun.