Frage

Ich bin vor ein ziemlich großes Problem. Ich brauche eine ausführbare zu Patch sein Verhalten zu ändern. Das Programm ist in C geschrieben und bis jetzt hat ich IDA es zu bearbeiten benutzen, aber auf diese Weise kann ich zum Beispiel nicht ersetzen ganze Funktionen usw. Es ist für mich scheint, dass der einfachste Weg, dies zu tun, ist eine Art zu schaffen, loader, der das Programm und Patch wird es laden, bevor es ausgeführt wird. Es würde mir viel Zeit sparen und die ganze Bearbeitung wäre viel einfacher.

Das Problem ist, dass ich keinen Artikel darüber, wie es zu tun gibt. Könnte einer von euch erklären, wie ich diesen Prozess umgehen sollte? Der Lader in C / C geschrieben würde ++.

War es hilfreich?

Lösung

Es ist völlig ein herkömmliches, diesen Prozess zu versuchen.

  • Warum sind Sie nicht nur mit den Änderungen neu zu kompilieren?
    • Quelle nicht verfügbar ist der üblicher Grund.
  • Ist es ein Closed-Source-Programm?
    • Wenn ja, werden Sie wahrscheinlich die Lizenzbedingungen zu brechen, indem Sie versuchen.
  • Ist die Quelle verloren?
    • Was ist mit den Sicherungen und Versionskontrolle passiert?
  • Ist es mit dem Schlüsselcode in gemeinsam genutzten Bibliotheken gebaut?
    • Wenn ja, können Sie sich die gemeinsamen Bibliotheken mit der neuen Funktionalität ersetzen?
  • Können Sie LD_PRELOAD Ihre Ziele zu erreichen?

Aufgrund der ‚Quelle zur Verfügung steht‘ Philosophie von UNIX, gibt es nicht viele Werkzeuge, um Hilfe bei der Patchen von Binärdateien - klassisch, war das Werkzeug der Wahl ein Programm namens adb - ein Debugger (die 7. Ausgabe UNIX Handbuch sagte 'adb - Debugger'). Es erlaubt Ihnen die binäre zu bearbeiten.

Allerdings machen die Menschen selten große Veränderungen wie es klingt wie Sie tun wollen, vor allem weil es sehr harte Arbeit und es ist viel einfacher und zuverlässiger, es zu tun mit der ursprünglichen Quelle neu zu kompilieren.

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