重複の可能性:
C++ 逆コンパイラはありますか?
Visual Studio 6 C++ で動作する逆コンパイラはありますか?
MFCで書かれたexeファイルを逆コンパイルする方法が必要です.IDA Proを試しましたが、ファイルをアセンブリに変換しましたが、疑問符がたくさんあるのでうまくいきませんでした。ファイルからコードへの直接変換が不可能な場合、アセンブリを C++ に変換する方法はありますか? :(
ありがとう
重複の可能性:
C++ 逆コンパイラはありますか?
Visual Studio 6 C++ で動作する逆コンパイラはありますか?
MFCで書かれたexeファイルを逆コンパイルする方法が必要です.IDA Proを試しましたが、ファイルをアセンブリに変換しましたが、疑問符がたくさんあるのでうまくいきませんでした。ファイルからコードへの直接変換が不可能な場合、アセンブリを C++ に変換する方法はありますか? :(
ありがとう
いいえ。コンパイル プロセスでは、変数名を含むすべてのメタデータが破棄されます。また、最適化プロセスでは、元のソースの疑似コード レプリカでさえも復元が困難になります。
これは非常に単純化された例です。foo が int である "foo++" と書いたとしましょう。コンパイラによっては、これは次のいずれかにコンパイルできます。
inc dword ptr [esp+12h]
- foo はローカルとしてスタックに保持されますinc dword ptr [00000f00h]
- foo はヒープ変数ですadd dword ptr [00000f00h], 1
- インクリメントする別の方法mov eax, dword ptr [esp+12h]; inc eax
- スタックから eax に移動し、インクリメントします可能性は事実上無限です。
最善の策は、Hex-Rays Decompiler のようなものを調べることですが、安くはありません。IDA と連携して疑似 C コードを生成します。これを使用して、特定の関数やルーチンがどのように機能するかを調べることができます。