2011-05-15 52 views
1

我正在使用DyninstAPI(即SymtabAPI組件)來重寫二進制文件中的符號表。我用下面的方法來做到這一點:SymtabAPI不會隱含更改二進制

data_region->setPtrToRawData((void*) new_raw, data_region->getRegionSize()) 

的方法成功返回,我檢查我的錯誤代碼,我甚至重新讀出已經成功地被替換的數據段。問題是原始二進制不會被新的原始.data部分重寫,原始原始.data部分仍然存在。

我已經檢查了手冊,看看是否有某種提交函數,但沒有記錄任何文檔,並且在示例中沒有提到此類內容。 編輯:我剛剛通讀了Region類的一些源代碼,看起來我基本上在做patchData的工作(如果是我應該使用的方法)。

對此提出建議?

編程手冊位於http://www.paradyn.org/html/manuals.html

P.S.希望更有信譽的用戶可以爲我添加標籤DyninstAPISymtabAPI

回答

1

與開發商協商後,他們提醒我,我需要調用的函數爲emit,我結束了使用的語法是:

symtab_obj->emit("new_binary.out"); 

感謝德魯!