|
|
Ist hier eine Weise, das Vorhandensein von SoftICE im Gedächtnis, indem sie zu ermitteln INTERN des, Wertes 43h, bevor sie zu enthalten INTERN benennt, ist im AXT-Register benennt. 68h. Das AH Register muß 68h. Wenn SoftICE im Gedächtnis aktiv ist, wird der Rückholwert 0F386h
Dieses ist eine weithin bekannte Methode des Ermittelns von von SoftICE, das sicher und allgemein verwendet ist, aber nur in Windows 9x. Sie können es in der Tätigkeit z.B. in SafeDisc sehen:
386
MODEL FLACH, stdcall Einheimische
Sprünge
UNICODE=0
schließen Sie w32.inc mit ein
Extrn SetUnhandledExceptionFilter: PROC data message3 message2 delayESP vorhergehendes code DB "Abfragung durch das Benennen von von INTERNEM 68h", 0 DB "SoftICE found", 0 DB "SoftICE nicht found", 0 DD 0
;the BESONDERS Register speichert hier DD0;the BESONDERS Register speichert die Adresse des;previous SEH Services hier
Anfang:
; ;Sets SEH falls von einer Störung
;
Bewegungen [ delayESP], besonders
drücken Sie Offsetstörung
benennen Sie SetUnhandledExceptionFilter
Bewegungen [ vorhergehend ], eax
;
;The neue Adresse für die strukturierte Ausnahme-Behandlung (SEH) wird hier eingestellt, um sicherzugehen, daß falls von einem;error, das Programm von einem Störung Aufkleber fortfährt und richtig beendet. Dieses ist wichtiges;if z.B. die Programmanrufe eine Unterbrechung, die richtig nur wenn die aktiven SoftICE;is durchgeführt werden, aber die eine Störung verursacht und das Programm zerschmettert, wenn SoftICE nicht aktiv ist. Schließlich;the wird vorhergehende SEH Service-Adresse gespeichert.
; ah, Stoß 43h interne 68h eax;service Zahl;calls die INTERNEN Unterbrechung 68h;saves der Rückholwert
; ;Sets vorhergehender SEH Service; drücken Sie dword PTR [ vorhergehend ]
benennen Sie SetUnhandledExceptionFilter
; ;Sets die ursprüngliche SEH Service-Adresse
;
knallen Sie eax;restores die Rückholwert cmp Axt,;tests 0f386h, um zu sehen, ob der Rückholwert ist
;a "magische Zahl"
; ;If SoftICE ist im Gedächtnis, der Rückholwert ist F386h im AXT-Register aktiv;
jz Sprung;if ja, das Programm springt, weil SoftICE ist
;active im Gedächtnis
fahren Sie fort:
benennen Sie MessageBoxA, 0, Offsetmessage2, \ Offsetmessage1,0
;if der Rückholwert war anders als F386h, wurde;SoftICE nicht gefunden, und ein Fehlermeldung;will wird angezeigt.
Anruf ExitProcess, -1;ends das Programm
Sprung:
benennen Sie MessageBoxA, 0, Offsetmessage3, \ Offsetmessage1,0
;prints eine Anzeige, daß SoftICE gefunden wurde. Irgendein;code kann von diesem Punkt folgen.
Anruf ExitProcess, -1
;ends die Programmstörung: ;starts ein neuer SEH Service falls von einer Störung Bewegung besonders, [ delayESP ]
Stoßversatz setzt Rückkehr fort
;if eine Störung tritt im Programm, SEH;ensures auf, daß das Programm vom;error Aufkleber fortfährt.
Enden
Ende Anfang
;end des Programms
Online: 845 users browsing the articles directory
|
|