#include <string.h>#include "emu/emu.h"#include "emu/emu_cpu.h"#include "emu/emu_cpu_data.h"#include "emu/emu_instruction.h"#include "emu/emu_track.h"#include "emu/emu_source.h"#include "emu/emu_hashtable.h"#include "emu/emu_graph.h"#include "emu/emu_queue.h"
Functions | |
| uint32_t | emu_source_instruction_graph_create (struct emu *e, struct emu_track_and_source *es, uint32_t datastart, uint32_t datasize) |
| void | emu_source_backward_bfs (struct emu_track_and_source *et, struct emu_vertex *ev) |
| void | emu_source_forward_bfs (struct emu_track_and_source *et, struct emu_vertex *ev) |
| void emu_source_backward_bfs | ( | struct emu_track_and_source * | et, | |
| struct emu_vertex * | ev | |||
| ) |
References emu_vertex::backedges, black, emu_vertex::color, emu_edge::destination, emu_queue_dequeue(), emu_queue_empty(), emu_queue_enqueue(), emu_queue_free(), emu_queue_new(), green, grey, red, emu_track_and_source::static_instr_graph, emu_graph::vertexes, and white.

| void emu_source_forward_bfs | ( | struct emu_track_and_source * | et, | |
| struct emu_vertex * | ev | |||
| ) |
References black, emu_vertex::color, emu_edge::destination, emu_vertex::edges, emu_queue_dequeue(), emu_queue_empty(), emu_queue_enqueue(), emu_queue_free(), emu_queue_new(), grey, red, emu_track_and_source::static_instr_graph, emu_graph::vertexes, white, and yellow.

| uint32_t emu_source_instruction_graph_create | ( | struct emu * | e, | |
| struct emu_track_and_source * | es, | |||
| uint32_t | datastart, | |||
| uint32_t | datasize | |||
| ) |
Create the callgraph of the shellcode being stored in the emu memory.
| e | the emu | |
| es | the emu_source_and_track struct which stores the graph | |
| datastart | where to start | |
| datasize | where to stop |
References emu_source_and_track_instr_info::cond_pos, emu_vertex::data, emu_cpu_eip_set(), emu_cpu_get(), emu_cpu_parse(), emu_cpu_step(), emu_graph_new(), emu_graph_vertex_add(), emu_hashtable_insert(), emu_hashtable_new(), emu_hashtable_ptr_cmp(), emu_hashtable_ptr_hash(), emu_hashtable_search(), emu_source_and_track_instr_info_free_void(), emu_source_and_track_instr_info_new(), emu_vertex_edge_add(), emu_vertex_new(), emu_source_and_track_instr_info::has_cond_pos, emu_source_and_track_instr_info::norm_pos, emu_source_and_track_instr_info::source, emu_track_and_source::static_instr_graph, emu_track_and_source::static_instr_table, emu_hashtable_item::value, emu_graph::vertex_destructor, and emu_graph::vertexes.
Referenced by emu_shellcode_test().

1.6.1