首页 > 解决方案 > 如何查看驻留在进程中的 DLL 的内存视图?

问题描述

如何查看驻留在进程中的 DLL 的内存视图?

我试图通过查看内存来找到 IMAGE_DOS_HEADER 的 e_lfanew。很明显,我可以在二进制文件中找到它,但是在进程运行后,我很难在内存中找到它。

以下代码应获取 dll 文件的路径并将二进制文件读取到缓冲区。从那里我想识别 IMAGE_DOS_HEADER 的 e_lfanew。只是想知道我如何在内存视图表示中实际看到这一点

bool readNtHeader(const char* dllfile)
{

    BYTE* data;
    IMAGE_NT_HEADERS* pOldNtHeader;

    std::ifstream File(dllfile, std::ios::binary | std::ios::ate);

    auto FileSize = File.tellg();

    data = new BYTE[static_cast<UINT_PTR>(FileSize)];

    File.seekg(0, std::ios::beg);
    File.read(reinterpret_cast<char*>(data), FileSize);
    File.close();

    std::cout << "pOldNtHeader:" << reinterpret_cast<IMAGE_DOS_HEADER*>(data)->e_lfanew << std::endl;

    pOldNtHeader = reinterpret_cast<IMAGE_NT_HEADERS*>(data + reinterpret_cast<IMAGE_DOS_HEADER*>(data)->e_lfanew);

    return true;
}

标签: c++winapidll

解决方案


推荐阅读