例えば:
作るためにリンクmyprogram.obj
したとmyprogram.lib
しましょうmyprogam.exe
あらゆる種類の特別な機能が含まれていて、誤ってそれ (およびソース) を削除した場合myprogram.lib
、掘り下げてmyprogram.exe
機能を取り出す方法はありますか? または、何らかの方法でファイルに変換myprogram.exe
し、.lib
必要な部分のみを参照することもできますか?
例えば:
作るためにリンクmyprogram.obj
したとmyprogram.lib
しましょうmyprogam.exe
あらゆる種類の特別な機能が含まれていて、誤ってそれ (およびソース) を削除した場合myprogram.lib
、掘り下げてmyprogram.exe
機能を取り出す方法はありますか? または、何らかの方法でファイルに変換myprogram.exe
し、.lib
必要な部分のみを参照することもできますか?
機能はそこにあります。exe が暗号化されていないか、直接のアセンブラー コード (exepackers、暗号化、ドングル) に逆アセンブルできない場合は、関数を見つけることができます。
しかし、それらの名前付け、正確な境界、およびその他の注釈がなくなったため、関数を識別するものがなくなったため、これを自動化することが難しくなっています。
言い換えれば、これはアセンブラー ウィザードまたはプロのリバース エンジニアリング サービスのためのものです。
コードが非常に価値があり、コンパイラが比較的一般的である場合は、それを行うリバース エンジニアリング サービスがあります。しかし、多額の価格を覚悟してください。それがどれほど簡単かを分析するだけでも、費用がかかる場合があります。(*)
ほとんどの状況では、抽出 (自分の時間または雇われた時間のいずれか) の代償は、関数の価値よりも大きく、それらを書き直す方が安くなります。
(*) RTTI または内部デバッグ情報により、作業が容易になる場合があります。
これが問題です。おそらく、実行可能ファイルを「逆コンパイル」できます。痛いです。ただし、この問題について必要なすべての情報が必要な場合は、この以前の SO の質問をご覧ください。
ほとんどのコンパイラは、未使用の関数を削除してコードを最適化します。ライブラリのすべての部分を使用していない限り、または未使用の関数を最適化しないようにコンパイラを設定するように注意していない限り、lib ファイル全体が実行可能ファイルに含まれる可能性はあまりありません。