0

私はかなり大きな問題に直面しています。実行可能ファイルにパッチを適用して、その動作を変更する必要があります。プログラムはCで書かれていて、今までIDAを使って編集してきましたが、例えば関数全体を置き換えることはできませんでした。そうするのが一番簡単な方法は、ある種のプログラムを作成することだと思います。プログラムをロードし、実行する前にパッチを適用するローダー。それは私に多くの時間を節約し、すべての編集がはるかに簡単になるでしょう。

問題は、それを行う方法についての記事が見つからないことです。このプロセスをどのように処理する必要があるか説明していただけますか?ローダーはC/C++で記述されます。

4

1 に答える 1

1

そのプロセスを試すことはまったく型破りです。

  • 変更を加えて再コンパイルしないのはなぜですか?
    • ソースが利用できないのが通常の理由です。
  • クローズドソースプログラムですか?
    • もしそうなら、あなたは試してみることによってライセンス条項を破っている可能性があります。
  • ソースは失われていますか?
    • バックアップとバージョン管理はどうなりましたか?
  • 共有ライブラリのキーコードを使用して構築されていますか?
    • もしそうなら、あなたは共有ライブラリを新しい機能に置き換えることを検討できますか?
  • LD_PRELOADあなたはあなたの目的を達成するために使うことができますか?

UNIXの「ソースは利用可能」という哲学のため、バイナリのパッチ適用を支援するツールは多くありません。従来、選択されたツールはadb、デバッガと呼ばれるプログラムでした(第7版UNIXマニュアルには「adb」デバッガと記載されています)。 ')。バイナリを編集することができました。

ただし、主に非常に大変な作業であり、元のソースを再コンパイルすることで変更する方がはるかに簡単で信頼性が高いため、ユーザーがやりたいように大きな変更を加えることはめったにありません。

于 2010-12-12T16:00:43.897 に答える