博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
简单API练手:(1)复制自身程序到windows目录和系统目录下;(2)获得系统的相关信息。...
阅读量:4585 次
发布时间:2019-06-09

本文共 3639 字,大约阅读时间需要 12 分钟。

1.复制自身程序到windows目录和系统目录下:

1 #include 
2 #include
3 #include
4 5 void CopySelf(); 6 7 int main(){ 8 CopySelf(); 9 return 0;10 }11 void CopySelf(){12 char szSelfName[MAX_PATH]={
0};13 char szWindowsPath[MAX_PATH]={
0};14 char szSystemPath[MAX_PATH]={
0};15 16 GetModuleFileName(NULL,szSelfName,MAX_PATH);17 GetWindowsDirectory(szWindowsPath,MAX_PATH);18 GetSystemDirectory(szSystemPath,MAX_PATH);19 20 strcat(szWindowsPath,"\\backdoor.exe");21 strcat(szSystemPath,"\\backdoor.exe");22 23 CopyFile(szSelfName,szWindowsPath,FALSE);24 CopyFile(szSelfName,szSystemPath,FALSE);25 }

相关API介绍:

1>获得自身程序所在路径的API定义:

DWORD GetModuleFileName{    HMODULE hModule,    //handle to module    LPTSTR  lpFilename, //file name of module    DWORD   nSize       //size of buffer};

三个参数,分别如下:

hModule:该参数在获得自身程序时使用为NULL。

lpFilename:该参数指定一个字符型的缓冲区,用于保存程序自身所在的路径。

nSize:该参数指定缓冲区的大小。

2>获得Windows目录的API的定义:

UINT GetWindowsDirectory{    LPTSTR lpBuffer,    //buffer for Windows directory    UINT uSize          //size of directory buffer};

两个参数,分别如下:

lpBuffer:指定一个字符型的缓冲区,用于保存Windows目录的路径。

uSize:指定缓冲区的大小。

3>获得系统目录的API函数的定义:

UINT GetSystemDirectory{    LPTSTR lpBuffer,    //buffer for system directory    UINT uSize          //size of directory buffer};

两个参数,分别如下:

lpBuffer:指定一个字符型的缓冲区,用于保存系统目录的路径。

uSize:指定缓冲区的大小。

4>拷贝文件的API函数的定义:

BOOL CopyFile{    LPCTSTR lpExistingFileName,  //name of an existing file    LPCTSTR lpNewFileName,       //name of new file    BOOL bFailIfExists           //operation if file exists};

三个参数,分别如下:

lpExistingFileName:指向一个已存在文件的路径,即原文件路径。

lpNewFileName:指向一个新的文件的位置,即欲拷贝到的文件的目的路径。

bFailIfExists:一个布尔型参数,如果参数为TRUE,若目的文件已存在则返回,复制失败;如果参数为FALSE,,若目的文件已存在则强行覆盖原有的文件。

2.获得系统的相关信息:

1 #include 
2 #include
3 4 void GetSysInfo(); 5 6 int main(){ 7 GetSysInfo(); 8 return 0; 9 }10 void GetSysInfo(){11 char szComputerName[MAXBYTE]={
0};12 char szUserName[MAXBYTE]={
0};13 unsigned long nSize=MAXBYTE;14 OSVERSIONINFO OsVer;15 16 OsVer.dwOSVersionInfoSize=sizeof(OSVERSIONINFO);17 GetVersionEx(&OsVer);18 19 if(OsVer.dwPlatformId==VER_PLATFORM_WIN32_NT){20 if(OsVer.dwMajorVersion==5&&OsVer.dwMinorVersion==1)21 printf("Windows XP %s \r\n",OsVer.szCSDVersion);22 else if(OsVer.dwMajorVersion==5&&OsVer.dwMinorVersion==0)23 printf("Windows 2K \r\n");24 }else{25 printf("Other System \r\n");26 }27 28 GetComputerName(szComputerName,&nSize);29 printf("Computer Name is %s \r\n",szComputerName);30 31 nSize=MAXBYTE;32 GetUserName(szUserName,&nSize);33 printf("User Name is %s \r\n",szUserName);34 }

相关API介绍如下:

1>获取操作系统版本:

BOOL GetVersionEx{    LPOSVERSIONINFO lpVersionInfo   //version information};

一个参数,如下:

lpVersionInfo:指向一个OSVERSIONINFO结构的指针。

typedef struct _OSVERSIONINFO{    DWORD dwOSVersionInfoSize;  //结构体大小    DWORD dwMajorVersion;       //主版本号    DWORD dwMinorVersion;       //次版本号    DWORD dwBuildNumber;            DWORD dwPlatformId;         //平台ID    TCHAR szCSDVersion[128];    //补丁包}OSVERSIONINFO;

dwPlatformId的取值有3个,而现在主要使用一个,即VER_PLATFORM_WIN32_NT。

2>获取计算机名称:

BOOL GetComputerName{    LPTSTR lpBuffer,    //computer name    LPDWORD lpnSize     //size of name buffer};

两个参数,分别如下:

lpBuffer:保存计算机名称缓冲区。

lpnSize:保存缓冲区的长度,该参数是一个输入/输出参数。

3>获取当前用户名称:

BOOL GetUserName{    LPTSTR lpBuffer,    //name buffer    LPDWORD nSize       //size of name buffer};

两个参数,分别如下:

lpBuffer:保存当前用户名称的缓冲区。

nSize:保存缓冲区的长度,该参数是一个输入/输出参数。

转载于:https://www.cnblogs.com/jiu0821/p/4398072.html

你可能感兴趣的文章
Jquery 操作Cookie
查看>>
nginx
查看>>
递归和非递归的二分查找
查看>>
JSP自定义标签
查看>>
项目测试流程
查看>>
《代码大全》学习之--使用变量的一般事项
查看>>
JS位操作符
查看>>
mongodb
查看>>
VC++使用socket进行TCP、UDP通信实例总结
查看>>
Docker 构建网络服务后本机不能访问
查看>>
element ui table单选框点击全选问题
查看>>
Prometheus+Grafana监控Kubernetes
查看>>
年假总述
查看>>
BIEE一些目录
查看>>
南阳97
查看>>
【LibreOJ 6278】 数列分块入门 2 (分块)
查看>>
利用Jmeter模拟Github登录
查看>>
解决mybatis空字段null字段不返回
查看>>
生命的意义
查看>>
Box-Muller 与 ziggurat
查看>>