.NET的DLL不能直接注入,需要兩步:先把C++的DLL注入,然後C++把.NET的DLL引入:
// dllmain.cpp : 定義 DLL 應用程序的入口點。
#include "pch.h"
using namespace L006CsHookDll;
VOID Test()
{
Class1^ class1 = gcnew Class1();
class1->ShowMessage();
}
BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
Test();
break;
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
C#的DLL代碼如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace L006CsHookDll
{
public class Class1
{
public void ShowMessage()
{
MessageBox.Show("C# Hook OK", "C# OK");
}
}
}
示例來源:
網易雲課堂《2019 PC 微信探祕》