|
|
Qui è un senso rilevare la presenza di SoftICE nella memoria denominando INTERNO per contenere il valore 43h prima della chiamata INTERNO è nel registro dell'ASCIA. 68h. AH il registro deve 68h. Se SoftICE è attivo nella memoria, il valore di ritorno 0F386h
Ciò è un metodo ben noto di rilevazione del SoftICE che è sicuro ed usato comunemente, ma soltanto in Windows 9x. Potete vederli nell'azione, per esempio, in SafeDisc:
386
MODEL PIANO, locals dello stdcall
salti
UNICODE=0
includa w32.inc
Extrn SetUnhandledExceptionFilter: Rilevazione di db precedente del code del delayESP del data message3 message2 di PROC "denominando 68h" INTERNO, 0 db "found" di SoftICE, found"di SoftICE di 0 db" non, 0 dd 0
il registro del;the SPECIALMENTE conserva qui il registro del;the di dd 0 SPECIALMENTE conserverà l'indirizzo del servizio;previous di SEH qui
Inizio:
; ;Sets SEH nel caso di un errore
;
movimenti [ delayESP], specialmente
spinga l'errore di derivazione
denomini SetUnhandledExceptionFilter
movimenti [ precedenti ], eax
;
il nuovo indirizzo del;The per il trattamento di eccezioni strutturato (SEH) è regolato qui per accertarsi che nel caso di un;error, il programma continui da un'etichetta di errore e si concluda correttamente. Ciò è;if importante, per esempio, le chiamate di programma un'interruzione che sarà effettuata correttamente soltanto se;is di SoftICE attivi, ma che causerà un errore ed arrestano il programma se SoftICE non è attivo. Per concludere, l'indirizzo precedente di servizio del;the SEH è conservato.
; ah,;calls interni di numero di;service del eax di spinta 43h 68h i;saves INTERNI di interruzione 68h il valore di ritorno
; servizio precedente dei;Sets SEH; spinga lo stampante di dword [ precedente ]
denomini SetUnhandledExceptionFilter
; ;Sets l'indirizzo originale di servizio di SEH
;
schiocchi i;restores del eax l'ascia di ritorno del CMP di valore, i;tests 0f386h per vedere se il valore di ritorno è
;a "numero magico"
; il;If SoftICE è attivo nella memoria, il valore di ritorno sarà F386h nel registro dell'ASCIA;
il;if di salto del jz sì, il programma salta perché SoftICE è
;active nella memoria
continui:
denomini MessageBoxA, 0, message2 di derivazione, \ message1,0 di derivazione
il;if il valore di ritorno era tranne F386h,;SoftICE non è stato trovato e un;will del messaggio di errore è visualizzato.
chiamata ExitProcess, -1;ends il programma
salto:
denomini MessageBoxA, 0, message3 di derivazione, \ message1,0 di derivazione
;prints un messaggio che SoftICE è stato trovato. Qualsiasi;code può seguire da questo punto.
chiamata ExitProcess, -1
;ends l'errore di programma: ;starts un nuovo servizio di SEH nel caso di un movimento di errori specialmente, [ delayESP ]
l'immagine riportata di spinta continua il ritorno
il;if un errore si presenta nel programma,;ensures di SEH che il programma continuerà dall'etichetta di;error.
estremità
inizio di conclusione
;end del programma
Online: 847 users browsing the articles directory
|
|