首页
社区
课程
招聘
未解决 [求助]winnt.h和PE是什么关系,为什么exe的PE结构会根据winnt.h改变?
发表于: 2020-5-9 16:33 2712

未解决 [求助]winnt.h和PE是什么关系,为什么exe的PE结构会根据winnt.h改变?

2020-5-9 16:33
2712

exe格式的文件,在编译时,会用到winnt.h吗?为什么和里面的结构是对应的?


[课程]Android-CTF解题方法汇总!

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 1680
活跃值: (958)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
PE是Windows可执行程序的数据结构,winnt.h 是Visual Studio 提供的头文件,二者没有任何关系。
winnt.h 只是提供解析 PE 文件的结构体,方便开发者用代码解析 PE 文件
编译时一般不会用到 winnt.h,包含 windows.h 时才有可能用到,比如这句代码:
PIMAGE_DOS_HEADER pDosHeader = (PIMAGE_DOS_HEADER)pFileAddress;
2020-5-9 16:50
1
雪    币: 5514
活跃值: (2254)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
Barrientos PE是Windows可执行程序的数据结构,winnt.h 是Visual Studio 提供的头文件,二者没有任何关系。 winnt.h 只是提供解析 PE 文件的结构体,方便开发者用代码解析 PE ...
+5 谢谢大佬,“winnt.h 只是提供解析 PE 文件的结构体,方便开发者用代码解析 PE 文件“,这句有些听不懂,这个头文件是有实际作用,还是只用来看的?如果有实际作用,它主要用来做什么呢?
2020-5-9 16:56
0
雪    币: 1680
活跃值: (958)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
Windows.h是一个最重要的头文件,它包含了其他Windows头文件,这些头文件的某些也包含了其他头文件。这些头文件中最重要的和最基本的是:
Windef.h 基本数据类型定义。
Winnt.h 支持Unicode的类型定义。
Winbase.h Kernel(内核)函数。
Winuser.h 用户界面函数。
Wingdi.h 图形设备接口函数。
以上来自百度百科---------------------------------
以解析PE为例,你可以不调用 winnt.h ,但是你得自己定义 PE 的数据结构,winnt.h 只是帮你打包好了 PE 的数据结构,自己直接调用就行了
winnt.h 在代码中有什么作用,取决于你在代码中调用 wint.h 中的哪部分的数据结构
2020-5-10 13:09
1
雪    币: 5514
活跃值: (2254)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
Barrientos Windows.h是一个最重要的头文件,它包含了其他Windows头文件,这些头文件的某些也包含了其他头文件。这些头文件中最重要的和最基本的是: Windef.h 基本数据类型定义。 Winnt. ...
winnt.h本身与编译exe无关,但要读取和操作pe需要按一定的结构去读取,winnt.h已经都定义好结构了,我们就可以利用他们定义好的结构,在此基础之上去搞,这样减轻工作量,我理解的对吗?
2020-5-10 14:59
0
雪    币: 1680
活跃值: (958)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
敏而好学 winnt.h本身与编译exe无关,但要读取和操作pe需要按一定的结构去读取,winnt.h已经都定义好结构了,我们就可以利用他们定义好的结构,在此基础之上去搞,这样减轻工作量,我理解的对吗?
对的,可以这么理解。可以参考知乎这个答案
C语言为什么只需要include<stdio.h>就能使用里面声明的函数? - 醉卧沙场的回答 - 知乎
https://www.zhihu.com/question/389126944/answer/1169709964
答案里面用的是Linux下的 stdio 文件举例,Windows下的 winnt.h 也是一样的道理,设计思路是一样的。 
2020-5-10 18:51
0
雪    币: 1540
活跃值: (2807)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
敏而好学 winnt.h本身与编译exe无关,但要读取和操作pe需要按一定的结构去读取,winnt.h已经都定义好结构了,我们就可以利用他们定义好的结构,在此基础之上去搞,这样减轻工作量,我理解的对吗?
你的vs是2015版的吗?
2020-5-12 12:02
0
游客
登录 | 注册 方可回帖
返回
//