私は以前に開発したソフトウェアに取り組んでおり、ソースコードはLinux共有ライブラリ(.so)としてコンパイルされており、ソースコードは存在しません。 Linux共有ライブラリからソースコードを抽出できるツールはありますか?
ありがとう、ラビ
ありません。コードをコンパイルすると、その痕跡はバイナリに残りません。マシンコードのみです。
逆コンパイラについて言及している人もいますが、それらはソースを抽出せず、実行可能ファイルを分析して、元のソースと同じ効果を持つソースを生成します。
オブジェクトコードを逆アセンブルして、マシンコードのニーモニックを取得できます。
objdump -D --disassembler-options intel sjt.o
Intel構文アセンブリを取得する
objdump -D --disassembler-options att sjt.o
またはobjdump -D sjt.o
AT&T構文アセンブリを取得する
しかし、元のソースコードは見つかりませんでした。セクションを調べて再構成することにより、プロセスを逆にしようとする場合があります。それは彼に地獄の痛みを与えるでしょう。
免責事項:私はHex-Rays SAで働いています。
Hex-Raysデコンパイラーは、real-lifex86およびARM =コード。元のソースが得られないのは事実ですが、それと同等のものが得られます。バイナリを削除しなかった場合は、関数名を取得したり、運がよければ型を取得したりすることもできます。およびローカル変数。ただし、シンボル情報がなくても、最初のラウンドの逆コンパイルに固執する必要はありません。Hex-Raysデコンパイラーはinteractive-変数や関数の名前を変更したり、変数のタイプを変更したり、元のコードの構造を表す構造タイプを作成したり、コメントを追加したりできます。少しの作業で、たくさん回復できますそして、必要なのは元のファイル全体ではなく、いくつかの重要なアルゴリズムまたは関数です-そしてこのHex-Raysは通常あなたに提供できます。
demovideos および comparisonpages をご覧ください。それでも「アセンブリを見つめる」と同じことだと思いますか?
いいえ。通常、これは不可能です。ソースはコンパイルされたオブジェクトまたはライブラリにパッケージ化されていません。