So tune ich meine Programme & Spiele
Als technikbegeisterter Leser hast du vielleicht schon einmal davon geträumt, ein Lieblingsspiel zu erweitern, ein Programm noch schlauer zu machen, oder eigene Debug-Tools zu zu entwickeln. Eine Methode, die hier nützlich sein kann, heißt DLL-Injektion. Klingt kompliziert? Keine Sorge – hier erkläre ich dir das Prinzip so einfach, dass auch du es verstehen kannst.
Was ist eine DLL-Injektion?
Bei der DLL-Injektion wird ein Zusatzmodul (eine sogenannte Dynamic Link Library = DLL) nachträglich in ein laufendes Programm geladen. Das ist wie ein Upgrade-Baustein, den du einem laufenden Programm „on the fly“ einsetzt – ohne das Programm selbst dabei zu verändern (was fast immer verboten ist).
So kannst du zum Beispiel:
- eigene Funktionen in ein Spiel einbauen
- Dinge am Bildschirm auslesen (z.B. Werte eines Counters)
- ein kleines Overlay erzeugen (z.B. eine Debug-Anzeige)
- Spielmechaniken nachvollziehen und besser verstehen
- alte Spiele an moderne Bildschirme oder Controller anpassen
Praktische Anwendungen für Programme & Spiele
| Idee | Beispiel |
|---|---|
| Overlay einblenden | Zeige Zusatzinfos wie FPS oder geheime Spielwerte (z.B. Health, Positionen, …) |
| Automatisierung | Schreibe ein Helfer-Tool, das monotone Aufgaben für dich im Spiel übernimmt |
| Modding | Lasse eigene Sounds oder Bilder an bestimmten Stellen einspielen |
| Debugging-Tool | Baue ein Modul, das live Eingaben oder Bewegungen protokolliert |
So funktioniert’s – Grundprinzip
- Du schreibst eine eigene DLL, die das tut, was du ins Spiel oder Programm einbringen willst.
- Dein „Injector“-Programm lädt diese DLL in den Speicher des Zielprogramms.
- Die DLL wird im Zielprozess aktiv und führt deinen Code aus.
Wichtige Funktionen, die man dabei in Windows typischerweise nutzt:
OpenProcess– öffnet das ZielprogrammVirtualAllocEx– reserviert Speicher im ZielWriteProcessMemory– schreibt deine DLL hineinCreateRemoteThread– startet deine DLL im Ziel
Beispielprojekt für B45T13R
Kannst du mir noch ansatzweise folgen und hast Bock auf mehr? Dann lass uns gemeinsam ein ganz einfaches und legales Beispielprojekt umsetzen. Wir schreiben eine eigene kleine DLL für das kostenlose Spiel AssaultCube auf unserem Windows Computer. Sobald sie geladen wird, werden die Lebenspunkte des Spielers auf das Maximum zurück gesetzt. So kannst du direkt erleben, wie ein einfaches Modul das Spielverhalten beeinflussen kann, ohne die Spieldateien selbst zu verändern.
Downloade das kostenlose Visual Studio Community direkt bei Microsoft und installiere es. Danach startest du deinen Rechner neu und kommst wieder hier her. Erst dann können wir weiter machen!
1. Neues DLL-Projekt anlegen
- Starte Visual Studio
- Erstelle ein neues Projekt: „Dynamische Linkbibliothek (DLL)“ mit C++
- Gib dem Projekt einen Namen, z. B. „
ACHealthDLL„
2. Code einfügen
Ersetze den Inhalt der Datei dllmain.cpp mit folgendem Code:
#include <windows.h>
typedef DWORD PTR; // Hilfs-Typ für Pointer
BOOL SetMaxHealth()
{
PTR base = 0x0050F4F4; // Bekannte Basisadresse des Spielerobjekts
PTR player = *(PTR*)base; // Adresse des Spielerobjekts holen
if (!player) return FALSE; // Sicherstellen, dass es gültig ist
int maxHealth = 100; // Gewünschter Lebenspunkte-Wert
*(int*)(player + 0xF8) = maxHealth; // Health-Wert setzen
return TRUE;
}
BOOL APIENTRY DllMain(HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved)
{
if (ul_reason_for_call == DLL_PROCESS_ATTACH) {
MessageBox(NULL, "Info: DLL erfolgreich geladen!", "AssaultCube DLL", MB_OK);
if (SetMaxHealth()) {
MessageBox(NULL, "Erfolg: Lebenspunkte gesetzt!", "AssaultCube DLL", MB_OK);
} else {
MessageBox(NULL, "Fehler: Spielerobjekt nicht gefunden.", "AssaultCube DLL", MB_OK);
}
}
return TRUE;
}
3. Kompilieren
- Gehe auf „Erstellen“ → „Projektmappe erstellen“
- Im Ausgabeverzeichnis findest du deine DLL-Datei, z. B.
Debug\ACHealthDLL.dll - Diese kannst du nun mit jedem herkömmlichen dll-injector in deinen Prozess laden
(ich werde in Kürze einen als Download auf der Website anbieten)
Was passiert genau, sobald diese DLL in das Spiel AssaultCube geladen wird?
Die DLL wird ins Spiel geladen (z. B. mithilfe eines Injectors) und verändert das Spiel
Sie zeigt dann eine Nachricht an, um dir zu zeigen das die dll richtig geladen wurde
Sie sucht im Speicher die Stelle mit den Lebenspunkten
Sie setzt die Lebenspunkte auf 100
Was ist ein DLL-Injector?
Ein DLL-Injector ist ein Programm, das deine DLL ins Spiel hineinlädt.
Er sorgt dafür, dass dein Code zur Laufzeit Teil des Spiels wird.
Wichtige Hinweise
Nutze solche Techniken nur bei Spielen wie AssaultCube, wo Modding erlaubt ist.
DLL-Injektion wird oft von Antivirenprogrammen beobachtet – du machst hier „nichts Böses“, aber dein PC könnte trotzdem Alarm schlagen !
