131

C++ ソース コードを失ったプログラムがあります。優れた C++ 逆コンパイラはありますか?

私はすでにブーメランに出くわしました。

4

5 に答える 5

93

Hex-Rays のIDA Proを使用できます。通常、デバッグ情報をコンパイルしない限り、バイナリから適切な C++ を取得することはできません。コードを逆にするために多くの手作業を費やす準備をしてください。

バイナリを削除していない場合は、IDA Pro が C に似たコードを作成して作業できるので、希望があります。ただし、少なくとも数年前に使用したときは、通常は非常に粗いです。

于 2008-10-15T15:08:12.500 に答える
27

情報はコンパイル プロセスで破棄されます。逆コンパイラがクラスとすべてを含む論理的に同等のコードを生成できたとしても (おそらく不可能です)、自己文書化部分は最適化されたリリース コードではなくなりました。変数名も、ルーチン名も、クラス名もありません - アドレスだけです。

于 2008-10-15T15:15:32.220 に答える
21

はい、しかしそれらのどれも、努力する価値があるほど読みやすいコードを生成することはできません。古いアプリをゼロから書き直すよりも、内部にアセンブラー ブロックを含む逆コンパイルされたソースを読み取ろうとすることに多くの時間を費やすことになります。

于 2008-10-15T15:12:35.130 に答える
6

C++ コードを生成する逆コンパイラは見たことがありません。Cコードを生成するための合理的な試みを行ういくつかの実験的なものを見てきましたが、それらは特定のコンパイラのコード生成パターンの一致に依存する傾向がありました(変更された可能性があります.最後に調べてからしばらく経ちました) )。もちろん、象徴的な情報はなくなります。「逆コンパイラ」のGoogle。

于 2008-10-15T17:47:59.387 に答える
4

元のコードの規模と書き方によっては、お気に入りの言語 (まだ C++ である可能性があります) でやり直して、前回のバージョンで犯した間違いから学ぶ価値があるかもしれません。誰かが書いて捨てろって言ったじゃないですか。

nb 明らかに、これが巨大な製品である場合、時間の価値がない可能性があります。

于 2008-10-15T15:16:21.907 に答える