2012-07-29 32 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