2

通常、私はごまかしてThreadBasicInformationのNtQueryInformationThreadを使用して、TebBaseAddressを取得します。

ただし、wow64スレッドには2つのスタックがあり、これは64ビットのTebのみを取得します。

4

3 に答える 3

2

私が見つけた最善の方法は、32ビットコンテキスト(GetThreadContextではなくWow64GetThreadContextを介して)を取得し、Wow64GetThreadSelectorEntryを使用してFS [0]のアドレスを取得してから、ReadProcessMemoryを使用することです。しかし、最大の問題は、これにはWin7 / Windows2008 Server R2が必要なことです)

于 2011-11-21T13:23:46.277 に答える
1

プロセスに接続するためにWindowsデバッグインターフェイスを使用していますか?その場合、イベントCREATE_THREAD_DEBUG_INFOおよびCREATE_PROCESS_DEBUG_INFOのlpThreadLocalBaseフィールドを使用して、新しいスレッドが作成されたときにTEBベースアドレスを取得できるはずです。

ただし、これは、デバッガーがプロセスの作成からプロセスを制御している場合にのみ機能すると思います。これは、既存のプロセスにアタッチするのに役立ちません。

于 2012-02-07T01:04:59.413 に答える
1

これは、文書化されていませんが、より簡単な方法です:http: //redplait.blogspot.ru/2012/12/teb32-of-wow64-process.html

于 2012-12-28T12:13:01.190 に答える