blob: 8e13b98dcda3e3f316c8eb47b755a8973f2c6953 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
//|_ _ _. _ ._ |_ _. _ |
//| | (/_ (_| \/ (/_ | | | | (_| (_ |<
#define db( x ) __asm _emit x
#define heavens_gate_enter() \
db( 0x6a ) db( 0x33 ) /*push 0x33*/ \
db( 0xe8 ) db( 0x0 ) db( 0x0 ) db( 0x0 ) db( 0x0 ) /*call rel32 0x0*/ \
db( 0x83 ) db( 0x4 ) db( 0x24 ) db( 0x5 ) /*add dword ptr[ esp ], 0x5*/ \
db( 0xcb ) /*retf - pop ip and cs*/
#define heavens_gate_exit() \
db( 0xe8 ) db( 0x0 ) db( 0x0 ) db( 0x0 ) db( 0x0 ) /*call rel32 0x0*/ \
db( 0xc7 ) db( 0x44 ) db( 0x24 ) db( 0x4 ) \
db( 0x23 ) db( 0x0 ) db( 0x0 ) db( 0x0 ) /*mov dword ptr[ rsp + 0x4 ], 0x23 - return address hack (come back to wow64 cs)*/\
db( 0x83 ) db( 0x4 ) db( 0x24 ) db( 0xd ) /*add dword ptr[ rsp ], 0xd*/ \
db( 0xcb ) /*retf*/
#define rex_w db( 0x48 ) __asm
#define rex_wb db( 0x49 ) __asm
#define rex_wr db( 0x4c ) __asm
#define x64_push( x ) db( 0x48 | ( ( x ) >> 3 ) ) db( 0x50 | ( ( x ) & 7 ) )
#define x64_pop( x ) db( 0x48 | ( ( x ) >> 3 ) ) db( 0x58 | ( ( x ) & 7 ) )
|