|
CommonLib
|
Classes | |
| struct | usercall_info |
Enumerations | |
| enum class | user_register : uint64_t { none , EAX , ECX , EDX , EBX , ESP , EBP , ESI , EDI , ST0 , ST1 , ST2 , ST3 , ST4 , ST5 , ST6 , ST7 , XMM0 , XMM1 , XMM2 , XMM3 , XMM4 , XMM5 , XMM6 , XMM7 , count } |
| enum class | user_register_alias : uint64_t { none = user_register::none , AL = user_register::EAX , AX = user_register::EAX , EAX = user_register::EAX , CL = user_register::ECX , CX = user_register::ECX , ECX = user_register::ECX , DL = user_register::EDX , DX = user_register::EDX , EDX = user_register::EDX , BL = user_register::EBX , BX = user_register::EBX , EBX = user_register::EBX , SPL = user_register::ESP , SP = user_register::ESP , ESP = user_register::ESP , BPL = user_register::EBP , BP = user_register::EBP , EBP = user_register::EBP , SIL = user_register::ESI , SI = user_register::ESI , ESI = user_register::ESI , DIL = user_register::EDI , DI = user_register::EDI , EDI = user_register::EDI , ST0 = user_register::ST0 , ST1 = user_register::ST1 , ST2 = user_register::ST2 , ST3 = user_register::ST3 , ST4 = user_register::ST4 , ST5 = user_register::ST5 , ST6 = user_register::ST6 , ST7 = user_register::ST7 , XMM0 = user_register::XMM0 , XMM1 = user_register::XMM1 , XMM2 = user_register::XMM2 , XMM3 = user_register::XMM3 , XMM4 = user_register::XMM4 , XMM5 = user_register::XMM5 , XMM6 = user_register::XMM6 , XMM7 = user_register::XMM7 } |
| enum class | user_register_family : uint64_t { none , GPR = user_register::EAX , FPU = user_register::ST0 , SSE = user_register::XMM0 } |
Functions | |
| user_register_family | get_register_family (user_register in_register) |
| int | get_register_id (user_register in_register) |
| bool | is_protected_register (user_register in_register) |
| void * | emit_user_trampoline (const usercall_info &in_info, void *in_address, bool in_to_original=false) |
| void * | _get_post_hook_address (void *in_hook) |
|
strong |
Registers used for __usercall/__userpurge calling conventions.
These registers have been ordered in an specific way that line up with register IDs used for encoding instructions.
| Enumerator | |
|---|---|
| none | |
| EAX | |
| ECX | |
| EDX | |
| EBX | |
| ESP | |
| EBP | |
| ESI | |
| EDI | |
| ST0 | |
| ST1 | |
| ST2 | |
| ST3 | |
| ST4 | |
| ST5 | |
| ST6 | |
| ST7 | |
| XMM0 | |
| XMM1 | |
| XMM2 | |
| XMM3 | |
| XMM4 | |
| XMM5 | |
| XMM6 | |
| XMM7 | |
| count | |
|
strong |
|
strong |
|
inline |
|
inline |
Emits a trampoline that forwards arguments from a function with custom calling convention to a __cdecl function in a hook defined with USER_HOOK.
| in_info | The info about the hook. |
| in_address | The address of the __cdecl function to trampoline to. |
| in_to_original | Determines whether this trampoline is going back to the original function. |
|
inline |
Gets the family a register belongs to.
| in_register | The register to check. |
|
inline |
Gets the ID of a register.
| in_register | The register to get the ID for. |
|
inline |
Checks if a register is protected and should be restored after calling the original function.
| in_register | The register to check. |