Dll

  • 链接库分为动态和静态两种,后缀分别是.dll和.lib
  • 使用GetProcAddress获取Dll中导出函数的指针
  • 使用FreeLibrary卸载指定dll

    VS下,Dll分为3类

  1. 非MFC的Dll 即使用SDK API进行编程,能被其他所有语言调用
  2. MFC规则DLL 可以使用MFC进行编程,能被其他语言调用
  3. MFC扩展DLL 可以使用MFC进行编程,但只能被MFC编写的程序调用。
    学第一种。

    DLL的编写

  • DLL的导出, DLL的导出函数使用
    extern "C"_declspec(dllexport)

而导入函数使用

extern "C" _declspec (dllimport )
extern "C":作为一种编译约定
#pragma once:表示制备编译一次,而不会因重复包含而重复编译

线程注入:

  • 目标进程->传入DLL地址->开启远程线程->加载DLL->实现DLL注入
  • 实现线程注入,依次使用以下函数:
    OpenProcess  //获取已知进程的句柄
    VirtualAllocEx //在进程中申请空间
    WriteProcessMemory //向进程中写入东西
    GetProcAddress //取得函数在DLL中地址
    CreateRemoteThreadEx //在其他进程中创建新进程

往期精彩文章