私は別のプロセスのメモリからデータを読み込もうとするアプリケーションを作成しています。この他のプロセスは、ターゲットデータ(アセンブリ)が存在するはずのlibmono.0.dylibをロードしています。他のプロセスのロードされたdylibからデータフィールドを読み取る
mach-oベースのコードでは、ターゲットプロセスのロードされたdylibを反復し、上記のlibのmachヘッダーのbaseaddressを取得できます。それは
MonoDomain* mono_get_root_domain (void) { return mono_root_domain; }
のように見えるモノのソースコードで
:ここからは私は私に関連するデータと構造体を返す関数のアドレスを与えるシンボルテーブルに取得することができます0x18a934のアドレスが返された構造体を保持しているという私の仮定は正しいですか?はいの場合、このアドレスはdylibヘッダー(= header_addr + addr)からの相対アドレスですか、スライドを追加する必要があるのですか? 私はこのアドレスに従うと私が遭遇するすべての他のアドレスに同じ保持をしますか?
ありがとうございます!私はすでにその部分を持っています、私はロードされたヘッダーアドレスとシンボルへのポインタを持っています。上記のように、逆アセンブルされたコードの "内側"にあるポインタが見つかりました。どうすれば使用できますか?私がdylib_base_address + pointerを読んだ場合、ランダムなものしか得られません。それは何のVM地域ですか? – GooKSL