Ⅰ. はじめに
タイトルの通り「C#でDLLをInjectする方法」です。
2019/05/12時点で以下3つのインジェクト方法に対応してます。
- CreateRemoteThread
- ManualMap
- ThreadHijack
Ⅱ. やり方
1. NuGetから Bleak をインストールする
Install-Package Bleak
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
static void Main(string[] args) { var injector = new Injector(InjectionMethod.ManualMap, "notepad", "TestDLL.dll"); injector.InjectDll(); injector.RandomiseDllHeaders(); }
実行結果