基于visual c++之windows核心编程代码分析(53)在C++中嵌入汇编实现DLL注入源代码

本文探讨了如何在C++中利用嵌入式汇编实现DLL注入,通过详细分析源代码,展示了C++和汇编语言在Windows核心编程中的联合应用。
摘要由CSDN通过智能技术生成

我们在C++编程的时候,有些时候获取更大编程余地,以及为了缩减代码,经常使用插入汇编语言进行联合编程。

下面我们实践在C++中嵌入汇编实现DLL注入源代码。

DLL动态函数链接库的接口如下。

#include "stdafx.h"
#include "resource.h"

//
//*******全局变量声明*******
HINSTANCE hInst = NULL;
HWND hDlg;
//


//
//*******函数原型声明*******
extern "C" _declspec(dllexport) void WaiGuaProc();

BOOL CALLBACK DlgProc(HWND hDlg , UINT message , 
					  WPARAM wParam , LPARAM lParam);
//


BOOL APIENTRY DllMain( HANDLE hModule, 
					  DWORD  ul_reason_for_call, 
					  LPVOID lpReserved
					  )
{
	switch(ul_reason_for_call)
    {
	case DLL_PROCESS_ATTACH:
		hInst = (HINSTANCE)hModule; 
		WaiGuaProc();
		break;
		
	case DLL_PROCESS_DETACH: 
		break;
    }
    return TRUE;
}


extern "C" _declspec(dllexport) void WaiGuaProc()
{
	
	hDlg = CreateDialog(hInst , MAKEINTRESOURCE(IDD_MAINDLG) , 
		NULL , (DLGPROC)DlgProc);
	MessageBox(NULL , "Test!" , "Test" , MB_OK);
	return;
}

BOOL CALLBACK DlgProc(HWND hwndDlg,  // handle to dialog box
					  UINT uMsg,     // message
					  WPARAM wParam, // first message parameter
					  LPARAM lParam  // second message parameter
					  )
{
	switch(uMsg)
	{
	case WM_INITDIALOG:
		ShowWindow(hwndDlg , SW_SHOW);
		return TRUE;
		
	case WM_CLOSE:
		DestroyWindow(hwndDlg);
		return TRUE;
		
	case WM_COMMAND:
		if(LOWORD(wParam) == IDOK)
		{
			MessageBox(NULL , "Insert Dll Success!" , "Test!" , MB_OK);
		}
		return TRUE;
	}
	return FALSE;
}


 

 

下面我们进行C++与汇编联合编程,请认真阅读代码注释,

 

#include "Tlhelp32.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/
// CAboutDlg dialog used for App About

class CAboutDlg : public CDialog
{
public:
	CAboutDlg();
	
	// Dialog Data
	//{
  {AFX_DATA(CAboutDlg)
	enum { IDD = IDD_ABOUTBOX };
	//}}AFX_DATA
	
	// ClassWizard generated virtual function overrides
	//{
  {AFX_VIRTUAL(CAboutDlg)
protected:
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
	//}}AFX_VIRTUAL
	
	// Implementation
protected:
	//{
  {AFX_MSG(CAboutDlg)
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()
};

CAboutDlg::CA
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

尹成

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值