目录

动态链接库DLL

DLL动态链接库及入口函数

LoadLibrary 加载动态链接库

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
HMODULE LoadLibraryW(
  [in] LPCWSTR lpLibFileName	//模块名称
);

HMODULE LoadLibraryA(
  [in] LPCSTR lpLibFileName	//模块名称
);

//模块名称可以是库模块(.dll文件)或可执行模块(.exe文件)

//返回值
//如果函数成功,返回值是模块的句柄。
//如果函数失败,返回值为NULL。
  • __stdcall 参数从右向左压入堆栈

  • APIENTRY 则表明此函数是应用程序的入口点,其实都是__stdcall

  • winapi 表示此函数是普通的winapi函数调用方式,其实都是__stdcall

DLL注入调用CALL

CWinApp::InitInstance

初始化函数(一般用于MFC初始化实例)

释放动态链接库

FreeLibrary 释放动态链接库

1
2
3
BOOL FreeLibrary(
  [in] HMODULE hLibModule	////模块的句柄
);

释放dll并结束进程

FreeLibraryAndExitThread 释放dll并结束进程

1
2
3
4
5
6
void FreeLibraryAndExitThread(
  [in] HMODULE hLibModule,	//模块的句柄
  [in] DWORD   dwExitCode		//调用线程的退出代码
);
//实例
FreeLibraryAndExitThread(theApp.m_hInstance,(DWORD)theApp.m_hInstance);

DLL宏

  • DLL_PROCESS_ATTACH 宏 进程载入 // 1

  • DLL_PROCESS_DETACH 宏 进程卸载 // 0