Krautkanal.com

Veröffentlicht am 2016-10-28 00:06:3 in /prog/

/prog/ 9376: Hallo Bernd, z.Z. versuche ich mich etwas in Reverse...

baluli Avatar
baluli:#9376

Hallo Bernd,

z.Z. versuche ich mich etwas in Reverse-Engineering (Unix/Linux) einzuarbeiten. Als Nicht-Programmierer ist das ziemlich harte Kost. Habe nun etwas mit gdb gespielt. Aber was ich schon nicht verstehe, warum kann der gdb laut Manpage nur
>debug programs written in C, C++, and Modula-2
?

Ist es nicht egal, was für ein Binary man da reinwirft, wenn es nur darum geht zu disassemblieren?

karalek Avatar
karalek:#9377

>>9376
Wie inzu das verstehen ohne Programmierer?
Hä?

cbracco Avatar
cbracco:#9378

>>9376
Geht vermutlich schon, nur "weiß" der Debugger dann beim Debuggen nicht, worum es geht.
Aber wenn es Bernd eh egal ist...

Das Manpage ist vermutlich veraltet, wie so oft bei sinnlosen Dokumenten, die man besser anders angelegt hätte.

Siehe z.B. https://sourceware.org/gdb/onlinedocs/gdb/Supported-Languages.html

betraydan Avatar
betraydan:#9383

>>9377
Bin halt der typische Fall von mehrmals C gelehrt zu bekommen und auch schon mal Assembler (auf dem MFA) zu haben, aber 10 Jahre her und sonst nicht sonderlich viel damit zu tun gehabt. Praktisch bin ich eher in Perl oder Python unterwegs, aber das ist ja eine ganz andere Sportart. Das Interesse ist auch mehr aus der Not heraus entstanden. Habe hier mehrere Binaries von denen ich gerne wissen würde, wie sie das tun, was sie tun. Leider auch noch von der übleren Sorte. Dynamisch gelinkt und dann auch noch Boost-Gelumpe, ohne Debug Symbols. Glaube das ist ein unlösbare Aufgabe für mich.


>>9378
Danke für die Info. Habe einen älteren gdb hier, da FreeBSD.

mat_stevens Avatar
mat_stevens:#9385

Damit ist Unterstützung für die debugging Symbole gemeint. gdb ist nicht in erster Linie als Reverse Engineering Tool gedacht, sonder geht davon aus das deine Binary DWARF Sections hat.

ajaxy_ru Avatar
ajaxy_ru:#9386

>>9376
www.binary-auditing.com

sawalazar Avatar
sawalazar:#9408

Was >>9385 sagt. Wenn du ein Programm in einer unterstützten Sprache und mit Debug-Symbolen im gdb laufen lässt, hast du nette Features, die halt nur funktionieren, weil der Debugger halt den Code "versteht". Du kannst ihn natürlich auch auf beliebige Binaries ansetzen, Basisfeatures wie Programm unterbrechen und Register anzeigen lassen hast du dann immer noch, nur sowas wie "was ist denn in diesem Frame der Wert von Variable xyz?" kann der Debugger dir dann nicht mehr beantworten. Du kannst auch noch Breakpoints setzen, nur halt nicht mehr auf Funktionsnamen, sondern auf Speicheradressen. Disassembly erzeugen kann übrigens objdump auch, dafür brauchst du nicht mal den gdb.

Im Prinzip kannst du mit gdb also "nur" dir den Zustand des Programms zu einer bestimmten Zeit ansehen und/oder ändern; wirkliche Reverse Engineering-Features hat er nicht. Guck dir dazu mal radare2 an.

christauziet Avatar
christauziet:#9414

>>9376
Professioneller Rückwärtsingenieur hier, nimm dir eine gecrackte version es sei denn du bist reich oder dein Arbeitgeber hat noch Geld übrig von Ida Pro, sonst kommst du nicht weit.

Klar kannst du mit Gdb durchsteppen, aber du bekommst dabei nie eine gute Übersicht über das gesamte Programm sondern eben nur sehr lokal Informationen über den aktuellen Zustand.

Ich denke mit C/C++/Modula2 sind kompilierte Programme gemeint, da du sonst Interpreter/VM/wasauchimmer debuggst. Geht auch, macht aber keinen Spaß.

shadowfreakapps Avatar
shadowfreakapps:#9445

>>9414
Wenn du Lust auf ein bisschen Gefrickel und freie Software hast:
http://www.radare.org

sunshinedgirl Avatar
sunshinedgirl:#9449

>>9445
Danke für den Link. Das sieht ja richtig spaßig aus. Es wird Zeit, den Hartwarenherstellern der Schlaufone mal richtig in den Arsch zu treten und alle ihre Treiber zu hackieren und durch freie Weichware zu ersetzen. Krach Überschreibung ich komme!

matt3224 Avatar
matt3224:#9452

>>9449
>>9445
Weiß eigentlich jemand, wie weit https://panopticon.re/ nu is?

joeymurdah Avatar
joeymurdah:#9475

>>9376
>Ist es nicht egal, was für ein Binary man da reinwirft, wenn es nur darum geht zu disassemblieren?
gdb ist prinzipiell nicht als Binär-entkäferer konzipiert. Du kannst damit zwar arbiträren x86 anzeigen und verarbeiten lassen, dabei gehen dir aber die ganzen Hilfsmittel wie `info locals`, `bt` oder `list <funktionsname>` verloren.

millinet Avatar
millinet:#9502

>>9414
*zustimm*
Ohne BinDiff und IdaPro nix gut reverse engineering.
Ohne Programmiererfahrung auch nicht.
Also nicht aufgeben sondern weiterhacken!
Gutes gelingen wünscht Develeper-Bernd, begraben unter 3 Millionen
Zeilen C++-Legacy-Code...

Neuste Fäden in diesem Brett: