2012-07-29 47 views
1

我正在試圖在explorer.exe中做一個IAT hook。規格:Windows 7 x64,Visual C++。我已經達到了能夠從我選擇的任何可執行文件(除了C:\ Windows \ Explorer.exe)之外讀取thunk數據的程度。當我運行我的程序時,我在從該可執行文件讀取內存時收到訪問衝突。但是,當我對C:\ Windows \ system32 \ Explorer.exe和C:\ Windows \ sysWOW64 \ Explorer.exe運行此操作時,我沒有任何問題。爲什麼是這樣?是C:\ Windows \ Explorer.exe某種符號鏈接到另一個explorer.exe的?有什麼可以阻止我閱讀這個文件?Reading Explorer.exe的Thunk Data

回答

1

在我的Windows 7 X64的系統C:\windows\explorer.exe是一個64位的二進制數,PE32+格式,而c:\windows\syswow64\explorer.exe是一個32位的二進制,PE32格式。您的應用程序是否設計爲同時讀取PE32PE32+格式?

而且當從32位進程打開C:\Windows\System32\Explorer.exe時,該進程是重定向到c:\windows\syswow64\explorer.exe副本。從64位進程c:\windows\system32\explorer.exe不存在。

+0

首先,真棒信息。我的過程不考慮PE32 +格式。乍一看,將所有IMAGE_HEADER結構更改爲64位格式似乎很容易。你是否暗示我需要爲x64編譯我的程序才能讀取C:\ windows \ explorer.exe或只是進行更改以支持PE32 +格式化? – user850275 2012-07-29 20:08:08

+0

這取決於你的程序在做什麼。如果你只是想解析PE32 +格式,一個32位的二進制文件可以。然而,你說IAT Hooking,這意味着將你自己的代碼注入進程。在這種情況下,您注入的代碼體系結構需要與正在運行的進程的體系結構相匹配。因此,32位程序的32位代碼和64位程序的64位代碼。 – jcopenha 2012-07-29 20:23:35

+0

太棒了,謝謝jcopenha!我欠你一個! – user850275 2012-07-29 21:15:41