SoftICE durch das Suchen des Gedächtnisses ermitteln


  Share  
|


Diese Abfragung sucht das Gedächtnis im Modus V86 nach der WINICE.BR Zeichenkette. Weil diese Methode selten verwendet wird, ist sie wert das Betrachten, obwohl sie in Windows 9x nur verwendet werden kann.

Dieses Programm kann leicht versteckt werden, weil es nicht Anrufe verwendet (weder API noch INTERNES). Dieses bildet es unmöglich zu ermitteln, und, wenn Sie es gut verwenden, kann es ein Ausprüfen attempt.for entdecken ein Angreifer, um das Programm fortfahren zu lassen, muß er seinen Code oder den Inhalt des Registers ändern.

Den Ausprüfenversuch entdecken, soll alles, das Sie tun müssen, überprüfen, nachdem dieser Trick, zum zu sehen, wenn die Register wirklich die Werte enthalten, die sie enthalten sollten und Sie einen zyklische Blockprüfung Test durchführen müssen, um zu sehen, wenn der Programmcode im Gedächtnis geändert worden ist. Wenn SoftICE nicht im Gedächtnis aktiv ist, läuft Ihr überprüfenprogramm ohne Probleme.

Nachteil dieser Methode ein ist, daß er gut nur mit älteren Versionen von SoftICE funktioniert, und eine Störung tritt auf, wenn eine von SoftICE's neueren Versionen im Gedächtnis aktiv ist.

386 
MODEL FLACH, stdcall Einheimische 
Sprünge 
UNICODE=0 
schließen Sie w32.inc mit ein 
Extrn SetUnhandledExceptionFilter: PROC data
message2 message3 delayESP vorhergehendes DB "Abfragung durch 
Gedächtnissuche", 0 DB "SoftICE nicht found", 0 DB "SoftICE found", 0
DD0;the BESONDERS Register speichert hier DD0;the BESONDERS Register 
speichert die Adresse von 
;previous SEH Service hier. 
code 
Anfang: 
; ;Sets SEH falls von einer Störung 
; Bewegungen [ delayESP], besonders 
Stoßoffsetstörung
Anruf SetUnhandledExceptionFilter Bewegungen [ 
vorhergehend ], eax Bewegungen Al, "W"
Bewegungen edi, Bewegungen 10000h ecx, 400000h - 
10000h mehr: repnz SCASB jecxz notfound
cmp dword PTR [ edi ], "INIC" jz found1 jmp mehr 
found1: addieren Sie edi, 4
cmp dword PTR [ edi ], "RB.E" jnz mehr 
Stoßwort-PTR 1
jmp Kurzschluß gefundenes notfound: 
drücken Sie Wort-PTR 0;searches für die WINICE.BR Zeichenkette
in den Gedächtnis;V86;begins die Suche hier
;specifies die Zahl Bytes, um zu suchen
;searches für eine "W" Zeichenkette im 
Gedächtnis;if die Zeichenkette wird nicht, die Gedächtnissuche;ends 
gefunden, weil SoftICE nicht im Gedächtnis aktiv ist. ;when 
eine "W" Zeichenkette wird gefunden, dieses prüft, um zu sehen, 
daß;whether, welches die "INIC" Zeichenkette folgt. ;ends, wenn
"INIC" gefunden wird
;otherwise sucht es alles Gedächtnis
;move durch 4 Buchstaben (Bytes)
;when "WINIC," wird ihm überprüft, um zu sehen 
gefunden, wenn, das das;"e.rb" Zeichenkette folgt
;if sie nicht, beendet die Gedächtnissuche;go 
hier, wenn SoftICE in Gedächtnis und in;save 1 in einstapeln aktiv 
ist, zu zeigen, daß SoftICE;was fanden.
;Go hier, wenn SoftICE nicht im Gedächtnis gefunden wird. 
gefunden: 
; ;Sets vorhergehender SEH Service 
; drücken Sie dword PTR [ vorhergehend ] 
benennen Sie SetUnhandleExceptionFilter 
 
; knallen Sie Axttestaxt, Axt jnz Sprung 
fortfahren: ;restores die Rückholwert;tests, zum zu sehen, wenn
der Rückholwert 1;if ist, das er ist, das Programm springt, weil 
SoftICE;active ist.
 
benennen Sie MessageBoxA, 0, Offsetmessage2, \ 
Offsetmessage1,0 
benennen Sie ExitProcess, -1 
Sprung: 
benennen Sie MessageBoxA, 0, Offsetmessage3, \ 
Offsetmessage1,0 
benennen Sie ExitProcess, -1 
Störung: ;starts ein neuer SEH Service 
falls von einer Störung
 
Bewegungen besonders, [ delayESP ] Stoßversatz 
setzen Rückkehr fort 
Enden 
Ende Anfang 
 
dieses ist ein Artikel, der von Sam Petrone hinzugefügt wird


Share  

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