Rilevando SoftICE cercando memoria


  Share  
|


Questa rilevazione cerca la memoria nel modo V86 la stringa di WINICE.BR. Poiché questo metodo è usato raramente, è degno considerare, benchè possa essere usato soltanto in Windows 9x.

Questa procedura può essere nascosta facilmente perché non usa le chiamate (nè api nè INTERNO). Ciò lo renderà impossible rilevare e, se lo usate bene, può scoprire mettere a punto attempt.for un attacker per fare il programma continuare, dovrà cambiare il relativo codice o il soddisfare del registro.

Scoprire il tentativo mettere a punto, tutto che dobbiate fare deve controllare dopo che questo trucco per vedere se i registri realmente contengono i valori che dovrebbero contenere e voi debbano effettuare una prova di CRC per vedere se il codice di programma è stato cambiato nella memoria. Se SoftICE non è attivo nella memoria, la vostra procedura di controllo funzionerà senza problemi.

Lo svantaggio di questo metodo uno è che funziona bene soltanto con le più vecchie versioni di SoftICE e un errore accadrà se una di più nuove versioni di SoftICE's è attiva nella memoria.

386 
MODEL PIANO, locals dello stdcall 
salti 
UNICODE=0 
includa w32.inc 
Extrn SetUnhandledExceptionFilter: Il db 
precedente del delayESP del data message2 message3 di PROC 
"rilevazione dalla ricerca di memoria", 0 db "found" di SoftICE non, 
found"di SoftICE di 0 db", 0 registri del;the di dd 0 SPECIALMENTE 
conserva qui il registro del;the di dd 0 SPECIALMENTE conserverà 
l'indirizzo del 
servizio;previous di SEH qui. 
code 
Inizio: 
; ;Sets SEH nel caso di un errore 
; movimenti [ delayESP], specialmente errore
di derivazione di spinta
movimenti di SetUnhandledExceptionFilter di 
chiamata [ precedenti ], Al dei movimenti del eax, "W"
edi dei movimenti, ecx dei movimenti 10000h, 
400000h - 10000h più: notfound del jecxz del repnz SCASB
stampante di dword del CMP [ edi ], jmp del jz 
found1 "di INIC" più found1: aggiunga il edi, 4
stampante di dword del CMP [ edi ], jnz "di RB.E" 
più stampante 1 di parola di spinta
notfound trovato short del jmp: spinga 
i;searches dello stampante 0 di parola per la stringa di WINICE.BR 
nei;begins di memoria;V86 la ricerca qui
;specifies il numero di byte per cercare
i;searches per una stringa "di W" nel;if di 
memoria la stringa non è trovato, i;ends di ricerca di memoria 
perché SoftICE non è attivo nella memoria. ;when una stringa 
"di W" è trovato, questo esamina per vedere che;whether la stringa 
"di INIC" segue. ;ends quando "INIC" è trovato
;otherwise cerca tutta la memoria
;move da 4 caratteri (byte)
;when "WINIC" gli è trovato controlla per vedere 
se che la stringa di;"e.rb" segue
;if non, la ricerca di memoria conclude il;go qui 
se SoftICE è attivo nella memoria e nel;save 1 nella pila indicare 
che i;was di SoftICE hanno trovato.
;Go qui se SoftICE non è trovato nella memoria. 
trovato: 
; servizio precedente dei;Sets SEH 
; spinga lo stampante di dword [ precedente 
] 
denomini SetUnhandleExceptionFilter 
 
; schiocchi l'ascia della prova dell'ascia, 
salto del jnz dell'ascia continuano: i;restores i;tests di 
ritorno per vedere se il valore di ritorno è 1;if che è, il 
programma di valore salta perché SoftICE è;active.
 
denomini MessageBoxA, 0, message2 di derivazione, \ 
message1,0 di derivazione 
denomini ExitProcess, -1 
salto: 
denomini MessageBoxA, 0, message3 di derivazione, \ 
message1,0 di derivazione 
denomini ExitProcess, -1 
errore: ;starts un nuovo servizio di SEH nel
caso di un errore
 
i movimenti specialmente, immagine riportata di 
spinta [ del delayESP ] continuano il ritorno 
estremità 
inizio di conclusione 
 
ciò è un articolo aggiunto da Sam Petrone


Share  

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