我試圖反向工程的一些軟件,以便更好地理解操作系統的較低級別的工作方式。我想,以取代原地址從objdump的-d從objdump的-t相應的值,這意味着即便在-Dslx選擇似乎錯過轉儲。使用sed和awk,共同建立替換映射
從objdump的-t輸出看起來像這樣:
00000000 l d .bss 00000000 .bss
00000000 g .text 00000000 fred
,我能夠提取使用在AWK索引1和NF(I所使用的實際的代碼是在另一臺計算機)所需的信息。對於每條記錄,我把字段放入一個數組中:
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'
我不是很喜歡這個,我想完全自動化這一點。我與一些猛砸技巧的經驗相對較少所以機會是有一個簡單的解決方案,我從來沒有聽說過的。
例如:(我沒有在這一點上獲得實際的投入,但這是目標我有足夠接近)
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
請編輯您的問題,包括給出的輸入「數據」和輸出示例的兩種來源的例子。祝你好運。 – shellter
重新添加示例後,您可能會編寫一個小小的C程序,我們可以運行您的命令來編譯/ objdump -d/objdump -t等,或者可能會提及特定庫文件以在 –