Tesla.Angela
发表于 2014-8-16 12:11:37
[原创]WIN8/8.1X64上获取WOW64进程模块基址一个非常坑人的地方
大家都知道,WOW64进程一般有4个64位的DLL,以及N个32位的DLL。
4个64位的DLL分别是:wow64.dll、wow64win.dll、wow64cpu.dll、ntdll.dll,它们都在c:\windows\system32目录下。
在N个32位的DLL中,有一个32位的NTDLL,它在C:\WINDOWS\SYSWOW64目录下。其它的系统DLL,比如kernel32.dll,也在SYSWOW64目录下。
但是在WIN8上,如果用EnumProcessModulesEx来枚举模块,你会发现:有两个BASE不同的NTDLL,但显示的路径都在SYSTEM32目录下;其它诸如kernel32.dll的系统DLL,也全在SYSTEM32目录下。但对比一下64位进程的同名DLL的BASE,又不相同。
我一开始对这个现象感到百思不得其解,后来通过WINDBG才看出:除了BASE大于0xFFFFFFFF的DLL,即使路径显示在SYSTEM32目录下,实际上却是在SYSWOW64目录下!!!
为了解决这个问题,我写了一段QUICK AND DIRTY的代码。当你输入c:\windows\syswow64\ntdll.dll,将返回32位NTDLL的基址,输入c:\windows\system32\ntdll.dll,将返回64位NTDLL的基址。
**** Hidden Message *****
andylau004
发表于 2014-8-30 22:17:42
学习下,,大牛的文档
virus_kf
发表于 2014-10-30 14:53:04
没怎么看懂呢
mlyknown
发表于 2014-11-3 23:51:56
学习了
5ak
发表于 2014-11-9 15:56:56
恰好在这个地方有疑惑。谢谢分享
crkey
发表于 2015-7-4 00:15:42
遇到同样的问题,R3层要咋弄?
baohongyu
发表于 2015-8-1 20:19:01
回复.................
xiaomo
发表于 2015-10-11 15:49:57
学习啊
xiaomo
发表于 2015-10-11 15:49:59
学习啊
xiaomo
发表于 2015-10-11 15:50:02
学习啊
laily2008
发表于 2015-10-22 13:51:28
这是个头疼的问题,上次搞半天都没搞好...
luqi_44
发表于 2015-10-22 23:03:15
看看是怎么回事!!!!
link2006
发表于 2015-10-26 09:51:28
感谢楼主分享,顶贴支持~
yestodo
发表于 2015-10-26 14:38:39
哦,来看看是什么。
284406022
发表于 2015-10-27 00:09:11
来看看说法的
jgyolm
发表于 2016-3-14 15:31:43
thank you for share
Hijack
发表于 2016-4-13 11:15:19
学习一下。。。
haidejintou
发表于 2016-4-17 22:28:53
看看,啥东西
软绵绵
发表于 2016-4-17 22:30:27
学习了
锅炉猫MC
发表于 2016-4-24 21:20:33
a195097
发表于 2016-7-15 15:16:28
学习下,,大牛的文档
happyskysm
发表于 2016-9-6 09:54:47
一定要学习
黄枫叶
发表于 2016-9-6 20:14:13
原创意味着不开源??
chilun
发表于 2016-11-15 22:15:59
看看
liusenls
发表于 2016-11-17 23:17:26
学习了阿
flac
发表于 2016-12-29 13:55:45
正好要用到,谢谢分享
3207145141
发表于 2016-12-30 22:47:11
学习经验,少跳坑..
paigle
发表于 2017-1-4 10:58:11
经验=时间
freecat
发表于 2017-1-14 14:26:47
学习了
CleanLove
发表于 2017-4-23 23:14:45
恩 学习啦!
meesong
发表于 2017-5-29 12:43:45
学习!~
var
发表于 2017-6-23 10:02:07
因为windows将x86的dll都重写到syswow64了