静的にリンクされた 1 つのライブラリを含む実行可能ファイル (foo.exe) があります。このライブラリを更新しました。実行可能ファイルを再コンパイルせずに、更新されたライブラリで exe ファイルを更新する方法はありますか。実行可能ファイルのソース コードにアクセスできません。Visual C++ 2010 を使用して記述された実行可能ファイルと lib ファイル。
質問する
236 次
1 に答える
2
実行可能ファイルには、どのライブラリが静的にコンパイルされたかに関する情報は保存されず、リンカーに必要なシンボル テーブルもありません。
理論的には、バイナリ形式の実行可能ファイルのリバース エンジニアリングやパッチ適用を恐れない場合は、.exe の逆アセンブラーで古いライブラリ コードを見つけて、.exe を慎重に変更し、.exe からコードを実行できるようにすることができます。新しいライブラリ。しかし、ライブラリに数個の関数しかない場合でも、これを行うのは非常に困難で壊れやすいものであり、実際には、実行可能ファイルの逆コンパイルとそのソースの回復と同じ複雑さがあります。
したがって、静的ライブラリを置き換える (そして実際には、必要なものを置き換える) 理論的な可能性はありますが、それを行うのは非常に不合理に見えます。
于 2013-06-08T11:14:29.667 に答える