我试图反向工程的一些软件,以便更好地理解操作系统的较低级别的工作方式。我想,以取代原地址从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等,或者可能会提及特定库文件以在 –