none
VirtualQueryex怎么扫描64位程序 RRS feed

  • 问题

  • 我打算做一个内存扫描器,需要调用这三个API,
    VirtualQueryex,ReadProcessMemory,WriteProcessMemory
    32位程序的内存扫描我已经完成.
    但是现在问题来了,我不知道怎么扫64位程序...


    有没有大佬给指条路?


    值得一提的是,我在MSDN上看到MEMORY_BASIC_INFORMATION结构有一个64位版本的,但是我不知道怎么调用
    还有,我的程序使用C#写的
    2018年4月9日 15:20

答案

  • Hi,

    感谢在MSDN论坛发帖。

    >>但是现在问题来了,我不知道怎么扫64位程序...

    值得一提的是,我在MSDN上看到MEMORY_BASIC_INFORMATION结构有一个64位版本的,但是我不知道怎么调用

    你不需要特殊调用VirtualQueryex函数,你只需要将MEMORY_BASIC_INFORMATION结构体显式定义为64位的MEMORY_BASIC_INFORMATION64, 并参照其中的数据结构和大小初始化即可。

    typedef struct DECLSPEC_ALIGN(16) _MEMORY_BASIC_INFORMATION64 {
        ULONGLONG BaseAddress;
        ULONGLONG AllocationBase;
        DWORD     AllocationProtect;
        DWORD     __alignment1;
        ULONGLONG RegionSize;
        DWORD     State;
        DWORD     Protect;
        DWORD     Type;
        DWORD     __alignment2;
    } MEMORY_BASIC_INFORMATION64, *PMEMORY_BASIC_INFORMATION64;

    鉴于你的程序是c#写的,请发布到c#中文论坛,在那里你会得到更好的帮助。

    谢谢你的理解与支持。

    Best Regards,

    Baron Bi


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2018年4月10日 1:26

全部回复

  • Hi,

    感谢在MSDN论坛发帖。

    >>但是现在问题来了,我不知道怎么扫64位程序...

    值得一提的是,我在MSDN上看到MEMORY_BASIC_INFORMATION结构有一个64位版本的,但是我不知道怎么调用

    你不需要特殊调用VirtualQueryex函数,你只需要将MEMORY_BASIC_INFORMATION结构体显式定义为64位的MEMORY_BASIC_INFORMATION64, 并参照其中的数据结构和大小初始化即可。

    typedef struct DECLSPEC_ALIGN(16) _MEMORY_BASIC_INFORMATION64 {
        ULONGLONG BaseAddress;
        ULONGLONG AllocationBase;
        DWORD     AllocationProtect;
        DWORD     __alignment1;
        ULONGLONG RegionSize;
        DWORD     State;
        DWORD     Protect;
        DWORD     Type;
        DWORD     __alignment2;
    } MEMORY_BASIC_INFORMATION64, *PMEMORY_BASIC_INFORMATION64;

    鉴于你的程序是c#写的,请发布到c#中文论坛,在那里你会得到更好的帮助。

    谢谢你的理解与支持。

    Best Regards,

    Baron Bi


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2018年4月10日 1:26
  • 非常感谢
    2018年4月10日 3:01