Detectando SoftICE buscando memoria


  Share  
|


Esta detección busca la memoria en el modo V86 para la secuencia de WINICE.BR. Porque este método se utiliza infrecuentemente, está digno de la consideración, aunque puede ser utilizado solamente en Windows 9x.

Esta rutina puede ser ocultada fácilmente porque no utiliza llamadas (ni API ni INTERNO). Esto hará imposible detectar, y, si usted lo utiliza bien, puede descubrir eliminar errores attempt.for un atacante para hacer que el programa continúa, él tendrá que cambiar su código o el contenido del registro.

Descubrir la tentativa el eliminar errores, todo lo que usted necesita hacer debe comprobar después de que este truco para considerar si los registros realmente contienen los valores que deben contener, y usted necesiten realizar una prueba del CRC para considerar si el código del programa se ha cambiado en memoria. Si SoftICE no es activo en memoria, su rutina de comprobación funcionará sin problemas.

La desventaja de este método uno es que trabaja bien solamente con más viejas versiones de SoftICE, y un error ocurrirá si una de más nuevas versiones de SoftICE's es activa en memoria.

386 
MODEL PLANO, locals del stdcall 
saltos 
UNICODE=0 
incluya w32.inc 
Extrn SetUnhandledExceptionFilter: El DB 
anterior del delayESP del data message2 message3 de PROC "detección 
por búsqueda de la memoria", 0 DB "found" de SoftICE no, found"de 
SoftICE de 0 DB", 0 registros del;the de la DD 0 ahorra ESPECIALMENTE 
aquí el registro del;the de la DD 0 ahorrará ESPECIALMENTE la 
dirección del 
servicio;previous de SEH aquí. 
coda 
Comienzo: 
; ;Sets SEH en caso de que de un error 
; movimientos [ delayESP], especialmente 
error compensado del empuje
movimientos de SetUnhandledExceptionFilter de la 
llamada [ anteriores ], al de los movimientos del eax, "W"
edi de los movimientos, ecx de los movimientos 
10000h, 400000h - 10000h más: notfound del jecxz del repnz 
SCASB
PTR del dword del CMP [ edi ], jmp del jz found1 
de "INIC" más found1: agregue el edi, 4
PTR del dword del CMP [ edi ], jnz de "RB.E" más 
PTR 1 de la palabra del empuje
notfound encontrado cortocircuito del jmp: 
empuje los;searches de la PTR 0 de la palabra para la secuencia 
de WINICE.BR en;begins de la memoria;V86 la búsqueda aquí
;specifies el número de octetos para buscar
los;searches para una secuencia de "W" en;if de la
memoria la secuencia no se encuentran, los;ends de la búsqueda de la 
memoria porque SoftICE no es activo en memoria. ;when una 
secuencia de "W" se encuentra, esto prueba para ver que;whether que la
secuencia de "INIC" sigue. ;ends cuando se encuentra "INIC"
;otherwise busca toda la memoria
;move por 4 caracteres (octetos)
;when "WINIC" se encuentra le comprueba para ver 
si que secuencia del;"e.rb la" sigue
;if no , la búsqueda de la memoria termina;go 
aquí si SoftICE es activo en la memoria y el;save 1 en el apilado 
demostrar que los;was de SoftICE encontraron.
;Go aquí si SoftICE no se encuentra en memoria. 
encontrado: 
; servicio anterior de los;Sets SEH 
; empuje la PTR del dword [ anterior ] 
llame SetUnhandleExceptionFilter 
 
; haga estallar el hacha de la prueba del 
hacha, salto del jnz del hacha continúan: los;restores 
los;tests de vuelta para considerar si el valor de vuelta es 1;if que 
es, el programa del valor saltan porque SoftICE es;active.
 
llame MessageBoxA, 0, message2 compensado, \ message1,0 
compensado 
llame ExitProcess, -1 
salto: 
llame MessageBoxA, 0, message3 compensado, \ message1,0 
compensado 
llame ExitProcess, -1 
error: ;starts un nuevo servicio de SEH en 
caso de que de un error
 
los movimientos especialmente, compensación del 
empuje [ del delayESP ] continúan la vuelta 
extremos 
comienzo del final 
 
esto es un artículo agregado por Sam Petrone


Share  

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