exe debuggen mit pdb von Static Library?

03/18/2014 12:09 Zapeth#1
Hi, ich habe eine exe eines MMOs (ohne dazugehörigen Source Code), die ich gerne mit Ollydbg oder IDA debuggen würde.

Da ich mir aber ziemlich sicher bin, dass die exe mit einer quelloffenen Network (Static) Library kompiliert wurde, habe ich mich gefragt ob ich nicht die pdb der Library verwenden könnte um die ganzen Funktionen der Library erkennen zu können (was mir natürlich das Debuggen enorm vereinfachen würde).

Ich habe bereits probiert in beiden Debuggern die pdb zu laden, hat aber bisher nicht wirklich funktioniert, deshalb würde ich mich gerne vergewissern ob es generell überhaupt möglich wäre oder ob man nur die zugehörige pdb der exe dafür verwenden kann.
03/28/2014 21:00 Ende!#2
Ist machbar, aber nicht ohne Weiteres. Da ich den Thread jetzt erst sehe und du dich nach dem Erstellen des Topics nicht nochmal eingeloggt hast, möchte ich aber zunächst fragen, ob die Frage noch aktuell ist?!
03/31/2014 12:11 Tyrar#3
Quote:
Originally Posted by Ende! View Post
Ist machbar, aber nicht ohne Weiteres. Da ich den Thread jetzt erst sehe und du dich nach dem Erstellen des Topics nicht nochmal eingeloggt hast, möchte ich aber zunächst fragen, ob die Frage noch aktuell ist?!
Wenn sich der TE nicht dafür nicht interessiert, dann vertrete ich ihn an dieser Stelle.
Bisher kam ich super ohne klar, um ehrlich zu sein habe ich mich auch noch nie darum gekümmert, aber eventuell wäre die Information ja in Zukunft nützlich?
(Vermutlich nicht nur für mich)
04/01/2014 17:48 Zapeth#4
Hi, Frage ist noch aktuell, habe nur auch schon länger nicht mehr vorbeigeschaut weil ich nicht mehr wirklich mit einer Antwort gerechnet habe.

Insofern wäre also jegliche Antwort hilfreich :)
04/01/2014 22:01 Ende!#5
Da ich da ohnehin schon ein paar Mal zu gefragt wurde, hab ich die Gelegenheit mal genutzt, um damit unseren neuen Blog einzuweihen:

[Only registered and activated users can see links. Click Here To Register...]
04/03/2014 18:00 Zapeth#6
Vielen Dank für die Anleitung, allerdings hätte ich noch ein paar Fragen dazu:

1) Muss ich die Parameter bei sigmake so angeben oder sollte es auch ohne funktionieren? Weil bei -a -p und -o sowieso jeweils dabeisteht "GUI version of IDA does not use this information". Abgesehen davon was macht -a0 und -p0 bei dir bzw warum hast du es extra angegeben?

2) Ich nehme mal an die library die ich übergebe muss mit dem gleichen Compiler (und Einstellungen?) kompiliert werden wie die, die in der zu untersuchenden .exe verlinkt wurde?

3) Wenn es zu Kollisionen in sigmake kommt, was wäre dann ein guter Weg herauszufinden welche Module ich auswählen soll?
Und ich nehme an, dass ich pro Kollision nur ein Modul auswählen kann, egal ob mit '+' oder '-' ?
04/03/2014 22:09 Ende!#7
Quote:
Originally Posted by Zapeth View Post
Vielen Dank für die Anleitung, allerdings hätte ich noch ein paar Fragen dazu:

1) Muss ich die Parameter bei sigmake so angeben oder sollte es auch ohne funktionieren? Weil bei -a -p und -o sowieso jeweils dabeisteht "GUI version of IDA does not use this information". Abgesehen davon was macht -a0 und -p0 bei dir bzw warum hast du es extra angegeben?

2) Ich nehme mal an die library die ich übergebe muss mit dem gleichen Compiler (und Einstellungen?) kompiliert werden wie die, die in der zu untersuchenden .exe verlinkt wurde?

3) Wenn es zu Kollisionen in sigmake kommt, was wäre dann ein guter Weg herauszufinden welche Module ich auswählen soll?
Und ich nehme an, dass ich pro Kollision nur ein Modul auswählen kann, egal ob mit '+' oder '-' ?
1) Hatte gar nicht gesehen, dass die GUI-Variante diese Switches ignoriert, hab sie aus dem Artikel entfernt. Danke für den Hinweis. :)

2) Ich hatte deinem Post entnommen, dass die Library bereits in kompilierter Form ausgeliefert wird. Im Falle von Projekten, die man selbst compilen muss, gestaltet sich das mit FLIRT Signaturen eher schwierig. Grundsätzlich hast du aber recht - je genauer du die Compiler-Settings triffst, desto besser sind die Matches. Ist allerdings alles nicht so das Wahre, würde in dem Fall eher mit Diff-Tools arbeiten, die sich nicht auf Signaturen verlassen (zynamics BinDiff z.B.).

3) Wenn kollidierenden Objekte sich komplett widersprechen, ist es wohl das beste, sie einfach gar nicht in die Signaturen einzubeziehen. Wenn es sich allerdings um die gleiche Funktion in einer anderen Schreibweise handelt (z.B. atan und _atan), würde ich einfach die simplere picken.
04/04/2014 15:17 Zapeth#8
Naja eigentlich ist auch eine vorkompilierte Library dabei, nachdem damit aber nur ein paar wenige Funktionen erkannt wurden dachte ich mir, dass die ursprünglichen Entwickler entweder die Library mit anderen Einstellungen oder mit einem anderen Compiler neu kompiliert in das Spiel inkludiert haben.

Aber ich schätze mal das Ergebnis ist immer noch besser als nichts deshalb trotzdem danke für die nützliche Info :)