« Notre Scène politicomique à la Française - The Show Must Go On ! | Home | Mais est-ce vraiment utile ? »
SysEnterHook et les mystère du remote Debug dans un CocoNut of Hell
By nats` | July 5, 2007
Bon, pour remettre dans le contexte,
j’ai repris le développement de ma RootKit chérie.
Et hier, grand mystère, en tentant un hook de sysenter
le Grand Schtroumpf a maudit mon écran !
Après quelque recherches je n’ai rien trouvé qui indique
d’où vient mon erreur…
(Qui a dit que j’ai mal cherché ! Ca va tatanner de la gueule grave !)
Mais le plus mystérieux reste le comportement de ce bout
de code en remote debugging !
mov ecx, 0176h
rdmsr
mov savMsr, eax
xor edx, edx
mov eax, addrOfMyfunc
wrmsr
Et le grand CrickMeCrok (Putain c’est naze faut que j’arrête celle la!)
Si je lance ce code dans un driver précédemment loadé dans un
XP sp2 sans debug… Vlan dans tes dents et ce au moment même de l’écriture,
par contre en remote debug il passe dessus sans le moindre problème,
si ce n’est qu’il ne modifie pas le msr -_-’
Si vous avez une réponse à ce grand mystère de la vie je suis preneur
surtout que ca peut peut-être interesser du monde et vous assurera la gloire
et de belles donzelles allongées à vos pieds !
(Rigolez pas, mon blog c’est du lourd ! 4800 spams de bot en 4 jours !)
Edit:
Le mystère s’épaissit, ce week end j’ai retesté ce hook, et cette fois
pas d’écran bleu… Cependant le msr n’a toujours pas été patché !
Ca devient vraiment étrange va falloir que je fouille vraiment les man Intel :|
Mis à jour:
Bon je suis pas doué…
Je vous laisse constater par vous même, faites un diff entre les deux versions de code:
mov ecx, 0176h
rdmsr
mov savMsr, eax
mov ecx, 0176h
xor edx, edx
mov eax, addrOfMyfunc
wrmsr
Donc voila ca hook… -_-’
Prochaine étape, gérer le Multi-Proc… Parce que la ca fait peur
lkd> rdmsr 176
msr[176] = 00000000`80540510
lkd> rdmsr 176
msr[176] = 00000000`f7ca932a
lkd> rdmsr 176
msr[176] = 00000000`f7ca932a
lkd> rdmsr 176
msr[176] = 00000000`f7ca932a
lkd> rdmsr 176
msr[176] = 00000000`f7ca932a
lkd> rdmsr 176
msr[176] = 00000000`80540510
lkd> rdmsr 176
msr[176] = 00000000`80540510
lkd> rdmsr 176
msr[176] = 00000000`f7ca932a
lkd> rdmsr 176
msr[176] = 00000000`f7ca932a
lkd> rdmsr 176
msr[176] = 00000000`f7ca932a
lkd> rdmsr 176
msr[176] = 00000000`f7ca932a
lkd> rdmsr 176
msr[176] = 00000000`80540510
Current Mood:
Gniééé
Topics: Reverse |

July 10th, 2007 at 4:14 pm
Yo
Au lieu de modif les MSR from scratch, essaye p-e d’utiliser l’API NtSystemDebugControl qui effectue cela plus proprement, tu pouras trouver un exemple ici :
http://ivanlef0u.free.fr/?p=21
Autrement je n’ai pas vérifier mais j’espère que cette API va modif les MSR de chaque core :]
Si ca ne marche toujours pas, fait peter le crash dump qu’on voit ce qui va mal.
+
July 10th, 2007 at 4:20 pm
J’ai vu ton exemple et me suis pas mal penché dessus par contre je n’ai pas pensé à disasm cette api ^^
En fait je tiens à éviter à tout prix l’utilisation des API.
Pour ce qui concerne le crash dump ca va être dur…
Depuis ce week end et sans changement de code ca ne crash plus sur ma machine oO
**Microsoft aurait-il implémenté un algo baysiens de détections de crash ^^**
Bon va falloir persévérer, je vais faire un improve v00d00 skillz jusqu’au lvl 10 xp 31337 :p