10 #include "../arch/java/jvm.h"
11 #include "../arch/java/assembler.h"
35 if (
a->pc <
ctx->last) {
39 switch (
ctx->switchop) {
42 RZ_LOG_ERROR(
"[!] java_analysis: no enough data for lookupswitch case.\n");
53 RZ_LOG_ERROR(
"[!] java_analysis: no enough data for lookupswitch case.\n");
81 RZ_LOG_ERROR(
"[!] java_disassemble: bad or invalid data.\n");
101 RZ_LOG_ERROR(
"[!] java_disassemble: jvm fetch failed.\n");
140 .desc =
"Java bytecode disassembler",
152 #ifndef RZ_PLUGIN_INCORE
static bool java_init(void **user)
static int java_disassemble(RzAsm *a, RzAsmOp *op, const ut8 *buf, int len)
struct java_analysis_context_t JavaAsmContext
RZ_API RzLibStruct rizin_plugin
static bool java_fini(void *user)
static void update_context(JavaAsmContext *ctx)
static int java_assemble(RzAsm *a, RzAsmOp *ao, const char *str)
RzAsmPlugin rz_asm_plugin_java
#define BYTECODE_AA_TABLESWITCH
#define BYTECODE_AB_LOOKUPSWITCH
RZ_API void Ht_() free(HtName_(Ht) *ht)
bool java_assembler(const char *input, st32 input_size, ut8 *output, st32 output_size, ut64 pc, st32 *written)
bool jvm_fetch(JavaVM *jvm, Bytecode *bytecode)
bool jvm_init(JavaVM *jvm, const ut8 *buffer, const ut32 size, ut64 pc, ut64 section)
void bytecode_clean(Bytecode *bytecode)
void bytecode_snprint(RzStrBuf *sb, Bytecode *bytecode)
static ut32 rz_read_at_be32(const void *src, size_t offset)
static ut32 rz_read_be32(const void *src)
#define RZ_LOG_ERROR(fmtstr,...)
RZ_API const char * rz_strbuf_set(RzStrBuf *sb, const char *s)
RZ_API const char * rz_strbuf_setf(RzStrBuf *sb, const char *fmt,...) RZ_PRINTF_CHECK(2
RZ_API bool rz_strbuf_setbin(RzStrBuf *sb, const ut8 *s, size_t len)
#define RZ_SYS_ENDIAN_BIG
ut64(WINAPI *w32_GetEnabledXStateFeatures)()