Ⅰ. はじめに
タイトルの通り「C#でDLLをInjectする方法」です。
2019/05/12時点で以下3つのインジェクト方法に対応してます。
- CreateRemoteThread
- ManualMap
- ThreadHijack
Ⅱ. やり方
1. NuGetから Bleak をインストールする
dotnet add package Bleak --version 3.1.1
2. サンプルプログラムを書く
TestDll.cpp
#include <Windows.h> BOOL WINAPI DllMain(HINSTANCE hinstModule, DWORD dwReason, LPVOID lpvReserved) { if (dwReason == DLL_PROCESS_ATTACH) { MessageBox(NULL, L"Hello world", L"Info", NULL); DisableThreadLibraryCalls(hinstModule); } return TRUE; }
Program.cs
using Bleak; var injector = new Injector("notepad", "TestDLL.dll", InjectionMethod.ManualMap, InjectionFlags.RandomiseDllHeaders); injector.InjectDll();
実行結果