2015-12-21 137 views
-1

64 kernel32.dll中獲取函數的地址我有32bit應用程序上的Windows 64bit(WOW64)上運行。 我需要知道來自kernel32.dll的幾個WinAPI函數的地址。使用32位應用程序

A可以很容易得到32bitkernel32.dllGetProcAddress功能的地址功能很好。

但是Windows的32bit64bit應用程序提供不同kernel32.dll(或庫映射到應用程序地址空間中的不同地址 - 我不知道到底)。 而WinAPI功能32bit應用程序不一樣,在64bit應用程序的地址。

如何從64bitkernel32.dll使用32bit應用程序獲取地址功能? 我不想單獨啓動64bit進程來了解所需功能的地址。

+1

啓動一個單獨的64位處理,並用它來完成。可能即使這樣也不會對你有所幫助,因爲你無法在32位進程的64位進程中創建遠程線程。我想這就是你想要做的。 –

+0

謝謝你的幫助。我不知道,遠程線程總是失敗的x32-> 64 –

+1

你需要一個64位的注射器不論發生什麼事情,所以我認爲這是你的答案 –

回答

1

我不認爲這個問題是有意義的。由於ASLR,您只能問「當DLL加載到我的進程(*)中時函數的地址是多少」,並且無法將64位DLL加載到32位進程中。 (*)在特定的啓動後,每個進程運行的答案可能都是相同的,但我敢打賭,API爲每個進程支持kernel32.dll的不同地址。

(另外的過程中,64位的值是可能比將適合在一個32位指針大得多。)

+0

kernel32不受ASLR約束。它具有相同的基本系統範圍:http://www.nynaeve.net/?p = 198 –

+0

同意,但我的觀點是GetProcAddress API(和類似的)不會公開那個細節。 「同樣的基地址系統範圍」就是我想說的「在特定啓動後對每個進程運行相同」。 –

相關問題