BSD/UNIXでの実行可能ファイルの動的パッチング
-
09-10-2019 - |
質問
私はかなり大きな問題に直面しています。その動作を変更するには、実行可能ファイルにパッチを当てる必要があります。プログラムはCで書かれており、これまでIDAを使用して編集していましたが、たとえば機能全体などを置き換えることはできませんでした。プログラムをロードし、実行する前にパッチを適用するローダー。それは私に多くの時間を節約し、すべての編集がはるかに簡単になります。
問題は、それを行う方法に関する記事が見つからないことです。このプロセスをどのように処理すべきかを説明できますか?ローダーはC/C ++で記述されます。
解決
そのプロセスを試すことは完全に無敵です。
- なぜ変更を再コンパイルしないのですか?
- ソースが利用できないことが通常の理由です。
- クローズドソースプログラムですか?
- もしそうなら、あなたはおそらく試してみてライセンス条件を破るでしょう。
- ソースは失われていますか?
- バックアップとバージョンのコントロールはどうなりましたか?
- 共有ライブラリの重要なコードで構築されていますか?
- もしそうなら、共有ライブラリを新しい機能に置き換えることを検討できますか?
- 使える
LD_PRELOAD
あなたの目的を達成するために?
UNIXの「ソースが利用可能」の哲学のために、バイナリのパッチングを支援するツールはあまりありません - 古典的には、選択のツールは呼ばれるプログラムでした adb
- デバッガー(第7版UNIXマニュアルに「ADB -Debugger」が言われました)。バイナリを編集することができました。
ただし、主に非常に大変な作業であり、元のソースを再コンパイルすることでそれを行う方がはるかにシンプルで信頼性が高いため、人々はめったに大きな変更を加えることはありません。
所属していません StackOverflow