32位程序如何在64位系统上运行_WOW64!Hooks:深入考察WOW64子系统运行机制及其Hooking技术(上)...

975131b8c0ce87d5d61089479484f802.png

在本文中,我们将为读者详细介绍WOW64子系统运行机制及其Hooking技术。

Microsoft公司一直以其向后兼容性而闻名。几年前,当他们推出Windows的64位版本时,他们需要提供与现有32位应用程序的兼容性。为了实现32位和64位应用程序的无缝衔接,WoW(Windows on Windows)系统便应运而生了;在本文中,我们将其称为“WOW64”,它负责将所有Windows API调用从32位用户空间转换为64位操作系统内核。本文主要分为两个部分。首先,我们将深入研究WOW64系统本身。为此,我们将考察一个来自32位用户空间的调用,并跟踪它最终过渡到内核的步骤。在本文的第二部分,我们将考察两种hooking技术及其有效性。我将介绍该系统的工作原理,恶意软件滥用它的方式,并详细介绍一种机制,通过这个机制可以从用户空间钩住所有WoW系统调用。请注意,文中的所有信息对于Windows 10, version 2004之后的版本来说起都是正确的;而在某些情况下,与较旧的Windows版本的实现方式可能存在差异。

声明

首先,这是一个已有多位作者研究过的课题。也就是说,虽然本文对高效探索WOW64内部机制至关重要,但是,如果这些作者不公开发布其出色的研究成果,那么,我们将不得不花费更多的研究时间。本文参考的文献包括:

  1. (Wbenny): 关于ARM架构WOW64内部结构及其运行机理的详细阐述。

  2. (ReWolf):一个PoC天堂之门的实现代码。

  3. (JustasMasiulis):一个非常简洁的C++天堂之门实现代码。

  4. (MalwareTech):详细解释了WOW64的分段机制。

WOW64系统的内部工作原理

为了了解WOW64系统的内部运行机制,我们需要考察来自32位用户模式的调用序列,是如何通过系统DLL映射到内核空间的对应代码的。在这些系统DLL中,操作系统将检查相关的参数,并最终将其传递给名为syscall stub的存根函数。这个syscall stub负责将用户空间的调用转换为内核中的API调用。在64位系统中,syscall stub的实现方法非常简单,因为它会直接执行syscall指令,具体如图1所示:

68508fae19d3808b8618d6832e826eb6.png

图1 WOW64系统的Syscall Stub

图2显示了运行在WOW64上的32位进程的syscall stub:

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值