Folgende Warnungen sind aufgetreten:
Warning [2] preg_match_all(): The /e modifier is no longer supported, use preg_replace_callback instead - Line: 1007 - File: inc/highlighter.php PHP 7.4.33 (Linux)
File Line Function
[PHP]   errorHandler->error
/inc/highlighter.php 1007 preg_match_all
/inc/highlighter.php 112 generic_highlight
/inc/highlighter.php 48 generic_c_highlight
/inc/highlighter.php 53 cpp_highlight
/inc/plugins/coolcode.php 133 c_highlight
/inc/plugins/coolcode.php 61 coolcode_run
/inc/class_plugins.php 139 coolcode_end
/inc/class_parser.php 232 pluginSystem->run_hooks
/printthread.php 184 postParser->parse_message
Warning [2] Invalid argument supplied for foreach() - Line: 1008 - File: inc/highlighter.php PHP 7.4.33 (Linux)
File Line Function
/inc/highlighter.php 1008 errorHandler->error
/inc/highlighter.php 112 generic_highlight
/inc/highlighter.php 48 generic_c_highlight
/inc/highlighter.php 53 cpp_highlight
/inc/plugins/coolcode.php 133 c_highlight
/inc/plugins/coolcode.php 61 coolcode_run
/inc/class_plugins.php 139 coolcode_end
/inc/class_parser.php 232 pluginSystem->run_hooks
/printthread.php 184 postParser->parse_message



Home of Gamehacking - Archiv
Mittels DLL Injection eine Methode im Spiel aufrufen - Druckversion

+- Home of Gamehacking - Archiv (http://archiv-homeofgamehacking.de)
+-- Forum: Coding (http://archiv-homeofgamehacking.de/forumdisplay.php?fid=15)
+--- Forum: C, C#, C++, Visual C++ (http://archiv-homeofgamehacking.de/forumdisplay.php?fid=18)
+--- Thema: Mittels DLL Injection eine Methode im Spiel aufrufen (/showthread.php?tid=2842)



Mittels DLL Injection eine Methode im Spiel aufrufen - b4d-b0y - 10.11.2015

Hallo, wie ist sowas möglich (was in der Überschrift steht) bzw. wie kann ich die Funktionen bzw. Methoden eines anderen Processes (in diesem Fall eines Spieles) finden?
(Gehen wir mal davon aus, dass kein Source Code vom Game verfügbar ist).

Z.B. ist es ein Spiel, wo der Spieler Geld bekommt und ausgibt. Dann gibt es ja mindestens eine Methode, die das Geld ändert z.B. setMoney().

- Wie und mit welcher Hilfe (Tools) kann man so eine Funktion/Methode finden?
- Wie benutzt man so eine gefundene Methode in eigener DLL, die man später injected?


RE: Mittels DLL Injection eine Methode im Spiel aufrufen - Acubra - 10.11.2015

Hey,
da hast du dir ja mal wieder nicht die einfachste Aufgabe ausgesucht. Um umzusetzen was du dir vorstellst musst du ne Menge Ahnung von Assembler haben.
Du musst nämlich nicht nur in Erfahrung bringen welche die richtige Funktion ist, sondern auch wieviele Argumente die Funktion übergeben bekommt, welche das sind und was du Funktion zurückgibt. Dafür würde ich OllyDBG und IDA benutzen. Einfach über IDA ne statische Analyse der Funktion und Parameter machen und mittels Olly die Funktion breakpointen--> im Spiel ausführen--> gucken welche Adressen und Werte die Parameter haben. Die Funktion an sich würde ich folgendermaßen im Beispiel Geldcheat suchen:
1. Geldadresse finden (CheatEngine)
2. Find out what writes to this adress (CheatEngine)
3. in Olly breakpointen und Funktion reversen. Ggf. backtracen

Wenn du alle Informationen hast kannst du die Funktion über inline ASM callen (nicht empfehlenswert), oder indem du nen Funktionsprototyp definierst. Hier der Code dafür:

C Code
1
2
3
4
5
6
7
8
9
10
11
//Funktionsprototyp
typedef void(__thiscall *tSetMoney)(DWORD* pThis, int iMoney);
tSetMoney oSetMoney;
//Adresse funktion zuweisen
oSetMoney = (tSetMoney)(dwModuleBase + OFFSET_SETMONEY);

//Funktion ausführen
void myFunc()
{
     oSetMoney(&playerBase, 1337);
}