11 #include "../format/xbe/xbe.h"
14 #include "../format/xbe/kernel.h"
33 off += 0x104 +
sizeof(
ut32) * 11;
77 return !memcmp(magic,
"XBEH", 4);
92 if ((obj->
header.
ep & 0xf0000000) == 0x40000000) {
161 if (
h->sections < 1) {
169 if (
h->sections < 1 ||
h->sections > 255) {
172 addr =
h->sechdr_addr -
h->base;
176 for (
i = 0;
i <
h->sections;
i++) {
184 if (name_addr > bf->
size || name_addr +
sizeof(
tmp) > bf->
size) {
250 for (
ut32 i = 0;
i <
h->lib_versions;
i++) {
275 kt_addr =
h->kernel_thunk_addr ^ obj->
kt_key;
314 const ut32 thunk_index = thunk_addr[
i] ^ 0x80000000;
316 if (thunk_addr[
i] & 0x80000000 && thunk_index > 0 && thunk_index <=
XBE_MAX_THUNK) {
338 if (!bf || !bf->
buf) {
349 memset(dbg_name, 0,
sizeof(dbg_name));
351 dbg_name[
sizeof(dbg_name) - 1] = 0;
356 ret->
type =
strdup(
"Microsoft Xbox executable");
373 .desc =
"Microsoft Xbox xbe format rz_bin plugin",
388 #ifndef RZ_PLUGIN_INCORE
RZ_API void rz_bin_symbol_free(RzBinSymbol *sym)
RZ_API RZ_OWN RzList * rz_bin_maps_of_file_sections(RZ_NONNULL RzBinFile *binfile)
Create a list of RzBinMap from RzBinSections queried from the given file.
static RzList * symbols(RzBinFile *bf)
static RzBinAddr * binsym(RzBinFile *bf, RzBinSpecialSymbol type)
static char * describe_xbe_lib_at(RzBuffer *b, ut64 off, ut64 filesz)
static RzList * libs(RzBinFile *bf)
static void destroy(RzBinFile *bf)
RZ_API RzLibStruct rizin_plugin
static bool check_buffer(RzBuffer *b)
static bool read_xbe_section(xbe_section *sect, RzBuffer *b, ut64 off)
static RzBinInfo * info(RzBinFile *bf)
static ut64 baddr(RzBinFile *bf)
static const char * kt_name[]
static bool read_xbe_header(xbe_header *hdr, RzBuffer *b, ut64 off)
static RzList * entries(RzBinFile *bf)
static bool read_xbe_lib(xbe_lib *lib, RzBuffer *b, ut64 off)
static bool load_buffer(RzBinFile *bf, RzBinObject *o, RzBuffer *buf, Sdb *sdb)
static RzList * sections(RzBinFile *bf)
RzBinPlugin rz_bin_plugin_xbe
RZ_API void Ht_() free(HtName_(Ht) *ht)
RZ_API const KEY_TYPE bool * found
return memset(p, 0, total)
memcpy(mem, inblock.get(), min(CONTAINING_RECORD(inblock.get(), MEMBLOCK, data) ->size, size))
RZ_API RZ_OWN RzList * rz_list_newf(RzListFree f)
Returns a new initialized RzList pointer and sets the free method.
RZ_API RZ_OWN RzList * rz_list_new(void)
Returns a new initialized RzList pointer (free method is not initialized)
RZ_API RZ_BORROW RzListIter * rz_list_push(RZ_NONNULL RzList *list, void *item)
Alias for rz_list_append.
RZ_API RZ_BORROW RzListIter * rz_list_append(RZ_NONNULL RzList *list, void *data)
Appends at the end of the list a new element.
RZ_API void rz_list_free(RZ_NONNULL RzList *list)
Empties the list and frees the list pointer.
return strdup("=SP r13\n" "=LR r14\n" "=PC r15\n" "=A0 r0\n" "=A1 r1\n" "=A2 r2\n" "=A3 r3\n" "=ZF zf\n" "=SF nf\n" "=OF vf\n" "=CF cf\n" "=SN or0\n" "gpr lr .32 56 0\n" "gpr pc .32 60 0\n" "gpr cpsr .32 64 0 ____tfiae_________________qvczn\n" "gpr or0 .32 68 0\n" "gpr tf .1 64.5 0 thumb\n" "gpr ef .1 64.9 0 endian\n" "gpr jf .1 64.24 0 java\n" "gpr qf .1 64.27 0 sticky_overflow\n" "gpr vf .1 64.28 0 overflow\n" "gpr cf .1 64.29 0 carry\n" "gpr zf .1 64.30 0 zero\n" "gpr nf .1 64.31 0 negative\n" "gpr itc .4 64.10 0 if_then_count\n" "gpr gef .4 64.16 0 great_or_equal\n" "gpr r0 .32 0 0\n" "gpr r1 .32 4 0\n" "gpr r2 .32 8 0\n" "gpr r3 .32 12 0\n" "gpr r4 .32 16 0\n" "gpr r5 .32 20 0\n" "gpr r6 .32 24 0\n" "gpr r7 .32 28 0\n" "gpr r8 .32 32 0\n" "gpr r9 .32 36 0\n" "gpr r10 .32 40 0\n" "gpr r11 .32 44 0\n" "gpr r12 .32 48 0\n" "gpr r13 .32 52 0\n" "gpr r14 .32 56 0\n" "gpr r15 .32 60 0\n" "gpr r16 .32 64 0\n" "gpr r17 .32 68 0\n")
static uint32_t const uint8_t uint32_t uint32_t limit
#define RZ_STATIC_ASSERT(x)
@ RZ_BIN_SPECIAL_SYMBOL_MAIN
#define rz_buf_read_le16_at(b, addr, result)
RZ_API st64 rz_buf_read_at(RZ_NONNULL RzBuffer *b, ut64 addr, RZ_NONNULL RZ_OUT ut8 *buf, ut64 len)
Read len bytes of the buffer at the specified address.
#define rz_buf_read_le32_at(b, addr, result)
void(* RzListFree)(void *ptr)
RZ_API char * rz_str_newf(const char *fmt,...) RZ_PRINTF_CHECK(1
XX curplugin == o->plugin.
ut64(WINAPI *w32_GetEnabledXStateFeatures)()