1、重定向
自xp系统开始,64位的系统引入了新技术:
文件重定向和注册表重定向
这个技术是为了在64位系统下将32位程序和64程序分离开
在64位平台上运行32位程序的模拟器被称为WOW64
WOW64全称为”Windows 32 on Windows 64″
2、注册表重定向
在X64系统里面,一些特殊的注册表键会被分为2个独立的部分
(1)32位程序对注册表某些位置的操作存在重定向
比如对HKLM/Software访问,会被WOW64重定向至HKLM/Software/Wow6432Node
具体存在重定向的注册表位置可参考如下链接:
https://msdn.microsoft.com/en-us/library/windows/desktop/aa384253(v=vs.85).aspx
(2)64位程序对注册表的操作不存在重定向
(3)补充
HKLM/Software/Wow6432Node下保存的均为32位程序的注册表信息
如果在HKLM\Software\Wow6432Node\Microsoft\CurrentVersion\Run
添加启动项来运行dll,系统默认会执行32位的rundll32.exe(路径为:c:\windows\SysWOW64\rundll32.exe)来加载dll,加载的dll必须是32位(如果是64位会出错)
当然,如果在HKLM\Software\Microsoft\Windows\CurrentVersion\Run
添加启动项来运行dll,则默认为64位rundll32.exe,加载64位dll文件
3、文件重定向
同样,文件系统也存在2个独立的部分
(1)32位程序对%systemroot%/system32
的操作存在重定向
32位文件会被重定向到%systemroot%/SysWOW64
(2)64位程序对文件操作不存在重定向
(3)补充
%systemroot%/SysWOW64下的都为32位程序,在里面可以找到32位的cmd、calc等
小结
基于以上的分析,整理出了如下操作注册表键值和文件系统的方法
32位程序在64系统下执行的时候,如果有对注册表和文件的操作,重定向的细节必须考虑。
对注册表操作:
访问HKLM\Software\
的实际路径为HKLM\Software\Wow6432Node\
对文件操作:
访问c:\windows\Sysnative\
的实际路径为 c:\windows\system32\
访问c:\windows\system32\
的实际路径为 c:\windows\SysWOW64\
引用Stuart@ukstufus文章中的两幅图,能够帮助大家更清晰的认识其中的细节。
感谢Stuart@ukstufus的分享。解决了我的问题,也让我有了更清楚的认识。
《Persistence Architecture Matters》的链接:
https://labs.mwrinfosecurity.com/blog/persistence-architecture-matters/
更多学习资料:
- https://msdn.microsoft.com/en-us/library/windows/desktop/aa384232(v=vs.85).aspx
- https://msdn.microsoft.com/en-us/library/windows/desktop/aa384187(v=vs.85).aspx