Warning: Use of undefined constant ipaddress - assumed 'ipaddress' (this will throw an Error in a future version of PHP) in /home/www/acp/lib/session.php on line 98

Warning: Use of undefined constant useragent - assumed 'useragent' (this will throw an Error in a future version of PHP) in /home/www/acp/lib/session.php on line 98

Warning: Use of undefined constant request_uri - assumed 'request_uri' (this will throw an Error in a future version of PHP) in /home/www/acp/lib/session.php on line 98

Warning: Cannot modify header information - headers already sent by (output started at /home/www/acp/lib/session.php:98) in /home/www/acp/lib/functions.php on line 82

Warning: Cannot modify header information - headers already sent by (output started at /home/www/acp/lib/session.php:98) in /home/www/acp/lib/functions.php on line 82

Warning: Cannot modify header information - headers already sent by (output started at /home/www/acp/lib/session.php:98) in /home/www/acp/lib/functions.php on line 82

Warning: Cannot modify header information - headers already sent by (output started at /home/www/acp/lib/session.php:98) in /home/www/acp/lib/functions.php on line 82
Forum www.Kopierschutzsysteme.de - Hier findet Ihr Informationen rund um das Thema Kopierschutz - Wie arbeitet ein Debugger?
Registrierung Mitgliederliste Administratoren und Moderatoren Suche Häufig gestellte Fragen Stellen Sie hier Ihre spezielle Kopierschutzanfrage Zur Startseite  

Forum www.Kopierschutzsysteme.de - Hier findet Ihr Informationen rund um das Thema Kopierschutz » Programmierung » Allgemeines » Wie arbeitet ein Debugger? » Hallo Gast [anmelden|registrieren]
Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Michael Bauer Michael Bauer ist männlich
Administrator


Dabei seit: 03.02.2007
Beiträge: 127

Wie arbeitet ein Debugger? Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       IP Information Zum Anfang der Seite springen

Debugger wurden in erster Linie dazu entwickelt, um einem Softwareentwickler bei der Fehlersuche behilflich zu sein. Ein Debugger ist jedoch auch ein sehr nützliches Werkzeug, wenn es um das Hacken von Programmen geht. Mittels Anti-Debugging Mechanismen kann jedoch einem Hacker das Debuggen erschwert werden. Um Anti-Debugging Methoden besser verstehen zu können, werden im Nachfolgenden die Gründzuge gezeigt, wie ein Debugger arbeitet.

Ein Debugger bietet die Möglichkeit, ein Programm zur Laufzeit beobachten und an bestimmten Stellen im Code anhalten zu können. Das Anhalten erfolgt mittels eines Haltepunkts (Breakpoint). Wenn ein Breakpoint erreicht wird, wird das Programm angehalten und es wird dem Benutzer der momentane Zustand (z.B. Speicherinhalte und Registerinhalte) des Programms angezeigt. Nachdem das Programm angehalten wurde, kann es wird fortgeführt oder im Einzelschritt (Single Stepping) durchlaufen werden. Single Stepping bedeutet, dass das Programm nach jedem Befehl (Quellcode oder Assemblercode) anhält und den momentanen Zustand des Programms anzeigt. Ein Hacker verfügt im Normalfall nicht über den Quellcode, somit erfolgt das Debuggen auf Assemblerebene. Mittels Breakpoints und Single Stepping ist ein Hacker in der Lage, interessante Stellen im Code genauer untersuchen zu können.

Wie arbeitet ein Debugger?
Bei Debuggern unterscheidet man zwei Arten: User-Mode Debugger und Kernel-Mode Debugger. User-Mode Debugger laufen als normale Anwendung, d.h. es können nur normale Anwendungen gedebuggt werden, jedoch keine Treiber, da diese sich auf Kernel-Ebene befinden. Weiter sind User-Mode Debugger nur in der Lage, während der Laufzeit nur einen Prozess zu überwachen. Startet der überwachte Prozess einen Weiteren, so muss dieser erneut durch eine weitere Instanz des Debuggers überwacht werden. Ein weit verbreiteter User-Mode Debugger unter Hackern ist Ollydbg.
Kernel-Mode Debugger laufen auf Kernel-Ebene und ermöglichen das Debuggen von normalen Anwendungen und Treibern. Des Weiteren bieten Kernel-Moder Debugger die Möglichkeit, dass Betriebsystem zu einem beliebigen Zeitpunkt anhalten und das System als Ganzes betrachten zu können. Ein weit verbreiteter Vertreter ist Softice von Compuware.

Man unterscheidet zwei Arten von Breakpoints: Software-Breakpoint und Hardware-Breakpoint. Wenn ein Benutzer einen Software-Breakpoint an einer Adresse setzt, ersetzt der Debugger das erste Byte der Instruktion mit einer INT3 (0xCC, Interrupt Nummer 3) Instruktion. Sobald der Prozessor die Stelle mit der INT3 Instruktion erreicht, wir ein Interrupt ausgelöst. Der Debugger ersetzt die INT3 Instruktion mit dem Originalwert und friert den Zustand des Programms an der Stelle ein, so dass der Benutzer das Programm untersuchen kann.
Bei einem Hardware-Breakpoint werden spezielle Prozessor Debug-Register (DR) verwendet. Anders als bei Software-Breakpoints, erfolgt bei Hardware-Breakpoints keine Modifikation in dem zu überwachenden Programm. Anhand der Adresse in dem Debug-Register weiss der Prozessor, an welcher Stelle im Programm ein Breakpoint Interrupt (Interrupt Nummer 1) ausgeführt werden muss, um das Programm anhalten zu können. Die Debug-Register bieten auch die Möglichkeit, um an Speicheradressen auf Schreib- oder Lesezugriffe triggern zu können.

Wird das Programm durch einen Software- oder Hardware Breakpoint angehalten, so kann mittels Single Stepping das Programm weiter analysiert werden. Bei Single Stepping wird jede Instruktion einzeln ausgeführt und nach dem Ausführen, wird dem Benutzer sofort der Zustand des Programms angezeigt. Das Unterbrechen des Programms erfolgt mittels Interrupt (Interrupt Nummer 1). Der Interrupt wird dadurch ausgelöst, dass im EFLAGS-Register das Trap-Flag (TP) gesetzt wird.

28.03.2007 19:16 Michael Bauer ist offline Email an Michael Bauer senden Homepage von Michael Bauer Beiträge von Michael Bauer suchen Nehmen Sie Michael Bauer in Ihre Freundesliste auf
notme notme ist männlich
Grünschnabel


Dabei seit: 17.04.2008
Beiträge: 9

Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       IP Information Zum Anfang der Seite springen

Genau diese Sachen (Int1/Int3) werden ja deshalb auch für Anticrackingtechniken (ala SEH) eingesetzt. Bei normalen Int3 Befehlen kann auch gezielt auf das Byte (0xCC) gescannt werden... Anticracking hier: Checksumme eines Bereichs anlegen, zur Laufzeit vergleichen... Ist ein Int3 gesetzt, hat man mindestens 1 (0xCC) im Code und die neue Checksumme stimmt nicht mehr. Eine weit verbreitete Variante ist auch das Löschen der Debugregister via SEH, oder das effektive nutzen der Register für eigene Zwecke (wie z.B Decryption).

Dieser Beitrag wurde schon 1 mal editiert, zum letzten mal von notme am 23.04.2008 15:55.

23.04.2008 15:54 notme ist offline Email an notme senden Beiträge von notme suchen Nehmen Sie notme in Ihre Freundesliste auf
GreyHat GreyHat ist männlich
Jungspund


Dabei seit: 29.07.2008
Beiträge: 10

Wie arbeitet ein Debugger Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       IP Information Zum Anfang der Seite springen

Ein Debugger muß nicht über einen Int3 einen Breakpunk setzen. Es ist völlig ausreichend über einen ungültigen Befehl oder eine andere Exception die Kontrolle an den Debugger zu übergeben. Das wird teilweise von Debuggern als Anti-Anti-Debuggingmaßnahme eingesetzt. Man muß auch nicht über das Traceflag tracen. Es gibt im Netz Artikel über User Mode Single Stepping in dem dabei sehr interessante Ansätze geschildert werden.

SEH ist auch sehr interessant hat nur leider die Tendenz die Lesbarkeit und Struktur des Sourceodes zu beeinträchtigen und damit zu weniger stabilem Code zu führen. Es ist ebenfalls nicht immer ganz klar, welche anderen Module ebenfalls Exceptions verwenden. Kommen sich dabei 2 geschützte Programme in die Quere - dann viel Spass ...

18.08.2008 13:11 GreyHat ist offline Email an GreyHat senden Beiträge von GreyHat suchen Nehmen Sie GreyHat in Ihre Freundesliste auf
 
Neues Thema erstellen Antwort erstellen
Gehe zu:

Links / Impressum
Powered by Burning Board © 2001-2004 WoltLab GmbH
Partnerseiten: virenschutz.info | Hakin9.org