Détectant SoftICE en recherchant la mémoire


  Share  
|


Cette détection recherche la mémoire en mode V86 la corde de WINICE.BR. Puisque cette méthode est rarement employée, elle est intéressant considérer, bien qu'elle puisse seulement être employée dans Windows 9x.

Cette routine peut être facilement cachée parce qu'elle n'emploie pas des appels (ni api ni INTERNE). Ceci le rendra impossible pour détecter, et, si vous l'employez bien, il peut découvrir une correction attempt.for un attaquant pour faire le programme continuer, il devra changer son code ou le contenu du registre.

Pour découvrir la tentative de correction, tout que vous devez faire doit vérifier après que ce tour pour voir si les registres contiennent vraiment les valeurs qu'ils devraient contenir, et vous deviez réaliser un essai de CRC pour voir si le code de programme a été changé dans la mémoire. Si SoftICE n'est pas en activité dans la mémoire, votre routine de vérification fonctionnera sans problèmes.

L'inconvénient de cette méthode une est que cela fonctionne bien seulement avec des versions plus anciennes de SoftICE, et une erreur se produira si une de plus nouvelles versions de SoftICE's est en activité dans la mémoire.

386 
MODEL PLAT, gens du pays de stdcall 
sauts 
UNICODE=0 
incluez w32.inc 
Extrn SetUnhandledExceptionFilter : Le DB 
précédent de delayESP du data message2 message3 de PROC "détection 
par recherche de mémoire", 0 DBS "found" de SoftICE pas, found"de 
SoftICE de 0 DBS", 0 registres de ;the de la densité double 0 EN 
PARTICULIER sauve ici le registre de ;the de la densité double 0 EN 
PARTICULIER sauvera l'adresse du 
service ;previous de SEH ici. 
code 
Début : 
; ;Sets SEH en cas d'erreur 
; mouvements [ delayESP], en particulier 
erreur excentrée de poussée
mouvements de SetUnhandledExceptionFilter d'appel 
[ précédents ], Al de mouvements d'eax, "W"
edi de mouvements, ecx des mouvements 10000h, 
400000h - 10000h davantage : notfound de jecxz du repnz SCASB
PTR de dword de CMP [ edi ], jmp du jz found1 
d'"INIC" plus de found1 : ajoutez l'edi, 4
PTR de dword de CMP [ edi ], jnz d'"RB.E" plus PTR
1 de mot de poussée
notfound trouvé par short de jmp : poussez 
les ;searches de PTR 0 de mot pour la corde de WINICE.BR dans des 
;begins de la mémoire ;V86 la recherche ici
;specifies le nombre de bytes pour rechercher
des ;searches pour une corde de "W" dans le ;if de
mémoire la corde n'est pas trouvés, les ;ends de recherche de 
mémoire parce que SoftICE n'est pas en activité dans la mémoire. 
;when une corde de "W" est trouvé, ceci examine pour voir que 
;whether que la corde d'"INIC" suit. ;ends quand "INIC" est 
trouvé
;otherwise il recherche toute la mémoire
;move par 4 caractères (bytes)
;when "WINIC" lui est trouvé vérifie pour voir 
si que corde du ;"e.rb la" suit
;if elle pas , la recherche de mémoire finit le 
;go ici si SoftICE est en activité dans la mémoire et le ;save 1 en 
pile pour prouver que les ;was de SoftICE ont trouvé.
;Go ici si SoftICE n'est pas trouvé dans la mémoire. 
trouvé : 
; service précédent des ;Sets SEH 
; poussez le PTR de dword [ précédent ] 
appelez SetUnhandleExceptionFilter 
 
; sautez la hache d'essai de hache, saut de 
jnz de hache continuent : les ;restores les ;tests de retour de 
valeur pour voir si la valeur de retour est 1 ;if qu'elle est, le 
programme saute parce que SoftICE est ;active.
 
appelez MessageBoxA, 0, message2 excentré, \ message1,0 
excentré 
appelez ExitProcess, -1 
saut : 
appelez MessageBoxA, 0, message3 excentré, \ message1,0 
excentré 
appelez ExitProcess, -1 
erreur : ;starts un nouveau service de SEH 
en cas d'erreur
 
les mouvements en particulier, [ excentrage de 
poussée de delayESP ] continuent rouissent 
extrémités 
début de fin 
 
c'est un article supplémentaire par Sam Petrone


Share  

© 2005-2010 E-articles.info All Rights Reserved - Terms and conditions