69 lines
1.2 KiB
C
69 lines
1.2 KiB
C
|
|
#define XBE_MAGIC 0x48454258
|
|
|
|
#define XBE_EP_RETAIL 0xA8FC57AB
|
|
#define XBE_EP_DEBUG 0x94859D4B
|
|
|
|
#define XBE_KP_RETAIL 0x5b6d40b6
|
|
#define XBE_KP_DEBUG 0xefb1f152
|
|
|
|
#define XBE_EP_CHIHIRO 0x40B5C16E
|
|
#define XBE_KP_CHIHIRO 0x2290059D
|
|
|
|
#define XBE_MAX_THUNK 378
|
|
|
|
typedef struct {
|
|
ut32 magic;
|
|
ut8 signature[0x100];
|
|
ut32 base;
|
|
ut32 headers_size;
|
|
ut32 image_size;
|
|
ut32 image_header_size;
|
|
ut32 timestamp;
|
|
ut32 cert_addr;
|
|
ut32 sections;
|
|
ut32 sechdr_addr;
|
|
ut32 init_flags;
|
|
ut32 ep;
|
|
ut32 tls_addr;
|
|
ut32 pe_shit[7];
|
|
ut32 debug_path_addr;
|
|
ut32 debug_name_addr;
|
|
ut32 debug_uname_addr;
|
|
ut32 kernel_thunk_addr;
|
|
ut32 nonkernel_import_dir_addr;
|
|
ut32 lib_versions;
|
|
ut32 lib_versions_addr;
|
|
ut32 kernel_lib_addr;
|
|
ut32 xapi_lib_addr;
|
|
ut32 shit[2];
|
|
} __attribute__((packed)) xbe_header;
|
|
|
|
#define SECT_FLAG_X 0x00000004
|
|
#define SECT_FLAG_W 0x00000001
|
|
|
|
typedef struct {
|
|
ut32 flags;
|
|
ut32 vaddr;
|
|
ut32 vsize;
|
|
ut32 offset;
|
|
ut32 size;
|
|
ut32 name_addr;
|
|
ut32 refcount;
|
|
ut32 shit[2];
|
|
ut8 digest[20];
|
|
} __attribute__((packed)) xbe_section;
|
|
|
|
typedef struct {
|
|
char name[8];
|
|
ut16 major, minor, build;
|
|
ut16 flags;
|
|
} __attribute__((packed)) xbe_lib;
|
|
|
|
typedef struct {
|
|
xbe_header *header;
|
|
int kt_key;
|
|
int ep_key;
|
|
} r_bin_xbe_obj_t;
|
|
|
|
|