Rilevando SoftICE denominando 68h INTERNO
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 ciò è un articolo aggiunto da Sam Petrone
|
|||
|