Rilevando SoftICE denominando 3h INTERNO
Ciò è uno dei trucchi anti-mettere a punto più ben noti ed usa un portello posteriore in SoftICE in se. Funziona in tutte le versioni di Windows ed è basata sulla chiamata del 3h INTERNO con i registri che contengono i seguenti valori: EAX=04h ed EBP=4243484Bh. Ciò è realmente la stringa "di BCHK". Se SoftICE è attivo nella memoria, il registro di EAX conterrà un valore tranne 4. Questo trucco è stato usato spesso nel codice di varia compressione e dei programmi di cifratura ed è ben noto a causa del relativo uso largo. Una volta usato bene, può causare la difficoltà anche per i cracker più con esperienza. 386 MODEL PIANO, stdcall i locals salta UNICODE=0 includa w32.inc Extrn SetUnhandledExceptionFilter: Rilevazione di db precedente del code del delayESP del data message3 message2 di PROC "denominando 3h" INTERNO, 0 db "found" di SoftICE, found"di SoftICE di 0 db" non, 0 dd 0 il registro del;the SPECIALMENTE è conservato 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 accertare quello nel caso dell' il;error, il programma continuerà da un'etichetta di errore e si concluderà correttamente. Ciò è importante il;if, per esempio, il programma denomina un'interruzione che sarà effettuata correttamente soltanto se SoftICE ;is attivi, ma che causeranno un errore ed arrestano il programma se SoftICE non è attivo. ;Finally, l'indirizzo precedente di servizio di SEH è conservato. ; il eax, un ebp dei 4 movimenti, valori ";"magic "del eax interno di spinta 3h" di BCHK da essere;whether trovato SoftICE è attivo ;calls i;saves INTERNI di interruzione 3h 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 il eax del CMP del eax, un salto dei 4 jnz continuano: ;restores il valore di ritorno i;tests per vedere se il eax era;if che cambiato è stato cambiato, SoftICE è memoria attiva del;in denomini MessageBoxA, 0, message2 di derivazione, \ message1,0 di derivazione ; il;If che il valore di ritorno è 4 SoftICE non è stato trovato ed il programma stampa un messaggio di errore. ; chiamata ExitProcess, -1 programma dei;ends salto: denomini MessageBoxA, 0, message3 di derivazione, \ message1,0 di derivazione ; ;Displays un messaggio che SoftICE è stato trovato; qualsiasi codice può seguire questo punto. ; chiamata ExitProcess, -1 programma dei;ends errore: ;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 che un errore si presenta nel programma, SEH si accerterà che il programma continui dall'etichetta di;error. ;-estremità inizio di conclusione ;end del programma ciò è un articolo aggiunto da Sam Petrone
|
|||
|