Detectando SoftICE buscando memoria
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
|
|||
|