windows中重要的API略解

                ——该篇主要记录常用的API基本调用,做整理作用

Shellcode编写必用

动态载入DLL所需要的三个函数

    1、LoadLibraryA()

       用途:载入指定的DLL

    HMODULE WINAPI LoadLibraryA(
        _In_ LPCSTR lpLibFileName
        );
    WINBASEAPI _Ret_maybenull_

       参数:lpLibFileName

                通过名称指定要装载的DLL

        输出:返回装载 DLL 库模块的实例句柄

                   出错将返回一个错误代码

    2、GetProcAddress(,)

        用途:返回指定的模块中,指定的过程或函数的入口地址。

    WINBASEAPI FARPROC WINAPI GetProcAddress(
        _In_ HMODULE hModule,
        _In_ LPCSTR lpProcName
    );

        参数:hModule

                被调用函数的 DLL 句柄,这个值由 LoadLibrary 返回

                lpProcName

                需要查找入口地址的过程名或字符串指针

        输出:返回 DLL 中由参数 ProcName 指定的过程或函数的入口地址

                  否则返回 nil(/x00) 。

    3、FreeLibrary()   Tips:在编写shellcode时可以不使用

        用途:将指定的 DLL 文件从内存中卸载 1 次。

    WINBASEAPI BOOL WINAPI FreeLibrary(
        _In_ HMODULE hLibModule
        );

        参数:hLibModule

                欲卸载的dll库的句柄

        输出:使 DLL 的引用计数减 1,如果计数减为 0 则卸载该 DLL。

文件操作所需要的六个函数

        1、CreateFileA()

        用途:创建物理文件操作的句柄      Tips:不是创建文件,仅创建对象

    HANDLE CreateFile(
      LPCTSTR lpFileName, //指向文件名的指针
      DWORD dwDesiredAccess, //访问模式(写/读)
      DWORD dwShareMode, //共享模式
      LPSECURITY_ATTRIBUTES lpSecurityAttributes, //指向安全属性的指针
      DWORD dwCreationDisposition, //如何创建
      DWORD dwFlagsAndAttributes, //文件属性
      HANDLE hTemplateFile //用于复制文件句柄
      );

        参数:lpFileName

                要操作的文件名

        输出:返回一个可以操作的句柄

        2、GetFileSize()

        用途:获取指定文件的大小(长度)

    WINBASEAPI DWORD WINAPI GetFileSize(
        _In_ HANDLE hFile,
        _Out_opt_ LPDWORD lpFileSizeHigh
        );

        参数:hFile

                待获取大小的文件句柄
                lpFileSizeHigh
               指向一个 DWORD 变量的指针,该变量用于接收文件大小高位(第32-63位)部分的值。

               若不需获取这部分的值,该参数可以为 NULL 。
        输出:返回文件大小的低位,若指定高位也输出高位到指定指针

        3、CreateFileMappingA()

        用途:创建文件映射内核对象          TipS:约等于把文件从磁盘搬到内存

    HANDLE WINAPI CreateFileMappingA(
        _In_     HANDLE hFile,
        _In_opt_ LPSECURITY_ATTRIBUTES lpFileMappingAttributes,安全设置
        _In_     DWORD flProtect,//保护设置
        _In_     DWORD dwMaximumSizeHigh,//高位文件大小
        _In_     DWORD dwMaximumSizeLow,//低位文件大小
        _In_opt_ LPCSTR lpName//共享内存名称
        );

        参数:hFile

                    要操作的物理文件的句柄

                  dwMaximumSizeLow

                   由GetFileSize得到的低位文件大小

        输出:返回文件映像文件句柄      Tips:文件映像文件约等于文件在内存里的拷贝

        4、MapViewOfFile()

        用途:将文件映像文件映射到本进程的地址空间中

    LPVOID WINAPI MapViewOfFile(
        _In_ HANDLE hFileMappingObject,
        _In_ DWORD dwDesiredAccess,//映射对象的文件数据的访问方式
        _In_ DWORD dwFileOffsetHigh,//文件映射起始偏移的高32位.
        _In_ DWORD dwFileOffsetLow,//文件映射起始偏移的低32位.(64KB对齐不是必须的)
        _In_ SIZE_T dwNumberOfBytesToMap//指定映射文件的字节数,可以使用0
        );

        参数:hFileMappingObject

                  CreateFileMappingA返回的映像文件句柄   

        输出:返回映射视图文件的开始地址值        Tips:约等于找到文件在内存的起始位置

        5、UnmapViewOfFile() 

        用途:停止当前程序的一个内存映射 

    BOOL WINAPI UnmapViewOfFile(
        _In_ LPCVOID lpBaseAddress
        );

        参数:映射文件开始地址

        输出:非零表示从当前进程地址空间中移除映射        Tips:约等于把文件移出自己的地址空间

        6、CloseHandle()

        用途:关闭句柄

    BOOL WINAPI CloseHandle(
        _In_ HANDLE hObject
        );

        参数:hObject

                欲关闭的句柄

        输出:关闭返回TURE

遍历查找文件的三个函数

        1、FindFirstFileA()

        用途:根据文件名查找文件

    HANDLE WINAPI FindFirstFileA(
        _In_ LPCSTR lpFileName,
        _Out_ LPWIN32_FIND_DATAA lpFindFileData
        );

        参数:lpFileName

                文件名,接受通配符*和?

                lpFindData

                一个WIN32_FIND_DATA的结构,该结构说明了遍历到文件或者子目录的的属性

        输出:返回找到的第一个有效句柄

                  否则返回INVALID_HANDLE_VALUE

        2、FindNextFileA()

        用途:遍历查找文件

    BOOL WINAPI FindNextFileA(
        _In_ HANDLE hFindFile,
        _Out_ LPWIN32_FIND_DATAA lpFindFileData
        );

        参数:hFindFile

                FindFirstFileA返回的句柄

        输出:将找到的句柄保存在hFindFile中

                返回值0表示失败,1表示成功

        3、FindClose()

        用途:关闭FindFirstFile创建的搜索句柄    Tips:必须和FindFirstFile成对出现

    BOOL WINAPI FindClose(
        _Inout_ HANDLE hFindFile
        );

        参数:hFindFile

                   FindFirstFile创建的句柄

        输出:成功返回非零值




  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值