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
|
|||
|