我正在使用DyninstAPI(即SymtabAPI组件)来重写二进制文件中的符号表。我正在使用以下方法:
data_region->setPtrToRawData((void*) new_raw, data_region->getRegionSize())
该方法成功返回,我检查错误代码,甚至重新读取已成功替换的数据部分。问题是原始二进制文件不会被新的原始.data
部分重写,原始的.data
部分仍然存在。
我仔细阅读了手册,看看是否有某种 commit 函数,但没有记录,并且示例中没有提到任何类型。 编辑:我刚刚阅读了Region
类的一些源代码,看起来我基本上正在执行patchData
所做的事情(如果是方法的话)我应该用。)
建议?
编程手册可在http://www.paradyn.org/html/manuals.html获得。
P.S。希望更有信誉的用户可以为我添加标记DyninstAPI
和SymtabAPI
。
答案 0 :(得分:1)
在与开发人员协商后,他们提醒我,我需要调用的函数是emit
,我最终使用的语法是:
symtab_obj->emit("new_binary.out");
谢谢德鲁!