2010-12-12 6 views
0

Ich stehe vor ein großes Problem. Ich muss eine ausführbare Datei patchen, um ihr Verhalten zu ändern. Das Programm ist in C geschrieben und bis jetzt habe ich IDA verwendet, um es zu bearbeiten, aber auf diese Weise konnte ich zum Beispiel ganze Funktionen usw. nicht ersetzen. Es scheint für mich der einfachste Weg dies zu tun, eine Art von zu erstellen Loader, der das Programm lädt und es vor der Ausführung patchen wird. Es würde mir viel Zeit sparen und die Bearbeitung wäre viel einfacher.Dynamisches Patching der ausführbaren Datei auf BSD/Unix

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

Antwort

1

Es ist völlig konventionell, diesen Prozess zu versuchen.

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

Wegen der ‚Quelle zur Verfügung steht‘ Philosophie von UNIX, gibt es nicht viele Werkzeuge sind mit dem Patchen von Binärdateien zu helfen - klassisch, war das Werkzeug der Wahl ein Programm adb genannt - ein Debugger (die 7. Auflage UNIX-Handbuch sagte "adb - Debugger"). Es erlaubt Ihnen, die Binärdatei zu bearbeiten.

Allerdings machen die Leute selten größere Änderungen, da es so klingt, als ob Sie es tun möchten, vor allem weil es sehr harte Arbeit ist und es viel einfacher und zuverlässiger ist, es durch Neukompilieren der ursprünglichen Quelle zu tun.

+0

Ja, es ist ein Closed-Source-Programm und ich muss ein Sicherheitsloch darin beheben. Der einzige Weg dazu ist das Reverse-Engineering. – kjagiello

+0

@Balon: kontaktieren Sie den Lieferanten - was Sie tun, ist wahrscheinlich nicht legal. Wenn der Lieferant unkooperativ ist (oder aus dem Geschäft ist), Zeit, Lieferanten zu wechseln. Dies ist einer der Gründe, warum Open Source von Vorteil ist. –

+0

Ich habe es versucht, aber keine Antwort bekommen. Was zu tun ist, werde versuchen, sie noch einmal zu kontaktieren. – kjagiello

Verwandte Themen