web-dev-qa-db-ja.com

C ++デコンパイラはありますか?

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

私はすでに Boomerang に出くわしました。

105
Bryan Denny

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

バイナリを削除しなかった場合、IDA ProがCに似たコードを生成できるため、ある程度の希望があります。少なくとも2、3年前に使用した場合は、通常は非常に荒いです。

77
David Holm

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

24
Dustin Getz

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

19
m_pGladiator

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

6
Ferruccio

元のコードの大きさと書き方によっては、お気に入りの言語(まだC++である可能性があります)でやり直し、前回のバージョンでの間違いから学ぶ価値があります。誰かが書いて捨てることについて一度も言わなかった?

n.b.これが巨大な製品である場合、明らかにそれは時間の価値がないかもしれません。

2
harriyott