zoukankan      html  css  js  c++  java
  • ZwQueryVirtualMemory枚举进程模块

      ZwQueryVirtualMemory算是枚举进程方法中的黑科技吧,主要是该方法可以检测出隐藏的模块(类似IceSword)

      代码VS2015测试通过

      再次奉上源码链接:https://github.com/Arsense/WindowsCode/tree/master/ZwQueryVirtualMemory

    好的下面我们进入正题 这个没有深入研究 就是简单测试读了下代码 很久了 忘记差不多了 所以只是整理献上一个比较好的其他博友的

    1常见的枚举进程模块的方法有

    CreateToolhelp32Snaphot,Module32First,Module32Next.这几种 也是最通用的方法

    但ntdll.dll导出的未文档化接口ZwQueryVirtualMemory,。相比前面所介绍的方法,该方法可以检测出隐藏的模块(类似IceSword)。

    函数的原型:

         NTSTATUS
    NTAPI
    ZwQueryVirtualMemory(
                IN HANDLE ProcessHandle,
                IN PVOID BaseAddress,
                IN MEMORY_INFORMATION_CLASS MemoryInformationClass,
                OUT PVOID MemoryInformation,
                IN ULONG MemoryInformationLength,
                OUT PULONG ReturnLength OPTIONAL );
    
    typedef enum _MEMORY_INFORMATION_CLASS {
                MemoryBasicInformation,
                MemoryWorkingSetList,
                MemorySectionName,
                MemoryBasicVlmInformation
    } MEMORY_INFORMATION_CLASS;



    参数说明:
               ProcessHandle - 目标进程句柄
               BaseAddress    - 要查询的虚拟内存基址
               MemoryInformationClass - 要查询的内存信息类
               MemoryInformation - 用户提供的缓冲区,返回内存相关信息
               MemoryInformationLength - 缓冲区长度(字节为单位)
               ReturnLength - 实际返回的内存信息长度(字节为单位)
    返回值:
               NTSTATUS - 返回STATUS_SUCCESS或一个错误状态码

    我们要枚举进程模块信息, 需要用到两类内存信息MemoryBasicInformation和MemorySectionName,
    前者返回内存的基本信息, 比如: 内存区的基址,大小以及页面的各种属性等等, 而后者则返回内存段的名字,
    也就是我们所要找的模块名. 利用前者我们可以过滤出类型为MEM_IMAGE的内存段并得到内存段的基址和属性, 利用后者我们可以得到模块名.

    另外,需要注意的是该方法找出来的设备名是诸如DeviceHarddiskVolume1之类的名称,所以我们需要把它转换为我们习惯的DOS设备名,如C:,D:等。不能自以为是的认为DeviceHarddiskVolume1对应C盘DeviceHarddiskVolume2对应D盘。该转换是通过调用QueryDosDevice来实现的。

     

    大致就这么一些 感兴趣的朋友可以去我的github上下载自己运行调试就懂了 

  • 相关阅读:
    HDU 5793 A Boring Question 2016多校第六场1001
    HDU 5803 Zhu’s Math Problem 2016多校第六场1011 数位dp
    HDU 5787 K-wolf Number 2016多校第五场1007 数位dp
    HDU 5791 Two 2016多校第五场1011 LCS
    HDU 5773 The All-purpose Zero 2016多校第四场1010 LIS
    HDU 5768 Lucky7 2016多校第四场1005
    hdu 5002 Tree(LCT裸题)
    Wannafly挑战赛1 C MMSet2
    hdu 5398 GCD Tree(LCT动态维护最大生成树)
    hdu 5967 小R与手机(LCT裸题)
  • 原文地址:https://www.cnblogs.com/arsense/p/6417918.html
Copyright © 2011-2022 走看看