c++ - 如何查看驻留在进程中的 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;
}
解决方案
推荐阅读
- php - 使用 ajax 在循环中填充表单字段
- javascript - 字符串文字第一个还是第二个串联?
- c# - Unity 中的浮动文本
- ruby-on-rails - 使用简单的 for 选择并保存多个复选框
- ruby-on-rails - 多态 has_and_belongs_to_many
- python - 如何根据部分字符串匹配加入两个数据框?
- python - 如何仅针对 Tensorflow 中的给定索引将矩阵乘以标量?
- android - 如何禁用 TabLayout 的点击效果?
- sql - SQL 占总平均值和加权平均值的百分比
- html - 浏览器下载两个 src 相同的 img 元素多少次?