|
|
Voici une manière de détecter la présence de SoftICE dans la mémoire en appelant INTERNE pour contenir la valeur 43h avant d'appeler INTERNE soit dans le registre de HACHE. 68h. OH le registre doit 68h. Si SoftICE est en activité dans la mémoire, la valeur de retour 0F386h
C'est une méthode bien connue de détecter SoftICE qui est sûr et généralement utilisé, mais seulement dans Windows 9x. Vous pouvez la voir dans l'action, par exemple, dans SafeDisc :
386
MODEL PLAT, gens du pays de stdcall
sauts
UNICODE=0
incluez w32.inc
Extrn SetUnhandledExceptionFilter : Détection de DB précédent de code de delayESP du data message3 message2 de PROC "en appelant 68h" INTERNE, 0 DBS "found" de SoftICE, found"de SoftICE de 0 DBS" pas, 0 densités doubles 0
le registre de ;the EN PARTICULIER sauve ici le registre de ;the de la densité double 0 EN PARTICULIER sauvera l'adresse du service ;previous de SEH ici
Début :
; ;Sets SEH en cas d'erreur
;
mouvements [ delayESP], en particulier
poussez l'erreur excentrée
appelez SetUnhandledExceptionFilter
mouvements [ précédents ], eax
;
la nouvelle adresse de ;The pour la manipulation d'exception structurée (SEH) est placée ici pour s'assurer qu'en cas de ;error, le programme continuera d'une étiquette d'erreur et finira correctement. C'est ;if important, par exemple, les appels de programme une interruption qui sera exécutée correctement seulement si les ;is de SoftICE actifs, mais qui causera une erreur et se brise le programme si SoftICE n'est pas en activité. En conclusion, l'adresse précédente de service du ;the SEH est sauvée.
; oh, ;calls internes de nombre de ;service d'eax de la poussée 43h 68h les ;saves INTERNES de l'interruption 68h la valeur de retour
; service précédent des ;Sets SEH ; poussez le PTR de dword [ précédent ]
appelez SetUnhandledExceptionFilter
; ;Sets l'adresse originale de service de SEH
;
sautez les ;restores d'eax la hache de retour de CMP de valeur, les ;tests 0f386h pour voir si la valeur de retour est
;a "nombre magique"
; le ;If SoftICE est en activité dans la mémoire, la valeur de retour sera F386h dans le registre de HACHE ;
le ;if de saut de jz oui, le programme saute parce que SoftICE est
;active dans la mémoire
continuez :
appelez MessageBoxA, 0, message2 excentré, \ message1,0 excentré
le ;if la valeur de retour était autre que F386h, ;SoftICE n'a pas été trouvé, et un ;will de message d'erreur soit montré.
appel ExitProcess, -1 ;ends le programme
saut :
appelez MessageBoxA, 0, message3 excentré, \ message1,0 excentré
;prints un message que SoftICE a été trouvé. N'importe quel ;code peut suivre de ce point.
appel ExitProcess, -1
;ends l'erreur de programme : ;starts un nouveau service de SEH en cas de mouvement des erreurs en particulier, [ delayESP ]
l'excentrage de poussée continuent rouissent
le ;if une erreur se produit dans le programme, ;ensures de SEH que le programme continuera de l'étiquette de ;error.
extrémités
début de fin
;end de programme
Online: 833 users browsing the articles directory
|
|