blob: f59f587a9321c5f64ca9e20ef003e0db1ba66ce9 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
#ifndef __BRIDGE_PRIVATE_H_
#define __BRIDGE_PRIVATE_H_
#include <stdint.h>
// the generic wrapper pointer functions
typedef void (*wrapper_t)(x64emu_t* emu, uintptr_t fnc);
#pragma pack(push, 1)
typedef union onebridge_s {
struct {
uint8_t CC; // CC int 0x3
uint8_t S, C; // 'S' 'C', just a signature
wrapper_t w; // wrapper
uintptr_t f; // the function for the wrapper
uint8_t C3; // C2 or C3 ret
uint16_t N; // N in case of C2 ret
const char* name; // name of the function bridged
};
struct {
uint8_t B8; // B8 00 11 22 33 mov eax, num
uint32_t num;
uint8_t _0F; uint8_t _05; // 0F 05 syscall
uint8_t _C3; // C3 ret
const char* syscall_name; //not used for now
};
uint64_t dummy[4];
} onebridge_t;
#pragma pack(pop)
#endif //__BRIDGE_PRIVATE_H_
|