Я использую DyninstAPI (а именно, компонент SymtabAPI) для перезаписи таблиц символов в двоичных файлах. Для этого я использую следующие методы:
data_region->setPtrToRawData((void*) new_raw, data_region->getRegionSize())
Метод успешно возвращается, я проверяю свои коды ошибок и даже перечитываю раздел данных, который был успешно заменен. Проблема заключается в том, что исходный двоичный файл не переписывается с новым разделом .data
, а исходный раздел .data
сохраняется.
Я изучил руководство, чтобы увидеть, есть ли какая-то функция commit , но ни одна из них не задокументирована, и ничего подобного не упоминается в примерах. EDIT : Я только что прочитал некоторый исходный код для класса Region
, и похоже, что я по сути делаю то, что делает patchData
(в случае, если это метод, который я должен использовать) .
Предложения
Руководства по программированию доступны по адресу http://www.paradyn.org/html/manuals.html.
P.S. надеюсь, более уважаемый пользователь может добавить для меня теги DyninstAPI
и SymtabAPI
.