8 #include "../../asm/arch/java/jvm.h"
30 switch (
ctx->switchop) {
33 RZ_LOG_ERROR(
"[!] java_analysis: no enough data for lookupswitch case.\n");
44 RZ_LOG_ERROR(
"[!] java_analysis: no enough data for lookupswitch case.\n");
69 RZ_LOG_ERROR(
"[!] java_analysis: bad or invalid data.\n");
127 "gpr garbage .32 32 0\n";
159 .desc =
"Java analysis plugin",
170 #ifndef RZ_PLUGIN_INCORE
static bool java_init(void **user)
static char * get_reg_profile(RzAnalysis *analysis)
static int java_analysis(RzAnalysis *analysis, RzAnalysisOp *op, ut64 addr, const ut8 *buf, int len, RzAnalysisOpMask mask)
static void update_context(JavaAnalysisContext *ctx)
RzAnalysisPlugin rz_analysis_plugin_java
RZ_API RzLibStruct rizin_plugin
static bool java_fini(void *user)
static int archinfo(RzAnalysis *analysis, int query)
struct java_analysis_context_t JavaAnalysisContext
#define BYTECODE_AA_TABLESWITCH
#define BYTECODE_AB_LOOKUPSWITCH
RZ_API void Ht_() free(HtName_(Ht) *ht)
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)
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")
#define RZ_ANALYSIS_ARCHINFO_MAX_OP_SIZE
#define RZ_ANALYSIS_ARCHINFO_MIN_OP_SIZE
@ RZ_ANALYSIS_OP_TYPE_JMP
@ RZ_ANALYSIS_OP_TYPE_CALL
@ RZ_ANALYSIS_OP_TYPE_CJMP
@ RZ_ANALYSIS_OP_TYPE_ILL
@ RZ_ANALYSIS_OP_TYPE_RET
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,...)
RzBinGetSectionAt get_vsect_at
ut64(WINAPI *w32_GetEnabledXStateFeatures)()