zoukankan      html  css  js  c++  java
  • 简单API练手:(1)复制自身程序到windows目录和系统目录下;(2)获得系统的相关信息。

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

     1 #include <windows.h>
     2 #include <stdio.h>
     3 #include <string.h>
     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 <windows.h>
     2 #include <stdio.h>
     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 
    ",OsVer.szCSDVersion);
    22         else if(OsVer.dwMajorVersion==5&&OsVer.dwMinorVersion==0)
    23             printf("Windows 2K 
    ");
    24     }else{
    25         printf("Other System 
    ");
    26     }
    27 
    28     GetComputerName(szComputerName,&nSize);
    29     printf("Computer Name is %s 
    ",szComputerName);
    30 
    31     nSize=MAXBYTE;
    32     GetUserName(szUserName,&nSize);
    33     printf("User Name is %s 
    ",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:保存缓冲区的长度,该参数是一个输入/输出参数。

  • 相关阅读:
    基于jQuery的鼠标悬停时放大图片的效果制作
    让document.write的广告无阻塞的加载
    浅谈DOM事件的优化
    前端自动化构建和发布系统的设计
    parseQueryString
    元素缩放
    apply用法
    3D旋转
    CSS居中的多种方法
    System Center Configuration Manager 2016 域准备篇(Part2)
  • 原文地址:https://www.cnblogs.com/jiu0821/p/4398072.html
Copyright © 2011-2022 走看看