1

DyninstAPI(つまり、SymtabAPIコンポーネント)を使用して、バイナリのシンボルテーブルを書き換えています。私はそうするために次の方法を使用しています:

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

メソッドは正常に戻り、エラーコードを確認し、正常に置き換えられたデータセクションを再読み込みします。問題は、元のバイナリが新しいraw.dataセクションで書き換えられず、元のraw.dataセクションが保持されることです。

ある種のコミット関数があるかどうかを確認するためにマニュアルを精査しましたが、文書化されておらず、例にはそのようなものは何も記載されていません。 編集:私はクラスのソースコードのいくつかを読んだだけで、Region基本的に何をしているように見えますpatchData(それが私が使用すべきメソッドである場合)。

提案?

プログラミングマニュアルはhttp://www.paradyn.org/html/manuals.htmlで入手できます。

PSうまくいけば、より評判の良いユーザーがタグDyninstAPIを追加でき、SymtabAPI私にとっては。

4

1 に答える 1

1

emit開発者と相談した後、彼らは私が呼び出す必要のある関数はであり、私が使用することになった構文は次のとおりであると私に警告しました。

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

ありがとうドリュー!

于 2011-05-16T02:08:36.647 に答える