SoftICE durch das Suchen des Gedächtnisses ermitteln
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
|
|||
|