Détectant SoftICE en appelant 3h INTERNE
C'est l'un des tours d'anti-correction les plus bien connus, et il emploie une porte arrière dans SoftICE elle-même. Cela fonctionne dans toutes les versions de Windows, et il est basé sur appeler 3h INTERNE avec des registres contenant les valeurs suivantes : EAX=04h et EBP=4243484Bh. C'est réellement la corde d'"BCHK". Si SoftICE est en activité dans la mémoire, le registre d'EAX contiendra une valeur autre que 4. Ce tour a été souvent employé dans le code de la diverse compression et des programmes de codage, et il est bien connu en raison de sa utilisation large. Une fois utilisé bien, il peut causer l'ennui même pour les biscuits plus expérimentés. 386 MODEL PLAT, stdcall les gens du pays sautent 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 3h" INTERNE, 0 DBS "found" de SoftICE, found"de SoftICE de 0 DBS" pas, 0 densités doubles 0 le registre de ;the EN PARTICULIER est sauvé 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 assurer cela en cas d' le ;error, le programme continuera d'une étiquette d'erreur et finira correctement. C'est important le ;if, par exemple, le programme appelle une interruption qui sera exécutée correctement seulement si SoftICE ;is actifs, mais qui causeront une erreur et se brisent le programme si SoftICE n'est pas en activité. ;Finally, l'adresse précédente de service de SEH est sauvée. ; l'eax, ebp de 4 mouvements, valeurs ";"magic des "d'eax interne de la poussée 3h d'" BCHK à être le ;whether trouvé SoftICE est en activité ;calls les ;saves INTERNES de l'interruption 3h 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 l'eax de CMP d'eax, saut de 4 jnz continuent : ;restores la valeur de retour les ;tests pour voir si l'eax était ;if changé qu'il a été changé, SoftICE est mémoire active de ;in appelez MessageBoxA, 0, message2 excentré, \ message1,0 excentré ; le ;If que la valeur de retour est 4 SoftICE n'a pas été trouvé et le programme imprime un message d'erreur. ; appel ExitProcess, -1 programme de ;ends saut : appelez MessageBoxA, 0, message3 excentré, \ message1,0 excentré ; ;Displays un message que SoftICE a été trouvé ; n'importe quel code peut suivre ce point. ; appel ExitProcess, -1 programme de ;ends erreur : ;starts un nouveau service de SEH en cas de mouvement des erreurs en particulier, [ delayESP ] l'excentrage de poussée continuent rouissent ; le ;If que une erreur se produit dans le programme, SEH s'assurera que le programme continuera de l'étiquette de ;error. ;-extrémités début de fin ;end de programme c'est un article supplémentaire par Sam Petrone
|
|||
|