能力值:
( 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;
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
Barrientos
PE是Windows可执行程序的数据结构,winnt.h 是Visual Studio 提供的头文件,二者没有任何关系。
winnt.h 只是提供解析 PE 文件的结构体,方便开发者用代码解析 PE ...
+5 谢谢大佬,“winnt.h 只是提供解析 PE 文件的结构体,方便开发者用代码解析 PE 文件“,这句有些听不懂,这个头文件是有实际作用,还是只用来看的?如果有实际作用,它主要用来做什么呢?
|
能力值:
( 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 中的哪部分的数据结构
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
Barrientos
Windows.h是一个最重要的头文件,它包含了其他Windows头文件,这些头文件的某些也包含了其他头文件。这些头文件中最重要的和最基本的是:
Windef.h 基本数据类型定义。
Winnt. ...
winnt.h本身与编译exe无关,但要读取和操作pe需要按一定的结构去读取,winnt.h已经都定义好结构了,我们就可以利用他们定义好的结构,在此基础之上去搞,这样减轻工作量,我理解的对吗?
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
敏而好学
winnt.h本身与编译exe无关,但要读取和操作pe需要按一定的结构去读取,winnt.h已经都定义好结构了,我们就可以利用他们定义好的结构,在此基础之上去搞,这样减轻工作量,我理解的对吗?
对的,可以这么理解。可以参考知乎这个答案 C语言为什么只需要include<stdio.h>就能使用里面声明的函数? - 醉卧沙场的回答 - 知乎 945K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6%4N6%4N6Q4x3X3g2*7K9r3W2Z5N6g2)9J5k6h3y4G2L8g2)9J5c8Y4q4#2k6i4y4@1K9h3!0F1i4K6u0r3x3K6R3&6x3e0t1$3z5e0b7@1i4K6u0r3j5h3&6K6N6$3g2J5i4K6u0r3x3e0p5$3z5e0M7H3z5e0V1$3y4l9`.`.答案里面用的是Linux下的 stdio 文件举例,Windows下的 winnt.h 也是一样的道理,设计思路是一样的。
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
敏而好学
winnt.h本身与编译exe无关,但要读取和操作pe需要按一定的结构去读取,winnt.h已经都定义好结构了,我们就可以利用他们定义好的结构,在此基础之上去搞,这样减轻工作量,我理解的对吗?
你的vs是2015版的吗?
|
|
|