miasm
Reverse engineering framework
|
Go to the source code of this file.
Classes | |
struct | memory_page_node |
struct | memory_access |
struct | memory_access_list |
struct | vm_mngr_t |
struct | func_resolver |
struct | code_bloc_node |
struct | memory_breakpoint_info |
Functions | |
LIST_HEAD (code_bloc_list_head, code_bloc_node) | |
LIST_HEAD (memory_breakpoint_info_head, memory_breakpoint_info) | |
int | is_mem_mapped (vm_mngr_t *vm_mngr, uint64_t ad) |
uint64_t | get_mem_base_addr (vm_mngr_t *vm_mngr, uint64_t addr, uint64_t *addr_base) |
unsigned int | MEM_LOOKUP (vm_mngr_t *vm_mngr, unsigned int my_size, uint64_t addr) |
int | is_mapped (vm_mngr_t *vm_mngr, uint64_t addr, size_t size) |
void | vm_throw (vm_mngr_t *vm_mngr, unsigned long flags) |
void | vm_MEM_WRITE_08 (vm_mngr_t *vm_mngr, uint64_t addr, unsigned char src) |
void | vm_MEM_WRITE_16 (vm_mngr_t *vm_mngr, uint64_t addr, unsigned short src) |
void | vm_MEM_WRITE_32 (vm_mngr_t *vm_mngr, uint64_t addr, unsigned int src) |
void | vm_MEM_WRITE_64 (vm_mngr_t *vm_mngr, uint64_t addr, uint64_t src) |
unsigned char | vm_MEM_LOOKUP_08 (vm_mngr_t *vm_mngr, uint64_t addr) |
unsigned short | vm_MEM_LOOKUP_16 (vm_mngr_t *vm_mngr, uint64_t addr) |
unsigned int | vm_MEM_LOOKUP_32 (vm_mngr_t *vm_mngr, uint64_t addr) |
uint64_t | vm_MEM_LOOKUP_64 (vm_mngr_t *vm_mngr, uint64_t addr) |
void | MEM_WRITE_08_PASSTHROUGH (uint64_t addr, unsigned char src) |
void | MEM_WRITE_16_PASSTHROUGH (uint64_t addr, unsigned short src) |
void | MEM_WRITE_32_PASSTHROUGH (uint64_t addr, unsigned int src) |
void | MEM_WRITE_64_PASSTHROUGH (uint64_t addr, uint64_t src) |
unsigned char | MEM_LOOKUP_08_PASSTHROUGH (uint64_t addr) |
unsigned short | MEM_LOOKUP_16_PASSTHROUGH (uint64_t addr) |
unsigned int | MEM_LOOKUP_32_PASSTHROUGH (uint64_t addr) |
uint64_t | MEM_LOOKUP_64_PASSTHROUGH (uint64_t addr) |
int | vm_read_mem (vm_mngr_t *vm_mngr, uint64_t addr, char **buffer_ptr, size_t size) |
int | vm_write_mem (vm_mngr_t *vm_mngr, uint64_t addr, char *buffer, size_t size) |
void | memory_access_list_init (struct memory_access_list *access) |
void | memory_access_list_reset (struct memory_access_list *access) |
void | memory_access_list_add (struct memory_access_list *access, uint64_t start, uint64_t stop) |
uint16_t | set_endian16 (vm_mngr_t *vm_mngr, uint16_t val) |
uint32_t | set_endian32 (vm_mngr_t *vm_mngr, uint32_t val) |
uint64_t | set_endian64 (vm_mngr_t *vm_mngr, uint64_t val) |
void | hexdump (char *m, unsigned int l) |
struct code_bloc_node * | create_code_bloc_node (uint64_t ad_start, uint64_t ad_stop) |
void | add_code_bloc (vm_mngr_t *vm_mngr, struct code_bloc_node *cbp) |
struct memory_page_node * | create_memory_page_node (uint64_t ad, size_t size, unsigned int access, const char *name) |
void | init_memory_page_pool (vm_mngr_t *vm_mngr) |
void | init_code_bloc_pool (vm_mngr_t *vm_mngr) |
void | reset_memory_page_pool (vm_mngr_t *vm_mngr) |
void | reset_code_bloc_pool (vm_mngr_t *vm_mngr) |
void | dump_code_bloc_pool (vm_mngr_t *vm_mngr) |
void | add_memory_page (vm_mngr_t *vm_mngr, struct memory_page_node *mpn_a) |
void | remove_memory_page (vm_mngr_t *vm_mngr, uint64_t ad) |
void | init_memory_breakpoint (vm_mngr_t *vm_mngr) |
void | reset_memory_breakpoint (vm_mngr_t *vm_mngr) |
void | add_memory_breakpoint (vm_mngr_t *vm_mngr, uint64_t ad, uint64_t size, unsigned int access) |
void | remove_memory_breakpoint (vm_mngr_t *vm_mngr, uint64_t ad, unsigned int access) |
void | add_mem_read (vm_mngr_t *vm_mngr, uint64_t addr, uint64_t size) |
void | add_mem_write (vm_mngr_t *vm_mngr, uint64_t addr, uint64_t size) |
_MIASM_EXPORT void | check_invalid_code_blocs (vm_mngr_t *vm_mngr) |
_MIASM_EXPORT void | check_memory_breakpoint (vm_mngr_t *vm_mngr) |
_MIASM_EXPORT void | reset_memory_access (vm_mngr_t *vm_mngr) |
PyObject * | get_memory_read (vm_mngr_t *vm_mngr) |
PyObject * | get_memory_write (vm_mngr_t *vm_mngr) |
char * | dump (vm_mngr_t *vm_mngr) |
void | dump_memory_breakpoint_pool (vm_mngr_t *vm_mngr) |
PyObject * | addr2BlocObj (vm_mngr_t *vm_mngr, uint64_t addr) |
unsigned int | get_memory_page_max_address (void) |
unsigned int | get_memory_page_max_user_address (void) |
int | is_mpn_in_tab (vm_mngr_t *vm_mngr, struct memory_page_node *mpn_a) |
void | _func_free (void) |
void | _func_alloc (void) |
unsigned int | _get_memory_page_max_address_py (void) |
unsigned int | _get_memory_page_max_user_address_py (void) |
unsigned int | _get_memory_page_from_min_ad_py (unsigned int size) |
void | _func_malloc_memory_page (void) |
void | _func_free_memory_page (void) |
void | _func_virtualalloc_memory_page (void) |
void | _func_virtualfree_memory_page (void) |
void | _func_loadlib_fake (void) |
void | _func_getproc_fake (void) |
void | func_free (void) |
void | func_alloc (void) |
unsigned int | get_memory_page_max_address_py (void) |
unsigned int | get_memory_page_max_user_address_py (void) |
unsigned int | get_memory_page_from_min_ad_py (unsigned int size) |
struct memory_page_node * | get_memory_page_from_address (vm_mngr_t *, uint64_t ad, int raise_exception) |
void | func_malloc_memory_page (void) |
void | func_free_memory_page (void) |
void | func_virtualalloc_memory_page (void) |
void | func_virtualfree_memory_page (void) |
void | func_loadlib_fake (void) |
void | func_getproc_fake (void) |
unsigned int | access_segment (unsigned int d) |
unsigned int | access_segment_ok (unsigned int d) |
unsigned int | load_segment_limit (unsigned int d) |
unsigned int | load_segment_limit_ok (unsigned int d) |
unsigned int | load_tr_segment_selector (unsigned int d) |
#define _MIASM_EXPORT |
#define BREAK_SIGALARM 1<<5 |
#define BREAKPOINT_READ 1 |
#define BREAKPOINT_WRITE 2 |
#define Endian16_Swap | ( | value | ) |
#define Endian32_Swap | ( | value | ) |
#define Endian64_Swap | ( | value | ) |
#define EXCEPT_ACCESS_VIOL ((1<<14) | EXCEPT_DO_NOT_UPDATE_PC) |
#define EXCEPT_BREAKPOINT_INTERN (EXCEPT_BREAKPOINT_MEMORY) |
#define EXCEPT_BREAKPOINT_MEMORY (1<<10) |
#define EXCEPT_CODE_AUTOMOD (1<<0) |
#define EXCEPT_DO_NOT_UPDATE_PC (1<<25) |
#define EXCEPT_ILLEGAL_INSN ((1<<18) | EXCEPT_DO_NOT_UPDATE_PC) |
#define EXCEPT_INT_1 ((1<<20) | EXCEPT_DO_NOT_UPDATE_PC) |
#define EXCEPT_INT_DIV_BY_ZERO ((1<<16) | EXCEPT_DO_NOT_UPDATE_PC) |
#define EXCEPT_INT_XX (1<<2) |
#define EXCEPT_NUM_UPDT_EIP (1<<11) |
#define EXCEPT_PRIV_INSN ((1<<17) | EXCEPT_DO_NOT_UPDATE_PC) |
#define EXCEPT_SOFT_BP (1<<1) |
#define EXCEPT_THROW_SEH ((1<<13) | EXCEPT_DO_NOT_UPDATE_PC) |
#define EXCEPT_UNK_EIP ((1<<14) | EXCEPT_DO_NOT_UPDATE_PC) |
#define EXCEPT_UNK_MEM_AD ((1<<12) | EXCEPT_DO_NOT_UPDATE_PC) |
#define EXCEPT_UNK_MNEMO ((1<<19) | EXCEPT_DO_NOT_UPDATE_PC) |
#define MAX_MEMORY_PAGE_POOL_TAB 0x100000 |
#define MEMORY_PAGE_POOL_MASK_BIT 12 |
#define PAGE_EXEC 4 |
#define PAGE_READ 1 |
#define PAGE_WRITE 2 |
#define VM_BIG_ENDIAN 1 |
#define VM_LITTLE_ENDIAN 2 |
void _func_alloc | ( | void | ) |
void _func_free | ( | void | ) |
void _func_free_memory_page | ( | void | ) |
void _func_getproc_fake | ( | void | ) |
void _func_loadlib_fake | ( | void | ) |
void _func_malloc_memory_page | ( | void | ) |
void _func_virtualalloc_memory_page | ( | void | ) |
void _func_virtualfree_memory_page | ( | void | ) |
unsigned int _get_memory_page_from_min_ad_py | ( | unsigned int | size | ) |
unsigned int _get_memory_page_max_address_py | ( | void | ) |
unsigned int _get_memory_page_max_user_address_py | ( | void | ) |
unsigned int access_segment | ( | unsigned int | d | ) |
unsigned int access_segment_ok | ( | unsigned int | d | ) |
void add_code_bloc | ( | vm_mngr_t * | vm_mngr, |
struct code_bloc_node * | cbp | ||
) |
void add_mem_read | ( | vm_mngr_t * | vm_mngr, |
uint64_t | addr, | ||
uint64_t | size | ||
) |
void add_mem_write | ( | vm_mngr_t * | vm_mngr, |
uint64_t | addr, | ||
uint64_t | size | ||
) |
void add_memory_breakpoint | ( | vm_mngr_t * | vm_mngr, |
uint64_t | ad, | ||
uint64_t | size, | ||
unsigned int | access | ||
) |
void add_memory_page | ( | vm_mngr_t * | vm_mngr, |
struct memory_page_node * | mpn_a | ||
) |
PyObject* addr2BlocObj | ( | vm_mngr_t * | vm_mngr, |
uint64_t | addr | ||
) |
_MIASM_EXPORT void check_invalid_code_blocs | ( | vm_mngr_t * | vm_mngr | ) |
_MIASM_EXPORT void check_memory_breakpoint | ( | vm_mngr_t * | vm_mngr | ) |
struct code_bloc_node* create_code_bloc_node | ( | uint64_t | ad_start, |
uint64_t | ad_stop | ||
) |
struct memory_page_node* create_memory_page_node | ( | uint64_t | ad, |
size_t | size, | ||
unsigned int | access, | ||
const char * | name | ||
) |
char* dump | ( | vm_mngr_t * | vm_mngr | ) |
void dump_code_bloc_pool | ( | vm_mngr_t * | vm_mngr | ) |
void dump_memory_breakpoint_pool | ( | vm_mngr_t * | vm_mngr | ) |
void func_alloc | ( | void | ) |
void func_free | ( | void | ) |
void func_free_memory_page | ( | void | ) |
void func_getproc_fake | ( | void | ) |
void func_loadlib_fake | ( | void | ) |
void func_malloc_memory_page | ( | void | ) |
void func_virtualalloc_memory_page | ( | void | ) |
void func_virtualfree_memory_page | ( | void | ) |
uint64_t get_mem_base_addr | ( | vm_mngr_t * | vm_mngr, |
uint64_t | addr, | ||
uint64_t * | addr_base | ||
) |
struct memory_page_node* get_memory_page_from_address | ( | vm_mngr_t * | , |
uint64_t | ad, | ||
int | raise_exception | ||
) |
unsigned int get_memory_page_from_min_ad_py | ( | unsigned int | size | ) |
unsigned int get_memory_page_max_address | ( | void | ) |
unsigned int get_memory_page_max_address_py | ( | void | ) |
unsigned int get_memory_page_max_user_address | ( | void | ) |
unsigned int get_memory_page_max_user_address_py | ( | void | ) |
PyObject* get_memory_read | ( | vm_mngr_t * | vm_mngr | ) |
PyObject* get_memory_write | ( | vm_mngr_t * | vm_mngr | ) |
void hexdump | ( | char * | m, |
unsigned int | l | ||
) |
void init_code_bloc_pool | ( | vm_mngr_t * | vm_mngr | ) |
void init_memory_breakpoint | ( | vm_mngr_t * | vm_mngr | ) |
void init_memory_page_pool | ( | vm_mngr_t * | vm_mngr | ) |
int is_mapped | ( | vm_mngr_t * | vm_mngr, |
uint64_t | addr, | ||
size_t | size | ||
) |
int is_mem_mapped | ( | vm_mngr_t * | vm_mngr, |
uint64_t | ad | ||
) |
int is_mpn_in_tab | ( | vm_mngr_t * | vm_mngr, |
struct memory_page_node * | mpn_a | ||
) |
LIST_HEAD | ( | code_bloc_list_head | , |
code_bloc_node | |||
) |
LIST_HEAD | ( | memory_breakpoint_info_head | , |
memory_breakpoint_info | |||
) |
unsigned int load_segment_limit | ( | unsigned int | d | ) |
unsigned int load_segment_limit_ok | ( | unsigned int | d | ) |
unsigned int load_tr_segment_selector | ( | unsigned int | d | ) |
unsigned int MEM_LOOKUP | ( | vm_mngr_t * | vm_mngr, |
unsigned int | my_size, | ||
uint64_t | addr | ||
) |
unsigned char MEM_LOOKUP_08_PASSTHROUGH | ( | uint64_t | addr | ) |
unsigned short MEM_LOOKUP_16_PASSTHROUGH | ( | uint64_t | addr | ) |
unsigned int MEM_LOOKUP_32_PASSTHROUGH | ( | uint64_t | addr | ) |
uint64_t MEM_LOOKUP_64_PASSTHROUGH | ( | uint64_t | addr | ) |
void MEM_WRITE_08_PASSTHROUGH | ( | uint64_t | addr, |
unsigned char | src | ||
) |
void MEM_WRITE_16_PASSTHROUGH | ( | uint64_t | addr, |
unsigned short | src | ||
) |
void MEM_WRITE_32_PASSTHROUGH | ( | uint64_t | addr, |
unsigned int | src | ||
) |
void MEM_WRITE_64_PASSTHROUGH | ( | uint64_t | addr, |
uint64_t | src | ||
) |
void memory_access_list_add | ( | struct memory_access_list * | access, |
uint64_t | start, | ||
uint64_t | stop | ||
) |
void memory_access_list_init | ( | struct memory_access_list * | access | ) |
void memory_access_list_reset | ( | struct memory_access_list * | access | ) |
void remove_memory_breakpoint | ( | vm_mngr_t * | vm_mngr, |
uint64_t | ad, | ||
unsigned int | access | ||
) |
void remove_memory_page | ( | vm_mngr_t * | vm_mngr, |
uint64_t | ad | ||
) |
void reset_code_bloc_pool | ( | vm_mngr_t * | vm_mngr | ) |
_MIASM_EXPORT void reset_memory_access | ( | vm_mngr_t * | vm_mngr | ) |
void reset_memory_breakpoint | ( | vm_mngr_t * | vm_mngr | ) |
void reset_memory_page_pool | ( | vm_mngr_t * | vm_mngr | ) |
uint16_t set_endian16 | ( | vm_mngr_t * | vm_mngr, |
uint16_t | val | ||
) |
uint32_t set_endian32 | ( | vm_mngr_t * | vm_mngr, |
uint32_t | val | ||
) |
uint64_t set_endian64 | ( | vm_mngr_t * | vm_mngr, |
uint64_t | val | ||
) |
unsigned char vm_MEM_LOOKUP_08 | ( | vm_mngr_t * | vm_mngr, |
uint64_t | addr | ||
) |
unsigned short vm_MEM_LOOKUP_16 | ( | vm_mngr_t * | vm_mngr, |
uint64_t | addr | ||
) |
unsigned int vm_MEM_LOOKUP_32 | ( | vm_mngr_t * | vm_mngr, |
uint64_t | addr | ||
) |
uint64_t vm_MEM_LOOKUP_64 | ( | vm_mngr_t * | vm_mngr, |
uint64_t | addr | ||
) |
void vm_MEM_WRITE_08 | ( | vm_mngr_t * | vm_mngr, |
uint64_t | addr, | ||
unsigned char | src | ||
) |
void vm_MEM_WRITE_16 | ( | vm_mngr_t * | vm_mngr, |
uint64_t | addr, | ||
unsigned short | src | ||
) |
void vm_MEM_WRITE_32 | ( | vm_mngr_t * | vm_mngr, |
uint64_t | addr, | ||
unsigned int | src | ||
) |
void vm_MEM_WRITE_64 | ( | vm_mngr_t * | vm_mngr, |
uint64_t | addr, | ||
uint64_t | src | ||
) |
int vm_read_mem | ( | vm_mngr_t * | vm_mngr, |
uint64_t | addr, | ||
char ** | buffer_ptr, | ||
size_t | size | ||
) |
void vm_throw | ( | vm_mngr_t * | vm_mngr, |
unsigned long | flags | ||
) |
int vm_write_mem | ( | vm_mngr_t * | vm_mngr, |
uint64_t | addr, | ||
char * | buffer, | ||
size_t | size | ||
) |