加载Dll的两种方法(一)

加载Dll有两种方法,分别为隐式加载(MemLoadDll)和显示加载(LoadLibrary)。

(一)

在gh0st中,得到server.dll之后,我使用了这两种加载dll的方式。

显示加载Dll方法:

1、使用LoadLibrary加载dll文件,获得dll模块的句柄

2、定义一个函数指针,并声明一个变量,即导出函数

3、使用GetProcAddress取得该dll中目标函数的地址,赋值给指针变量。

4、调用这个函数。

int main(int argc, char* argv[])
{
	printf("Hello World!\n");
	char strHost[]="127.0.0.1";          //声明上线地址
	int  nPort=80;                     //声明上线端口
	//载入服务端dll
    HMODULE hServerDll=LoadLibrary(".\\..\\..\\bin\\server\\server.dll");
	//声明导出函数类型--查看上一节导出的TestRun函数
    typedef void (_cdecl *TestRunT)(char* strHost,int nPort );
	//寻找dll中导出函数
    TestRunT pTestRunT=(TestRunT)GetProcAddress(hServerDll,"TestRun");
	//判断函数是否为空
	if (pTestRunT!=NULL)
	{
		pTestRunT(strHost,nPort);   //调用这个函数
	}

	return 0;
}



你可能感兴趣的:(gh0st)