Detectando SoftICE chamando 68h INTERNO

  

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 
este é um artigo adicionado por Sam Petrone


Disclaimer: Nosso Web site não é responsável para a informação contida por este artigo. Este artigo em nenhuma maneira reflete as vistas, as opiniões, os pensamentos ou a opinião da equipe de funcionários do diretório dos artigos.

Observação da tradução: O artigo "que detecta SoftICE chamando 68h INTERNO" foi traduzido usando um serviço de tradução automatizado. Nós desculpamo-nos sincerely por todos os erros da tradução que ocorram. Obrigado compreendendo.

Online: 513 users browsing the articles directory