.dll ファイルをマシン コードに再度逆アセンブルする方法はありますか? これにはどのようなアプリケーションが必要で、どれくらい回復できますか?
4 に答える
PE File Explorerを確認 してください。このツールは素晴らしく、Delphi で構築されており、Delphi アプリケーションを特別にサポートしています。
リソースを分析、分解、編集できます
PE Explorer は、独自のソフトウェアの内部動作を検査するための最も機能満載のプログラムであり、さらに重要なことには、ソース コードを持っていないサード パーティの Windows アプリケーションとライブラリです。調査するファイルを選択すると、PE エクスプローラーがファイルを分析し、PE ヘッダー情報の概要と、PE ファイルに含まれるすべてのリソースを表示します。ここから、ツールを使用して、実行可能ファイル内の特定の要素を調べることができます。
(ソース: pe-explorer.com )
IDA Pro のような逆アセンブラが必要です。無料版もあります。マシン コード (アセンブリ) が返され、Windows API に対して行われた関数呼び出しを特定できるはずです。
ソースファイルを紛失し、本当に「作業を元に戻す」だけでよい場合は、逆コンパイラから有用なものが得られないため、再コーディングを開始することもできます。Ms-DOS COM ファイル (Windows COM と混同しないでください!) の時代以来、私は逆コンパイラから再コンパイル可能なものを得ることができませんでした。
高水準言語で書かれた最新のファイルには、ソース コードを再構築するために必要なすべてが含まれていません。
例、そしてそれは氷山の一角にすぎません:
- Delphi の最適化リンカーは、使用されていないコードをスキップします。コード行にブレーキポイントを配置したいときに、プログラムの開始時に、コードが最適化されているためにブレーキポイントが無視されることに気づいたことはありませんか?
- Delphi の最適化コンパイラには、コードでさまざまなことを行うオプションがあります。
- プロシージャをインライン化できます (したがって、プロシージャを記述した場所ではなく、呼び出しが行われる場所になります)。
- 「for」ループを巻き戻すことができます(つまり、「for i:=1 to 10 do something」があった場所では、「something; something; something;...」になります。
- ローカル変数が最適化され、アドレスが再利用されます。
- データ構造は、その日のルールに合わせて調整されます。したがって、1 ワード + 1 バイト構造のメモリには、予想される 3 バイトではなく、4 または 8 バイトが含まれる可能性があります。
- コードは他のライブラリからインポートされます。DLL は DCU ではありません。3 行の DLL は、実際にはこれらの "uses" 句から数千行のコードをインポートする場合があります。
より多くの情報を取得できる Java や .Net 言語とは異なり、Delphi はネイティブであるため、アセンブリ コード以上のものを取得することはできません。