OSの下位レベルの仕組みをよりよく理解するために、いくつかのソフトウェアをリバースエンジニアリングしようとしています。objdump -d からの未加工のアドレス ダンプを objdump -t からの対応する値に置き換えたいと考えていますが、これは -Dslx オプションでさえ見逃しているようです。
objdump -t からの出力は次のようになります。
00000000 l d .bss 00000000 .bss
00000000 g .text 00000000 fred
インデックス1とNFでawkを使用して必要な情報を抽出できます(実際に使用したコードは別のコンピューターにあります)。レコードごとに、フィールドを配列に入れます。
fields[$1] = $NF
そしてここから私はちょっと迷っています。これらのエントリを使用して、出現するすべての「場所」を
fields[location]
この時点で、次に使用する sed コマンドを印刷してから、コマンドを手動でコピーして貼り付けて実行しています。のように出てくる
objdump -d test.o | sed -e 's/<loc1>/<name1>/g'
-e 's/<loc2>/<name2>/g'
. . .
-e 's/<locN>/<nameN>/g'
私はこれがあまり好きではありません。これを完全に自動化したいのです。私は Bash のいくつかのトリックに比較的慣れていないので、聞いたことのない簡単な解決策があるかもしれません。
例:(この時点では実際の入力にアクセスできませんが、これは私が持っている目標に十分近いです)
00000000 g O .bbs 00000010 size
00000012 g O .bbs 00000004 count
00000200 l F .bbs 00000020 anotherVar
+
0x0000030 <main>:
0x00000034 xx xx mov 0x00000000, %eax
0x00000038 xx push 0x00000012
0x0000004c xx xx xx subl 0x00000200, %ebx
=
0x0000030 <main>:
0x00000034 xx xx mov size, %eax
0x00000038 xx push count
0x0000004c xx xx xx subl anotherVar, %ebx