windows.h是一个重要的包含文件。他包括了若干头文件,这些头文件定义了windows的所有数据类型,函数调用数据结构及常量标识符,他们在windows文档中占据着非常重要的地位
程序入口
c程序的入口是main windows程序的入口是winmain
第三个参数lpstr和pstr都声明了指向字符串的指针 其中前缀lp表示长指针 ,是十六位windows的产物
然后我们来看一下入口函数的分析 返回值为int winapi标识符表示一种函数调用约定,表明程序参数的入栈顺序,大多数windows函数调用约定都被定义为winapi
然后来看winmain的 参数 第一个参数是实例句柄,用来标识这个程序,因为之前的计算机并发运行,每个模块都有自己的句柄,程序才可以分配资源
第二个参数,可以标记前面已经运行的程序的句柄,目前这一个参数一般为null
第三个参数是用来运行程序的命令行,有些windows程序启动时,会用他把文件装入内存
第四个参数用来指明程序如何显示,或正常显示,或最大化到全屏,最小化到任务栏
函数定义没啥可以说的,这里可以给出原型
#include <windows.h>
int WINAPI WinMain(HISTANCE hInstance,HISTANCE hPreInstance,PSTR szCmdline ,int iCmdShow)
{
MessageBox(NULL,TEXT("Hello!Windows"),TEXT("MSG"),0);
return 0;
}
函数的返回值被定义为int WINAPI标识符被定义为#define WINAPI __stdcall
这规定了函数调用约定 标明参数是如何进入的堆栈的,这在后面对我们逆向的影响很大 现在暂时不需要了解 绝大多数的windows函数调用都被定义为WINAPI
Windows程序的创建
VS2019 版本没有win32及win32项目的,但是有新的设置办法,如下:
新建项目 — Windows桌面向导 — 创建项目,弹出框 — 框里面选择桌面应用程序(.exe)—-选择建立空项目—创建。
此时的项目即满足win32的空项目。
网站标题:CV鼻祖洋芋
原创文章,作者:locus,如若转载,请注明出处:https://blog.cvpotato.cn/forward-code/283/
本博客所发布的内容,部分为原创文章,转载注明来源,网络转载文章如有侵权请联系站长!