关闭

dll注入的一种方式

343人阅读 评论(0) 收藏 举报

一下是dll文件的制作,在创建dll工程时,选择第一个“空工程”,然后新建两个新文件 分别是xxx.cpp xxx.def

xxx.cpp


xxx.def


这就是xxx.dll的制作过程,简单不?

xxx.cpp

新建一个MFC的对话框程序,其中对话框的主界面是


为+、-按钮生成响应事件 其源代码如下:

void CDll_LoadDlg::OnBtnAdd() 
{
	// TODO: Add your control notification handler code here
	HINSTANCE hInst=LoadLibrary("Dll_Create.dll");//显示加载Dll_Create.dll
	typedef double (_stdcall *ADDPROC)(double a,double b);//函数名字叫什么都可以,但要保持上下一致
	ADDPROC Add=(ADDPROC)GetProcAddress(hInst,"add");//从Dll_Create中寻找名叫‘add’的函数,并在此程序中定义为‘Add’
	if(!Add)
	{
		MessageBox("获取函数地址失败");
		return;
	}
	UpdateData(TRUE);
	m_e=Add(m_1,m_2);
	UpdateData(FALSE);
	CString str;
	if(GetDlgItemText(IDC_S,str),str=="-")
	{
		SetDlgItemText(IDC_S,"+");
	}

	FreeLibrary(hInst);
	
	
}

void CDll_LoadDlg::OnBtnSub() 
{
	// TODO: Add your control notification handler code here
	HINSTANCE hInst=LoadLibrary("Dll_Create.dll");
	typedef double (_stdcall *ADDPROC)(double a,double b);
	ADDPROC Subtract=(ADDPROC)GetProcAddress(hInst,"subtract");
	if(!Subtract)
	{
		MessageBox("获取函数地址失败");
		return;
	}
	UpdateData(TRUE);
	m_e=Subtract(m_1,m_2);
	UpdateData(FALSE);
	CString str;
	if(GetDlgItemText(IDC_S,str),str=="+")
	{
		SetDlgItemText(IDC_S,"-");
	}
	FreeLibrary(hInst);
}

就此,对于dll的简单使用就终结了,这个例子最给我最深的感受是不用#include什么东西!!!!!

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:104203次
    • 积分:3350
    • 等级:
    • 排名:第10031名
    • 原创:243篇
    • 转载:3篇
    • 译文:2篇
    • 评论:7条
    收藏
    http://my.csdn.net/my/favorite
    最新评论