Ja, du kannst. Es wird jedoch nicht einfach sein. Ich werde dir ein Beispiel geben.
Sagen wir, dass ich folgendes Programm namens foo.c :
habe %Vor%Ich werde es kompilieren und sicherstellen, dass es keine Symbole gibt:
%Vor%Ok, Zeit es zu starten:
%Vor%Hoppla! Es scheint einen Fehler zu geben. Lass uns einen Debugger starten:
%Vor%Hmm, sieht schlecht aus. Keine Symbole. Können wir herausfinden, was passiert ist?
%Vor%Es sieht so aus, als ob es versucht hat, ein Byte mit dem Wert Null an der Speicherstelle zu speichern, auf die das EAX-Register zeigt. Warum hat es versagt?
%Vor%Es ist fehlgeschlagen, weil das EAX-Register auf eine Speicheradresse Null zeigt und versucht hat, ein Byte an dieser Adresse zu speichern. Ups!
Leider habe ich keine Hinweise auf gute Tutorials. Die Suche nach "gdb reverse engineering" liefert einige Links, die möglicherweise hilfreiche Teile enthalten.
Aktualisierung:
Ich habe bemerkt, dass es sich um das Debuggen eines Core-Dumps bei einem Kunden handelt. Wenn Sie entpackte Binärdateien an einen Kunden versenden, sollten Sie immer eine Debug-Version dieser Binärdatei behalten.
Ich würde empfehlen, nicht zu strippen und sogar den Quellcode zu geben. Der gesamte Code, den ich schreibe, geht mit dem Quellcode an einen Kunden. Ich war zu oft mit einem inkompetenten Anbieter konfrontiert, der ein defektes Stück Software geliefert hat, aber nicht weiß, wie er es beheben soll. Es ist scheiße.
Dies scheint tatsächlich ein Duplikat dieser Frage zu sein:
Dort gibt es einige zusätzliche Informationen.
Ja, Sie können,
Das ist es, was Leute, die Risse schreiben, tun,
Leider habe ich die Folien und Dokumente eines Kurses, den ich an der Universität besucht habe, nicht mehr, aber googeln für reverse engineering
oder disassembly tutorials
gibt dir einige Startpunkte. Außerdem ist es wichtig, dass Sie sich im Assemblercode auskennen.
Unsere Klasse basierte auf einem Buch hauptsächlich Kapitel 1 & amp; 3 aber es gibt jetzt eine neue Ausgabe
Computer Systems: A programmer's perspective by R.E. Bryant and D.R. O'Hallaron
erklärt die Grundlagen hinter Computersystemen und gibt Ihnen gute Kenntnisse über die Funktionsweise von Programmen in Systemen.
Beachten Sie auch, dass 64-Bit-CPUs einen anderen Assembler-Code als 32-Bit-CPUs haben, nur für den Fall.