|
|
Está aqui uma maneira detectar a presença de SoftICE na memória chamando INTERNO para conter o valor 43h antes de chamar INTERNO esteja no registo do MACHADO. 68h. AH o registo deve 68h. Se SoftICE for ativo na memória, o valor do retorno 0F386h
Este é um método well-known de detectar SoftICE que é seguro e usado geralmente, mas somente em Windows 9x. Você pode vê-lo na ação, para o exemplo, em SafeDisc:
386
MODEL LISO, locals do stdcall
saltos
UNICODE=0
inclua w32.inc
Extrn SetUnhandledExceptionFilter: Do DB precedente do code do delayESP do data message3 message2 de PROC deteção "chamando 68h" INTERNO, 0 DB "found" de SoftICE, found"SoftICE de 0 DB de" não, 0 dd 0
o registo do;the ESP conserva aqui o registo do;the do dd 0 ESP conservará o endereço do serviço;previous de SEH aqui
Começo:
; ;Sets SEH caso que de um erro
;
movimentos [ delayESP], esp
empurre o erro offset
chame SetUnhandledExceptionFilter
movimentos [ precedentes ], eax
;
o endereço novo do;The para a manipulação de exceção estruturada (SEH) é ajustado aqui para assegurar-se de que caso que de um;error, o programa continue de uma etiqueta do erro e termine corretamente. Esta é;if importante, para o exemplo, as chamadas do programa uma interrupção que sejam executadas corretamente somente se os;is de SoftICE ativos, mas que causará um erro e deixam de funcionar o programa se SoftICE não for ativo. Finalmente, o endereço precedente do serviço do;the SEH é conservado.
; ah,;calls internos do número do;service do eax do impulso 43h 68h os;saves INTERNOS do interruption 68h o valor do retorno
; serviço precedente dos;Sets SEH; empurre o ptr do dword [ precedente ]
chame SetUnhandledExceptionFilter
; ;Sets o endereço original do serviço de SEH
;
estale;restores do eax o machado do retorno do cmp do valor,;tests 0f386h para ver se o valor do retorno é
;a "número mágico"
; o;If SoftICE é ativo na memória, o valor do retorno será F386h no registo do MACHADO;
o;if do salto do jz sim, o programa salta porque SoftICE é
;active na memória
continue:
chame MessageBoxA, 0, message2 offset, \ message1,0 offset
o;if o valor do retorno era à excepção de F386h,;SoftICE não foi encontrado, e um;will da mensagem de erro fosse indicado.
chamada ExitProcess, -1;ends o programa
salto:
chame MessageBoxA, 0, message3 offset, \ message1,0 offset
;prints uma mensagem que SoftICE estêve encontrado. Algum;code pode seguir deste ponto.
chamada ExitProcess, -1
;ends o erro do programa: ;starts um serviço novo de SEH caso que de um movimento do erro esp, [ delayESP ]
o offset do impulso continua o retorno
o;if um erro ocorre no programa,;ensures de SEH que o programa continuará da etiqueta do;error.
extremidades
começo do fim
;end do programa
Online: 513 users browsing the articles directory
|
|