Example #1
0
static RList* sections(RBinArch *arch) {
	RList *ret = NULL;
	RBinSection *ptr = NULL;
	struct r_bin_java_sym_t *s = NULL;
	RBinJavaObj *b = arch->bin_obj;

	if (!(ret = r_list_new ()))
		return NULL;
	ret->free = free;
	if ((s = r_bin_java_get_symbols (arch->bin_obj))) {
		if ((ptr = R_NEW (RBinSection))) {
			strcpy (ptr->name, "code");
			ptr->size = ptr->vsize = b->fsymsz;
			ptr->offset = ptr->rva = b->fsym;
			ptr->srwx = 4|1;
			r_list_append (ret, ptr);
		}
		if ((ptr = R_NEW (RBinSection))) {
			strcpy (ptr->name, "constpool");
			ptr->size = ptr->vsize = b->fsym;
			ptr->offset = ptr->rva = 0;
			ptr->srwx = 4;
			r_list_append (ret, ptr);
		}
		if ((ptr = R_NEW (RBinSection))) {
			strcpy (ptr->name, "data");
			ptr->offset = ptr->rva = b->fsymsz+b->fsym;
			ptr->size = ptr->vsize = arch->buf->length - ptr->rva;
			ptr->srwx = 4|2;
			r_list_append (ret, ptr);
		}
		free (s);
	}
	return ret;
}
Example #2
0
static RList* symbols(RBinArch *arch) {
	RList *ret = NULL;
	RBinSymbol *ptr = NULL;
	struct r_bin_java_sym_t *s = NULL;
	int i;

	if (!(ret = r_list_new ()))
		return NULL;
	ret->free = free;
	if (!(s = r_bin_java_get_symbols ((struct r_bin_java_obj_t*)arch->bin_obj)))
		return ret;
	for (i = 0; !s[i].last; i++) {
		if (!(ptr = R_NEW (RBinSymbol)))
			break;
		strncpy (ptr->name, s[i].name, R_BIN_SIZEOF_STRINGS);
		strncpy (ptr->forwarder, "NONE", R_BIN_SIZEOF_STRINGS);
		strncpy (ptr->bind, "NONE", R_BIN_SIZEOF_STRINGS);
		strncpy (ptr->type, "FUNC", R_BIN_SIZEOF_STRINGS);
		ptr->rva = ptr->offset = s[i].offset;
		ptr->size = s[i].size;
		ptr->ordinal = i;
		r_list_append (ret, ptr);
	}
	free (s);
	return ret;
}
Example #3
0
static RList *symbols(RBinFile *bf) {
	return r_bin_java_get_symbols ((struct r_bin_java_obj_t *) bf->o->bin_obj);
}
Example #4
0
static RList* symbols(RBinArch *arch) {
	IFDBG debug_dump_all_cp_obj((struct r_bin_java_obj_t*)arch->bin_obj);
	return r_bin_java_get_symbols ((struct r_bin_java_obj_t*)arch->bin_obj);
}