Rilevando SoftICE denominando 3h INTERNO


  Share  
|


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


Share  

© 2005-2010 E-articles.info All Rights Reserved - Terms and conditions