1

PPC コードを元の C コードに変換したいのですが、これを行う方法はありますか? おそらく人 (C コードを再構築するための PPC を知っている人など?) またはプログラム?

4

4 に答える 4

1

はいといいえ。

原則として、任意の言語のプログラムを他の言語に翻訳することは可能です。結果はきれいではありません。

既存のコードが実際にあまり巧妙な最適化を行わずにコンパイルした結果である場合は、かなり単純なプロセスで C に戻すことができる可能性があります。これは、少量のコードの場合、手作業で簡単に行うことができますが、退屈で面倒です。大規模なコード ベースではエラーが発生しやすくなります。

逆コンパイルについて主張するいくつかのリバース エンジニアリング ツールが世の中に出回っています。一般的には簡単な問題ではありません。

この問題を自動化する 1 つの方法は、C 言語のバックエンドを既にサポートしているコンパイラ用に PPC アセンブリ (またはバイナリ) のフロントエンドを作成することです。その結果、PPC コードを読み取り、高度に難読化された C コードを生成するクロス コンパイラが作成されます。たとえば、GCC 用の C バックエンドがあることは知っています。

採用するアプローチに関係なく、既存のバイナリに対して適切なテスト スイート (およびそれを実行する機能) を用意して、翻訳が同等であることを証明する手段を用意することが重要になる可能性があります。

編集: 元のコメントを取得することは決してなく、シンボルテーブルまたは同様のデバッグ情報にした元の変数名と関数名にのみアクセスできることに注意してください。

于 2010-12-04T01:19:21.717 に答える
0

Boomerangは、PPC 逆コンパイルをサポートしていると主張しています。

于 2010-12-04T01:17:33.153 に答える
0

いいえ。逆コンパイルは、c を戻すことと同じではありません。c を元に戻すことはできません。リバース エンジニアリングを試みて、その動作を理解しようとすることはできますが、一部の情報は永久に失われます。

これはブーメランプロジェクトからのものです:

ただし、一般的な逆コンパイラは、逆コンパイラのすべてのアクションを元に戻そうとするのではなく、結果が高レベルのソース コードになるまで入力プログラムを繰り返し変換します。したがって、元のソース ファイルは再作成されません。おそらくそれのようなものはありません。

そのため、C ソースである可能性がある(しかし決してわからない) C コードが作成されます。

于 2010-12-04T01:31:26.783 に答える