Frage

Ich bin relativ (Lese: stupid Neuling) vertraut mit der Demontage aber dieses Bit stapfte mich: Ich habe eine Reihe von Sicherungsdateien komprimiert mit zlib und ein Spiel, dass lädt sie. Ihre Struktur ist bekannt und einmal geladen, die structs im Speicher sind identisch mit ihren Sicherungsdateien entsprechen. Das Problem ist, dass das Spiel in einem Esel-rückwärts geschrieben wurde, Scripting-nur-nicht Sprache, die irgendwie keine statischen Zeiger verlassen verwaltet. Überhaupt. Mehrere Dutzend Menschen versucht, und scheinbar statischen Zeiger Pfade nach geringfügigen Änderungen auf der gleichen Maschine brechen. Eine einfache Lösung wäre, nur den Prozess Speicher für die Inhalte der Dateien zu suchen, aber das ist eine ziemlich Brute-Force-Lösung, die ich würde lieber für Bildungszwecke vermeiden.

Die Fragen:

  • Ich versuche OllyDBG zu verwenden. Ich bin es schrecklich, aber dennoch gelungen, einige triviale codecaves zu machen, die tatsächlich funktioniert. Verwende ich das richtige Werkzeug für den Job oder bin ich ein dummer Neuling? Welche Tools haben die modernen Umkehrer in ihrem Kit?
  • Über einen entsprechenden Hinweis, ich muss mit Cheat Engine (oder sein Cousin MHS) für Speicher Suche greifen. Dies scheint ein wenig eingängig. Does OllyDBG wirklich geben Sie keine Möglichkeit für Werte und Raffi Ergebnisse zu suchen oder bin ich etwas fehlt?
  • Wie setzen Sie Haltepunkte auf WINAPI? Verdammt, wie funktioniert WINAPI aussehen wie auf Baugruppenebene? Dies ist etwas, was ich nicht geschafft haben, jeder anständige Informationen darüber zu finden, und ich bin mir ziemlich sicher, dass Google mehr als genug davon hat, aber ich kann einfach nicht die richtigen Worte in den Typ zu sein scheinen.
  • Aufbauend auf dem oben, wie funktioniert ein Satz dynamische Haltepunkte? Wenn ich in einem bestimmten interessiert bin, oft Funktion aber nur , wenn EAX an diesem Punkt auf einen bestimmten Wert gleich ist, wie würde ich Olly (oder etwas anderes) Pause unter dieser Bedingung?
  • Jede allgemeine Bücher / Anregungen / Ressourcen zur Programmierung Demontage oder niedrigen Niveau ausgerichtet auf die Dinge zu brechen.

Disclaimer: Spiel in Frage ist Freeware, Single-Player, Autor mißbilligen nicht beabsichtigt Projekt zur Erweiterung der Funktionalität mehr als alles andere. Auch erste Post, hoffentlich habe ich nicht zu schlecht taste. : (

War es hilfreich?

Lösung

Sie haben eine Menge Fragen in einem. Ich werde versuchen, einige zu beantworten.

OllyDBG ist ein feiner frei Disassembler. Fachleute können für IDA-Pro bezahlen, aber das ist ein teures Produkt.

In Bezug auf Suchen Speicher, tut OllyDBG diese Funktion zur Verfügung stellen. In jedem Speicherabbild Fenster (zum Beispiel des Speicherabbild Bereich der CPU-Fenster) können Sie: Rechtsklick, wählen Sie „Suche nach“ aus dem Kontextmenü und wählen Sie dann entweder Integer oder Binär-String. Im Gegensatz zu Cheat Engine, können Sie nicht mit OllyDBG für einen Näherungswert suchen. Sie könnten ein Plug-in suchen, die dies tut, nicht, dass ich von einer bewusst bin.

Mit dem „WINAPI“ Ich glaube, Sie den Win32-API bedeuten könnten. Wahrscheinlich gibt es eine Komponente in dem Spiel, das Sie in dem Namen WINAPI suchen. Um Satz von Haltepunkten auf verschiedenen Windows-APIs, das ist, was Spiel-Client-Extender gerne tun, werden Sie wissen, wo die eigentliche Windows-API ist, so zu sprechen. Die Funktionen sind nicht alle in einem „Ort“. Es gibt verschiedene DLL-Module, die „Export“ die Funktionen, die die Win32-API enthalten. Zum Beispiel wird MessageBox() von USER32.DLL exportiert aber ExitProcess() aus KERNEL32.DLL exportiert.

auf Stützpunkte auf Windows-API-Aufrufe in OllyDBG können Sie: Menü Ansicht Executable-Module alle Module im Speicher zu sehen. Rechtsklick auf das USER32.DLL Modul und wählen Sie „Ansicht Names“ aus dem Kontextmenü. Dort werden Sie alle Funktionen von USER32 exportiert sehen.

Wenn der Spiel-Client in C geschrieben wurde, wäre es eine Liste der API-Funktionen in verwendet werden, was das heißt „Import-Tabelle.“ Dies würde in dem Exe-Modul gefunden wird geladen im Speicher oder auch sichtbar in der On-Disk-EXE-Datei link /dump /imports verwendet wird.

Im Fall einer Skriptsprache, ist es in der Regel nicht ein Importtabelle, oder wenn es eine Importtabelle ist, importiert es eine breite Palette von Funktionen, die über das Script-Engine zugegriffen werden kann.

Ich glaube nicht, OllyDBG bedingte Haltepunkte unterstützt, leider.

In Bezug auf, wo Demontage beginnen zu lernen, sicher die beste Anweisung ist ziemlich viel zu verwenden, auf Ihrem eigenen Code der Montage. Auch das Schreiben einer Windows-Anwendung, die zeigt nur eine Message Box Lager „Hallo Welt“ benötigen Sie Importtabellen, um zu lernen, die MessageBox () API zuzugreifen. In der Tat könnte auch informativ sein, dass Sie eine solche Anwendung in C zu schreiben. Allerdings empfehle ich Ihnen den Code kompilieren nur die Kommandozeilen-Tools und nicht die GUI-Umgebung. Die GUI wird zu viele Informationen von Ihnen verstecken und mit dem Lernen stören. Um den Zugriff auf die USER32.DLL API, müssen Sie den Linker informieren, dass Sie die user32.lib ‚Import-Bibliothek‘ so Ihre C-Code verwenden möchten MessageBox() transparent aufrufen können.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top