HookEngine
- Abhängigkeiten
- Ikarus
Ermöglicht das Einklinken an beliebigen Stellen einer Enginefunktion um eigenen Daedaluscode auszuführen.
Zerxes hat eine Liste aller Enginefunktionen bereitgestellt, inklusive Anzahl Bytes die für oldInstr eingetragen werden müssen. Diese Liste kann hier gefunden werden. Damit sollte es jedem möglich sein die HookEngine effektiv ohne IDA zu nutzen. Danke dafür!
- Inhaltsverzeichnis
- 1HookEngine
- 2HookEngineI
- 3HookEngineF
- 4IsHooked
- 5IsHook
- 6 IsHookI
- 7IsHookF
- 8RemoveHook
- 9RemoveHookI
- 10RemoveHookF
- 11ReplaceEngineFunc
- 12ReplaceEngineFuncI
- 13ReplaceEngineFuncF
- 14DisableEngineFunc
HookEngine
void HookEngine(int address, int oldInstr, string function)
- address : Addresse einer Enginefunktion an die die Funktion angehängt werden soll.
- oldInstr : Die Länge in Bytes der Anweisung die an 'address' zu finden ist, mindestens 5 Bytes (Notfalls nächste Zeile noch mitnehmen). Kann zB. in IDA nachgesehen werden.
- function : Die Daedalusfunktion die aufgerufen werden soll.
HookEngineI
Alias zu HookEngine mit funcIDvoid HookEngineF(int address, int oldInstr, int funcID)
HookEngineF
Alias zu HookEngine mit func-Parametervoid HookEngineF(int address, int oldInstr, func function)
IsHooked
Überprüft ob an einer vorgegebenen Adresse schon eine Hook vorhanden istint IsHooked(int address)
- address : Adresse einer Enginefunktion.
- return : Ob an der Adresse schon eine Hook existiert
IsHook
Überprüft, ob an einer Adresse schon eine Hook mit einer bestimmten Funktion vorhanden istint IsHook(int address, string function)
- address : Adresse einer Enginefunktion.
- function : Name einer Funktion
- return : Ob an der Adresse schon eine Hook mit dieser Funktion existiert.
IsHookI
Alias zu IsHook mit einer SymbolID als Parameterint IsHookI(int address, int funcID)
IsHookF
Alias zu IsHook mit einer Funktion als Parameterint IsHookF(int address, func function)
RemoveHook
Entfernt eine Funktion aus einer Hook, so dass sie nicht mehr aufgerufen wird.void RemoveHook (int address, int oldInstr, string function)§
- address : Addresse einer Enginefunktion an die die Funktion angehängt werden soll.
- oldInstr : Die Länge in Bytes der Anweisung die an 'address' zu finden ist, mindestens 5 Bytes (Notfalls nächste Zeile noch mitnehmen). Kann zB. in IDA nachgesehen werden.
- function : Die Daedalusfunktion die nicht mehr aufgerufen werden soll.
RemoveHookI
Alias zu RemoveHook mit funcIDvoid RemoveHook (int address, int oldInstr, int funcID)
RemoveHookF
Alias zu RemoveHook mit func-Parametervoid RemoveHook (int address, int oldInstr, func function)
ReplaceEngineFunc
Ersetzt eine Enginefunktion mit einer Daedalusfunktion.void ReplaceEngineFunc(int address, int thiscall_numparams, string replaceFunc)
- address : Adresse der Enginefunktion, die ersetzt werden soll
- thiscall_numparams : Anzahl der Parameter, die an die Engine Funktion übergeben werden, wenn es ein stdcall oder thiscall ist (sonst 0).
- replaceFunc : Name einer Daedalusfunktion, die stattdessen aufgerufen werden soll
ReplaceEngineFuncI
Alias zu ReplaceEngineFunc mit funcIDvoid ReplaceEngineFunc(int address, int thiscall_numparams, int funcID)
ReplaceEngineFuncF
Alias zu ReplaceEngineFunc mit func-Parametervoid ReplaceEngineFunc(int address, int thiscall_numparams, func function)
DisableEngineFunc
Sorgt dafür, dass eine Enginefunktion einfach übersprungen wird. Ist sehr delikat und wird nicht immer so einfach funktionieren.void DisableEngineFunc(int address, int thiscall_numparams)
- address : Adresse der Enginefunktion, die übersprungen werden soll
- thiscall_numparams : Anzahl der Parameter, die an die Engine Funktion übergeben werden, wenn es ein stdcall oder thiscall ist (sonst 0).