|
|
Aquí está una manera de detectar la presencia de SoftICE en memoria llamando INTERNO para contener el valor 43h antes de llamar INTERNO esté en el registro del HACHA. 68h. AH el registro debe 68h. Si SoftICE es activo en memoria, el valor de vuelta 0F386h
Éste es un método bien conocido de detectar SoftICE que sea seguro y utilizado comúnmente, pero solamente en Windows 9x. Usted puede verlo en la acción, por ejemplo, en SafeDisc:
386
MODEL PLANO, locals del stdcall
saltos
UNICODE=0
incluya w32.inc
Extrn SetUnhandledExceptionFilter: Detección del DB anterior del coda del delayESP del data message3 message2 de PROC "llamando el 68h" INTERNO, 0 DB "found" de SoftICE, found"de SoftICE de 0 DB" no, 0 DD 0
el registro del;the ahorra ESPECIALMENTE aquí el registro del;the de la DD 0 ahorrará ESPECIALMENTE la dirección del servicio;previous de SEH aquí
Comienzo:
; ;Sets SEH en caso de que de un error
;
movimientos [ delayESP], especialmente
empuje el error compensado
llame SetUnhandledExceptionFilter
movimientos [ anteriores ], eax
;
la nueva dirección del;The para la dirección de excepción estructurada (SEH) se fija aquí para asegurarse de que en caso de que de un;error, el programa continuará de una etiqueta del error y terminará correctamente. Éste es;if importante, por ejemplo, las llamadas del programa una interrupción que sean realizadas correctamente solamente si los;is de SoftICE activos, pero que causará un error y estrellan el programa si SoftICE no es activo. Finalmente, se ahorra la dirección anterior del servicio del;the SEH.
; ah,;calls internos del número del;service del eax del empuje 43h 68h los;saves INTERNOS de la interrupción 68h el valor de vuelta
; servicio anterior de los;Sets SEH; empuje la PTR del dword [ anterior ]
llame SetUnhandledExceptionFilter
; ;Sets la dirección original del servicio de SEH
;
haga estallar los;restores del eax el hacha de vuelta del CMP del valor,;tests 0f386h para ver si es el valor de vuelta
;a "número mágico"
; el;If SoftICE es activo en memoria, el valor de vuelta será F386h en el registro del HACHA;
el;if del salto del jz sí, el programa salta porque es SoftICE
;active en memoria
continúe:
llame MessageBoxA, 0, message2 compensado, \ message1,0 compensado
el;if el valor de vuelta estaba con excepción de F386h,;SoftICE no fue encontrado, y se exhiba un;will del mensaje de error.
llamada ExitProcess, -1;ends el programa
salto:
llame MessageBoxA, 0, message3 compensado, \ message1,0 compensado
;prints un mensaje que SoftICE fue encontrado. Cualquier;code puede seguir de este punto.
llamada ExitProcess, -1
;ends el error del programa: ;starts un nuevo servicio de SEH en caso de que de un movimiento del error especialmente, [ delayESP ]
la compensación del empuje continúa la vuelta
el;if un error ocurre en el programa,;ensures de SEH que el programa continuará de la etiqueta del;error.
extremos
comienzo del final
;end del programa
Online: 840 users browsing the articles directory
|
|