
静态库和动态库的学习使用
小米的修行之路
是日已过,命亦随减;如少水鱼,斯有何乐?当勤精进,如救头燃!但念无常,慎勿放逸。
展开
-
MFC规则DLL
1、MFC规则DLL特点:●DLL内部可以使用MFC类库;●可以被其他所有支持DLL技术的语言所调用。2、MFC规则DLL的入口点函数:默认情况下DLL的入口点函数都是DllMain,MFC规则DLL也不例外,但是因为是支持MFC的,所以在MFC规则DLL中,DllMain函数已经被MFC所封装,所以在你的工程中是看不到DllMain函数的,就好像在MFC对话框工程中你找不到W原创 2017-04-02 20:44:19 · 732 阅读 · 0 评论 -
静态库的创建和使用
在我们的应用中,有一些公共代码是需要反复使用,就把这些代码编译为“库”文件;在链接步骤中,连接器将从库文件取得所需的代码,复制到生成的可执行文件中。这种库称为静态库【1】,其特点是可执行文件中包含了库代码的一份完整拷贝;缺点就是被多次使用就会有多份冗余拷贝。一、创建静态库:编译器 VS2010创建一个 win32项目LibTest 选择静态库。为了简单,此静态库只包含一个Add()函数,原创 2017-03-27 09:50:01 · 783 阅读 · 0 评论 -
动态库函数的导出
一、DLL程序入口点函数:CUI控制台程序(不是DOS):mainGUI用户界面程序:WinMainDLL程序入口点函数:DllMain,注意:大小写是区别的(仅导出资源的DLL可以没有DllMain函数)。BOOL APIENTRY DllMain( HMODULE hModule, DWORD ul_reason_for_ca原创 2017-03-27 10:35:53 · 3611 阅读 · 0 评论 -
动态链接库中导出函数的调用
动态链接库中的函数导出成功后,其它EXE程序要使用导出函数,就会涉及到如何调用动态链接库。调用DLL也分为两种方法:隐式调用和显示调用:1、隐式调用:隐式链接的特点是由编译器完成对DLL的加载和程序结束时对DLL的卸载工作,如果程序结束时如果还有其他应用程序使用该DLL,那么系统会使DLL的使用计数减1,当DLL的使用计数降为0时,会将DLL从内存中删除。★优缺点:隐式链接DLL的原创 2017-03-27 10:56:49 · 2239 阅读 · 0 评论 -
使用远程线程进行DLL注入
/*原理:在目标进程中创建一个线程,让创建的线程载入自己的DLL*/void CInjectDLLDlg::OnBnClickedBtnThread(){ /*获得正在运行进程的句柄*/ HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_CREATE_THREAD | ...原创 2018-04-08 09:16:40 · 615 阅读 · 0 评论 -
使用动态库DLL导出类
首先创建一个DLL工程,名称为ServMgrDll,新建一个类,包含头文件ServConfig.h和cpp文件ServConfig.cpp。类的代码如下:.h:#pragma once/* 如果没有定义:ServConfigAPI,则ServConfigAPI定义为:_declspec(dllimport), 编译器就知道可执行源文件要从DLL模块中导入某些函数。*/#ifdef...原创 2018-04-02 16:18:06 · 2149 阅读 · 1 评论 -
Windows挂钩注入DLL
代码实现(被注入进程):private: DWORD m_dwId; HHOOK m_hHook; HMODULE m_hmDll;private: DWORD GetPIdByProcessName(const char* pszProcessName); BOOL InjectDllBySetWindowsHook(ULONG32 ulTargetProcessID,char* p...原创 2018-04-04 15:33:27 · 920 阅读 · 0 评论