diff options
Diffstat (limited to 'miasm2/analysis')
| -rw-r--r-- | miasm2/analysis/binary.py | 6 | ||||
| -rw-r--r-- | miasm2/analysis/data_analysis.py | 22 | ||||
| -rw-r--r-- | miasm2/analysis/depgraph.py | 34 | ||||
| -rw-r--r-- | miasm2/analysis/disasm_cb.py | 28 |
4 files changed, 45 insertions, 45 deletions
diff --git a/miasm2/analysis/binary.py b/miasm2/analysis/binary.py index d47ca884..4ff9dac0 100644 --- a/miasm2/analysis/binary.py +++ b/miasm2/analysis/binary.py @@ -2,7 +2,7 @@ import logging from miasm2.core.bin_stream import bin_stream_str, bin_stream_elf, bin_stream_pe from miasm2.jitter.csts import PAGE_READ -from miasm2.core.asmbloc import asm_symbol_pool +from miasm2.core.asmblock import AsmSymbolPool log = logging.getLogger("binary") @@ -94,7 +94,7 @@ class Container(object): self._bin_stream = None self._entry_point = None self._arch = None - self._symbol_pool = asm_symbol_pool() + self._symbol_pool = AsmSymbolPool() # Launch parsing self.parse(*args, **kwargs) @@ -121,7 +121,7 @@ class Container(object): @property def symbol_pool(self): - "asm_symbol_pool instance preloaded with container symbols (if any)" + "AsmSymbolPool instance preloaded with container symbols (if any)" return self._symbol_pool diff --git a/miasm2/analysis/data_analysis.py b/miasm2/analysis/data_analysis.py index 9fee22af..c67c4509 100644 --- a/miasm2/analysis/data_analysis.py +++ b/miasm2/analysis/data_analysis.py @@ -1,6 +1,6 @@ from miasm2.expression.expression \ import get_expr_mem, get_list_rw, ExprId, ExprInt -from miasm2.ir.symbexec import symbexec +from miasm2.ir.symbexec import SymbolicExecutionEngine def get_node_name(label, i, n): @@ -77,7 +77,7 @@ def intra_bloc_flow_symbexec(ir_arch, flow_graph, irb): symbols_init = dict(ir_arch.arch.regs.all_regs_ids_init) - sb = symbexec(ir_arch, dict(symbols_init)) + sb = SymbolicExecutionEngine(ir_arch, dict(symbols_init)) sb.emulbloc(irb) # print "*"*40 # print irb @@ -116,10 +116,10 @@ def inter_bloc_flow_link(ir_arch, flow_graph, todo, link_exec_to_data): current_nodes = dict(current_nodes) # link current nodes to bloc in_nodes - if not lbl in ir_arch.blocs: + if not lbl in ir_arch.blocks: print "cannot find bloc!!", lbl return set() - irb = ir_arch.blocs[lbl] + irb = ir_arch.blocks[lbl] # pp(('IN', lbl, [(str(x[0]), str(x[1])) for x in current_nodes.items()])) to_del = set() for n_r, node_n_r in irb.in_nodes.items(): @@ -159,15 +159,15 @@ def create_implicit_flow(ir_arch, flow_graph): # first fix IN/OUT # If a son read a node which in not in OUT, add it - todo = set(ir_arch.blocs.keys()) + todo = set(ir_arch.blocks.keys()) while todo: lbl = todo.pop() - irb = ir_arch.blocs[lbl] + irb = ir_arch.blocks[lbl] for lbl_son in ir_arch.graph.successors(irb.label): - if not lbl_son in ir_arch.blocs: + if not lbl_son in ir_arch.blocks: print "cannot find bloc!!", lbl continue - irb_son = ir_arch.blocs[lbl_son] + irb_son = ir_arch.blocks[lbl_son] for n_r in irb_son.in_nodes: if n_r in irb.out_nodes: continue @@ -211,8 +211,8 @@ class symb_exec_func: """ This algorithm will do symbolic execution on a function, trying to propagate - states between basic blocs in order to extract inter-blocs dataflow. The - algorithm tries to merge states from blocs with multiple parents. + states between basic blocks in order to extract inter-blocs dataflow. The + algorithm tries to merge states from blocks with multiple parents. There is no real magic here, loops and complex merging will certainly fail. """ @@ -297,7 +297,7 @@ class symb_exec_func: # print "state done" # continue - sb = symbexec(self.ir_arch, dict(s)) + sb = SymbolicExecutionEngine(self.ir_arch, dict(s)) return parent, ad, sb return None diff --git a/miasm2/analysis/depgraph.py b/miasm2/analysis/depgraph.py index 281251c2..bab4d2bc 100644 --- a/miasm2/analysis/depgraph.py +++ b/miasm2/analysis/depgraph.py @@ -2,10 +2,10 @@ import miasm2.expression.expression as m2_expr from miasm2.core.graph import DiGraph -from miasm2.core.asmbloc import asm_label, expr_is_int_or_label, expr_is_label +from miasm2.core.asmblock import AsmLabel, expr_is_int_or_label, expr_is_label from miasm2.expression.simplifications import expr_simp -from miasm2.ir.symbexec import symbexec -from miasm2.ir.ir import irbloc, AssignBlock +from miasm2.ir.symbexec import SymbolicExecutionEngine +from miasm2.ir.ir import IRBlock, AssignBlock from miasm2.ir.translators import Translator from miasm2.expression.expression_helper import possible_values @@ -28,7 +28,7 @@ class DependencyNode(object): def __init__(self, label, element, line_nb): """Create a dependency node with: - @label: asm_label instance + @label: AsmLabel instance @element: Expr instance @line_nb: int """ @@ -107,7 +107,7 @@ class DependencyState(object): def extend(self, label): """Return a copy of itself, with itself in history - @label: asm_label instance for the new DependencyState's label + @label: AsmLabel instance for the new DependencyState's label """ new_state = self.__class__(label, self.pending) new_state.links = set(self.links) @@ -270,7 +270,7 @@ class DependencyResult(DependencyState): assignblk[element] = irb.irs[line_nb][element] assignblks.append(assignblk) - return irbloc(irb.label, assignblks) + return IRBlock(irb.label, assignblks) def emul(self, ctx=None, step=False): """Symbolic execution of relevant nodes according to the history @@ -293,13 +293,13 @@ class DependencyResult(DependencyState): line_nb = self.initial_state.line_nb else: line_nb = None - assignblks += self.irblock_slice(self._ira.blocs[label], + assignblks += self.irblock_slice(self._ira.blocks[label], line_nb).irs # Eval the block - temp_label = asm_label("Temp") - symb_exec = symbexec(self._ira, ctx_init) - symb_exec.emulbloc(irbloc(temp_label, assignblks), step=step) + temp_label = AsmLabel("Temp") + symb_exec = SymbolicExecutionEngine(self._ira, ctx_init) + symb_exec.emulbloc(IRBlock(temp_label, assignblks), step=step) # Return only inputs values (others could be wrongs) return {element: symb_exec.symbols[element] @@ -354,7 +354,7 @@ class DependencyResultImplicit(DependencyResult): if ctx is not None: ctx_init.update(ctx) solver = z3.Solver() - symb_exec = symbexec(self._ira, ctx_init) + symb_exec = SymbolicExecutionEngine(self._ira, ctx_init) history = self.history[::-1] history_size = len(history) translator = Translator.to_language("z3") @@ -365,7 +365,7 @@ class DependencyResultImplicit(DependencyResult): line_nb = self.initial_state.line_nb else: line_nb = None - irb = self.irblock_slice(self._ira.blocs[label], line_nb) + irb = self.irblock_slice(self._ira.blocks[label], line_nb) # Emul the block and get back destination dst = symb_exec.emulbloc(irb, step=step) @@ -416,7 +416,7 @@ class FollowExpr(object): """Build a set of FollowExpr(DependencyNode) from the @follow_exprs set of FollowExpr @follow_exprs: set of FollowExpr - @label: asm_label instance + @label: AsmLabel instance @line: integer """ dependencies = set() @@ -580,7 +580,7 @@ class DependencyGraph(object): """Follow dependencies tracked in @state in the current irbloc @state: instance of DependencyState""" - irb = self._ira.blocs[state.label] + irb = self._ira.blocks[state.label] line_nb = len(irb.irs) if state.line_nb is None else state.line_nb for cur_line_nb, assignblk in reversed(list(enumerate(irb.irs[:line_nb]))): @@ -590,10 +590,10 @@ class DependencyGraph(object): """Compute the dependencies of @elements at line number @line_nb in the block named @label in the current IRA, before the execution of this line. Dependency check stop if one of @heads is reached - @label: asm_label instance + @label: AsmLabel instance @element: set of Expr instances @line_nb: int - @heads: set of asm_label instances + @heads: set of AsmLabel instances Return an iterator on DiGraph(DependencyNode) """ # Init the algorithm @@ -630,7 +630,7 @@ class DependencyGraph(object): argument. PRE: Labels and lines of depnodes have to be equals @depnodes: set of DependencyNode instances - @heads: set of asm_label instances + @heads: set of AsmLabel instances """ lead = list(depnodes)[0] elements = set(depnode.element for depnode in depnodes) diff --git a/miasm2/analysis/disasm_cb.py b/miasm2/analysis/disasm_cb.py index f1f23377..284a2c99 100644 --- a/miasm2/analysis/disasm_cb.py +++ b/miasm2/analysis/disasm_cb.py @@ -2,8 +2,8 @@ from miasm2.expression.expression import ExprInt, ExprId, ExprMem, MatchExpr from miasm2.expression.simplifications import expr_simp -from miasm2.core.asmbloc \ - import asm_symbol_pool, asm_constraint_next, asm_constraint_to +from miasm2.core.asmblock \ + import AsmSymbolPool, AsmConstraintNext, AsmConstraintTo from miasm2.core.utils import upck32 # from miasm2.core.graph import DiGraph @@ -25,21 +25,21 @@ def arm_guess_subcall( mnemo, attrib, pool_bin, cur_bloc, offsets_to_dis, symbol_pool): ira = get_ira(mnemo, attrib) - sp = asm_symbol_pool() + sp = AsmSymbolPool() ir_arch = ira(sp) print '###' print cur_bloc ir_arch.add_bloc(cur_bloc) - ir_blocs = ir_arch.blocs.values() + ir_blocks = ir_arch.blocks.values() # flow_graph = DiGraph() to_add = set() - for irb in ir_blocs: + for irblock in ir_blocks: # print 'X'*40 - # print irb + # print irblock pc_val = None lr_val = None - for exprs in irb.irs: + for exprs in irblock.irs: for e in exprs: if e.dst == ir_arch.pc: pc_val = e.src @@ -55,7 +55,7 @@ def arm_guess_subcall( continue # print 'IS CALL!' l = symbol_pool.getby_offset_create(int(lr_val)) - c = asm_constraint_next(l) + c = AsmConstraintNext(l) to_add.add(c) offsets_to_dis.add(int(lr_val)) @@ -74,17 +74,17 @@ def arm_guess_jump_table( jra = ExprId('jra') jrb = ExprId('jrb') - sp = asm_symbol_pool() + sp = AsmSymbolPool() ir_arch = ira(sp) ir_arch.add_bloc(cur_bloc) - ir_blocs = ir_arch.blocs.values() - for irb in ir_blocs: + ir_blocks = ir_arch.blocks.values() + for irblock in ir_blocks: # print 'X'*40 - # print irb + # print irblock pc_val = None # lr_val = None - for exprs in irb.irs: + for exprs in irblock.irs: for e in exprs: if e.dst == ir_arch.pc: pc_val = e.src @@ -125,7 +125,7 @@ def arm_guess_jump_table( for ad in addrs: offsets_to_dis.add(ad) l = symbol_pool.getby_offset_create(ad) - c = asm_constraint_to(l) + c = AsmConstraintTo(l) cur_bloc.addto(c) guess_funcs = [] |