GHIDRA:如何从文本(地图)文件加载符号
逆向工程
吉德拉
调试符号
2021-06-19 13:17:33
2个回答
这并不一定是你有特定的地图文件箱的支持,但是你应该能够使用Script Manager从Window在Ghidra菜单(代码浏览!)。
Ghidra/Features/Python/ghidra_scripts/ImportSymbolsScript.py
脚本又名ImportSymbolsScript
(来自脚本管理器)可能是您努力的良好开端。
这个脚本的描述是:
导入符号脚本.py
导入带有“symbolName 0xADDRESS”形式的行的文件
哇,'ImportSymbolsScript' 有帮助。我“拒绝”了那个地图文件
...
Address Publics by Value
0001:0000 byte_0
0001:001A start
0001:00D1 __nomain
0001:00D8 _fclose
0001:01DA __fsopen
...
进入:
0001:0000 byte_0
0001:001A start
0001:00D1 __nomain
0001:00D8 _fclose
0001:01DA __fsopen
0001:0214 _fopen
0001:0234 __close
...
...并在 GHIDRA '基本编辑器' 中修改了 ImportSymbolsScript.py,如下所示:
# Imports a file with lines in the form "0xSEGMENT:0xADDRESS symbolName"
# @category Data
# @author
f = "c:\Tools\!Temp\Portable_VB6\Vs6sp6B\setupsp6.map.txt"
# f.askFile("Give me a file to open", "Go baby go!")
# for line in file(f.absolutePath): # note, cannot use open(), since that is in GhidraScript
for line in file(f): # note, cannot use open(), since that is in GhidraScript
pieces = line.split()
(segm,offset) = pieces[0].split(":")
segm = "1000" # dirty hack !!!
address = toAddr(long(segm + offset, 16))
print "creating symbol", pieces[1], "at address", address
createLabel( address, pieces[1], False )
基本的变化是:
- 更改了pieces[]的输入顺序
- 添加了对段偏移的支持
- 修改/调试脚本时的硬编码文件路径以获得更好的工作流程(f = ...)
- 将该
"1000" +
部分添加到 toAddr() 中以模拟需要的段偏移“1000:...”
好吧,它奏效了!!!
:)
在运行脚本之前:
后: