Riccardo Schirone 0948f9536b
Use r_buf_size to get the size of a buffer, not the private field (#13380)
* Use r_buf_size to get the size of a buffer, not the private field
* Use r_buf_seek instead of adjusting the private cur RBuffer field
* use r_buf_read instead of r_buf_read_at(.., cur, ..)
* Fix RBuffer usage in REgg
* Introduce r_buf_tell API instead of using seek
* write_at(cur) == write
2019-03-15 20:28:52 +01:00

61 lines
1.6 KiB
C

/* radare - LGPL - Copyright 2013 xvilka */
#include <r_types.h>
#include <r_types.h>
#include <r_util.h>
#include <r_lib.h>
#include <r_bin.h>
#ifndef _INCLUDE_R_BIN_TE_H_
#define _INCLUDE_R_BIN_TE_H_
#define R_BIN_TE_SCN_IS_SHAREABLE(x) x & TE_IMAGE_SCN_MEM_SHARED
#define R_BIN_TE_SCN_IS_EXECUTABLE(x) x & TE_IMAGE_SCN_MEM_EXECUTE
#define R_BIN_TE_SCN_IS_READABLE(x) x & TE_IMAGE_SCN_MEM_READ
#define R_BIN_TE_SCN_IS_WRITABLE(x) x & TE_IMAGE_SCN_MEM_WRITE
struct r_bin_te_section_t {
ut8 name[TE_IMAGE_SIZEOF_NAME];
ut64 size;
ut64 vsize;
ut64 vaddr;
ut64 paddr;
ut64 flags;
int last;
};
struct r_bin_te_string_t {
char string[TE_STRING_LENGTH];
ut64 vaddr;
ut64 paddr;
ut64 size;
char type;
int last;
};
struct r_bin_te_obj_t {
TE_image_file_header *header;
TE_image_section_header *section_header;
int size;
int endian;
const char* file;
RBuffer* b;
Sdb *kv;
};
char* r_bin_te_get_arch(struct r_bin_te_obj_t* bin);
RBinAddr* r_bin_te_get_entrypoint(struct r_bin_te_obj_t* bin);
ut64 r_bin_te_get_main_paddr(struct r_bin_te_obj_t *bin);
ut64 r_bin_te_get_image_base(struct r_bin_te_obj_t* bin);
int r_bin_te_get_image_size(struct r_bin_te_obj_t* bin);
char* r_bin_te_get_machine(struct r_bin_te_obj_t* bin);
int r_bin_te_get_bits(struct r_bin_te_obj_t* bin);
char* r_bin_te_get_os(struct r_bin_te_obj_t* bin);
struct r_bin_te_section_t* r_bin_te_get_sections(struct r_bin_te_obj_t* bin);
char* r_bin_te_get_subsystem(struct r_bin_te_obj_t* bin);
void* r_bin_te_free(struct r_bin_te_obj_t* bin);
struct r_bin_te_obj_t* r_bin_te_new(const char* file);
struct r_bin_te_obj_t* r_bin_te_new_buf(RBuffer *buf);
#endif