【问题标题】:Explanation of the signature address shift in PE filePE文件中签名地址移位说明
【发布时间】:2014-03-14 05:52:56
【问题描述】:

我发现要检查“PE”字符串到文件中,我不能只用我要读取的文件中的数据填充 IMAGE_NT_HEADERS 结构,但我必须以这种方式移动字节:

ntHeader = (IMAGE_NT_HEADERS *) (dosHeader->e_lfanew + (DWORD) dosHeader);

还有(DWORD)转换不是很清楚,因为编译器不会抛出错误 (显然它在检查PE格式时不起作用)。 我到处都检查过[也在stackoverflow :)],这条线总是出现,但我找不到我的问题的答案。

感谢您的宝贵时间。 再见!

【问题讨论】:

标签: c++


【解决方案1】:

NT 标头位于文件顶部的e_lfaNew(以字节为单位)给出的偏移量处。由于 DOS 头文件是 .exe 文件中的第一个内容,因此找到 NT 头文件的一种方法是这样的(尽管风格很丑):

ntHeader = (IMAGE_NT_HEADERS *) (((uint8_t *)dosHeader) + dosHeader->e_lfaNew);

这会将 DOS 标头指针视为基字节指针,并向其添加所需的字节偏移量。

【讨论】:

    猜你喜欢
    • 2011-12-26
    • 1970-01-01
    • 2018-06-16
    • 1970-01-01
    • 2013-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多