1. C# Projeni DLL'ye Dönüştür
Visual Studio kullanıyorsan:
- File > New > Project deyip Class Library (.NET Framework) seç.
- Kodlarını bu projeye taşı.
- Build > Build Solution diyerek .dll dosyasını oluştur.
DLL'nin giriş noktası bir sınıfın içinde olacak, örneğin:
public class EntryPoint
{
public static void Main() // Olmaz, DLL'de çalışmaz.
public static void Init() // DLL inject olduktan sonra bu çağrılmalı
{
MessageBox.Show("DLL başarıyla inject edildi!");
}
}
2. DLL Injection İçin Yöntem Seç
DLL'yi oyuna inject etmek için birkaç yöntem var:
Kolay Yöntem (C++ veya Hazır Araçlarla):
- GH Injector, Extreme Injector gibi hazır injectör araçlarını kullanabilirsin.
- Bu araçlarda:
- Hedef süreç olarak oyunun .exe'sini seçersin.
- DLL'yi eklersin ve inject butonuna basarsın.
Kendi Injectörünü Yazmak (C++)
// basit bir injector
#include <windows.h>
#include <tlhelp32.h>
bool InjectDLL(DWORD#includenst char* dll#include HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid);
void* pRemoteBuf = VirtualAllocEx(hProcess, NULL, strlen(dllPath) + 1, MEM_COMMIT, PAGE_READWRITE);
WriteProcessMemory(hProcess, pRemoteBuf, dllPath, strlen(dllPath) + 1, NULL);
HANDLE hThread = CreateRemoteThread(hProcess, NULL, 0,
(LPTHREAD_START_ROUTINE)GetProcAddress(GetModuleHandle("kernel32.dll"), "LoadLibraryA"),
pRemoteBuf, 0, NULL);
WaitForSingleObject(hThread, INFINITE);
CloseHandle(hThread);
CloseHandle(hProcess);
return true;
}
DLL'ye Yönelik Kritik Not:
C# ile yazılmış DLL, .NET ortamında çalışır. Ancak native oyunlara inject etmek istiyorsan .NET uyumsuzluğu olabilir. Bu yüzden:
- Managed Injector (örneğin EasyHook) gibi araçlar kullan.
- Ya da DLL'i C++/CLI ile yaz (C# kodlarını içerebilir, ama native gibi davranır).
böyle bir bilgiye ulaştım belki işini görür