PE文件中签名地址移位的解释
Explanation of the signature address shift in PE file
我发现要检查"PE"字符串到文件中,我不能只是用我想要读取的文件中的数据填充IMAGE_NT_HEADERS结构体,但我必须以这种方式移动字节:
ntHeader = (IMAGE_NT_HEADERS *) (dosHeader->e_lfanew + (DWORD) dosHeader);
还有(DWORD)强制转换,它不是很清楚,因为编译器不会抛出错误(显然,在检查PE格式时它不起作用)。我已经检查了到处[也在stackoverflow:)]和这一行总是出现,但我找不到我的问题的答案。
谢谢你的时间。再见!
NT头位于e_lfaNew
给出的距离文件顶部的偏移量(以字节为单位)。由于DOS头是.exe文件中的第一个内容,因此查找NT头的一种方法是这样的(尽管风格很难看):
ntHeader = (IMAGE_NT_HEADERS *) (((uint8_t *)dosHeader) + dosHeader->e_lfaNew);
这将DOS头指针视为基字节指针,并在其上添加所需的字节偏移量。
相关文章:
- 将数组的地址分配给变量并删除
- 空基优化子对象的地址
- 请解释"函数1(p1,p2,p3);"的输出
- C++ 指针的内存地址和指向数组的内存地址如何相同?
- 请解释这句话(cout<<1+int((a<b)^((b-a)&1) )<<endl
- 在C++中打印指向不同基元数据类型的指针的内存地址
- 如何在c++程序中找到函数的地址
- 向量元素的引用地址与它所指向的向量元素的地址不同.为什么
- 被解释为低级别const的const对象的地址
- 将地址分配给本地指针后,公共对象的变量将消失
- 计算每个节点的树高,帮助我解释这个代码解决方案
- 内联程序集printf将整数解释为地址
- Visual Studio(或任何其他工具)能否将地址解释为调用堆栈(boost上下文)的开头
- ob->我应该返回 ob "this" 的地址,但它返回 i ,任何解释?
- 如何解释地址固定器输出
- Visual Studio,解释变量的地址
- 使LLDB将地址重新解释为指向模板实例化类型对象的指针
- 使用reintepret_cast解释对象地址
- 使用地址解释强制转换const
- PE文件中签名地址移位的解释