なぜ DLL を C に変換するのですか?
DLL(Windows PE フォーマット)にはコンパイルされたバイナリコードが含まれており、元の変数名、コメント、構造はコンパイラによって破棄されています。開発者が DLL をデコンパイルするのは、ソースコードが紛失または入手不能な場合、セキュリティのためにサードパーティ製ライブラリを監査する場合、または機能を別のプラットフォームに移植する場合などです。
DLL から C への変換方法
dotPeek FREE
.NET DLL の場合: .dll を dotPeek にドラッグし、名前空間ツリーを参照します。次に名前空間を右クリックして «Export to Project» を選択し、.cs ソースファイルをフォルダに書き出します。
ILSpy OPEN-SOURCE
.NET DLL の場合: «File > Open» から開き、アセンブリツリーで型を選択します。その後 «File > Save Code» でデコンパイルされた C# ファイルをエクスポートします。
Ghidra OPEN-SOURCE
ネイティブ DLL の場合: ファイルをインポートして自動解析(auto-analysis)を実行し、«Symbol Tree» でエクスポートを参照して、«Decompiler» ペインで C 言語風の疑似コードを確認します。«File > Export Program > C/C++» からエクスポート可能です。
これらの形式について
DLL(Dynamic Link Library)は、プログラムの実行中にロードされるコンパイル済みコードを保持する Windows のライブラリファイルです。ダブルクリックして開くものではありません。アプリが DLL の欠落を報告した場合は、ランダムなサイトからファイルをダウンロードするのではなく、そのアプリを再インストールするか、Microsoft Visual C++…
.DLL の詳細を開く →.c ファイルは C 言語のソースコードです。これはプログラマーが記述するプレーンテキストであり、コンパイラによって実行可能なプログラムに変換されます。Notepad++、VS Code、Vim などのテキストエディタで開いて閲覧できます。コンパイルして実行するには、GCC、Clang、または Visual Studio…
.C の詳細を開く →品質と注意点
- .NET DLL には CIL バイトコードが含まれており、ほぼ完璧に C# へデコンパイルできます。C や C++ からコンパイルされたネイティブ DLL は、
param_1やlocal_8のような自動生成された名前を持つ近似的な疑似コードのみを生成します。 - dotPeek と ILSpy はプレーンな C ではなく C#(または VB.NET)を出力します。特に C 言語が必要な場合は、出力を手動で翻訳する必要があります。
- 元の変数名、コメント、コード構造は、デコンパイルされた .NET 出力と逆アセンブルされたネイティブ出力の両方に存在しません。これらはコンパイラによって破棄されるためです。