なぜ SO を TXT に変換するのですか?
.so は 4バイトの ELF マジックヘッダーで始まり、マシン命令、シンボルテーブル、再配置データ、メタデータセクションなどのバイナリセグメントで構成されています。これらはテキストではなく、抽出可能なドキュメントコンテンツも存在しません。コンパイルされた ELF ライブラリと .txt プレーンテキストファイルの間には、構造的な関係はありません。
SO から TXT への変換方法
GNU Binutils OPEN-SOURCE
エクスポートされたシンボルには nm -D lib.so > output.txt、ELF 構造には readelf -a lib.so > output.txt、逆アセンブルには objdump -d lib.so > output.txt、埋め込まれた可読文字列には strings lib.so > output.txt を実行します。
Ghidra FREE
.so を Ghidra にインポートしてマシンコードを近似的な C 言語の疑似コードにデコンパイルし、それをエクスポートまたはテキストとして保存して詳細な分析を行うことができます。
これらの形式について
.soファイルは、LinuxおよびUnixにおける共有オブジェクトライブラリであり、Windowsの.dllに相当するものです。プログラムの実行時に自動的にロードされるため、直接開くことはありません。アプリが «cannot open shared object file»…
.SO の詳細を開く →TXT ファイルは、書式設定のないプレーンテキストであり、あらゆるコンピュータにおいて最もシンプルなドキュメント形式です。ダブルクリックすると、Windows では メモ帳、macOS では TextEdit、Linux では gedit…
.TXT の詳細を開く →品質と注意点
- テキストエディタで
.soを開くと文字化けが表示されます。これはバイトデータがエンコードされたテキストではなく、バイナリの ELF マシンコードであるためです。 - Binutils ツールの出力は調査データであり、形式の変換ではありません。テキストにダンプしても、元の
.soはバイナリライブラリのままです。 - 元のソースコードが必要な場合、
.soはコンパイル済みの出力です。バイナリの内部ではなく、プロジェクトのリポジトリでソースを探してください。
よくある質問
`.so` の拡張子を `.txt` に変更するだけではだめですか?
SO を TXT に変換するツールはありますか?
xxd lib.so を実行するのと同じです。