diff --git a/example/expression/graph_dataflow.py b/example/expression/graph_dataflow.py index dc09eae4d..2902fc0e1 100644 --- a/example/expression/graph_dataflow.py +++ b/example/expression/graph_dataflow.py @@ -54,7 +54,7 @@ def intra_block_flow_symb(lifter, _, flow_graph, irblock, in_nodes, out_nodes): node_n_r = current_nodes[n_r] else: node_n_r = get_node_name(irblock.loc_key, i, n_r) - if not n_r in in_nodes: + if n_r not in in_nodes: in_nodes[n_r] = node_n_r flow_graph.add_uniq_edge(node_n_r, node_n_w) @@ -68,7 +68,7 @@ def intra_block_flow_symb(lifter, _, flow_graph, irblock, in_nodes, out_nodes): node_n_r = current_nodes[n_r] else: node_n_r = get_node_name(irblock.loc_key, 0, n_r) - if not n_r in in_nodes: + if n_r not in in_nodes: in_nodes[n_r] = node_n_r flow_graph.add_node(node_n_r) diff --git a/example/ida/graph_ir.py b/example/ida/graph_ir.py index c7bc62018..7851782cc 100644 --- a/example/ida/graph_ir.py +++ b/example/ida/graph_ir.py @@ -140,7 +140,7 @@ def OnRefresh(self): for dst in all_dst: if not dst.is_loc(): continue - if not dst.loc_key in self.ircfg.blocks: + if dst.loc_key not in self.ircfg.blocks: continue node1 = addr_id[loc_key] node2 = addr_id[dst.loc_key] diff --git a/example/ida/utils.py b/example/ida/utils.py index 6d90c82c8..d4f3150c9 100644 --- a/example/ida/utils.py +++ b/example/ida/utils.py @@ -51,7 +51,7 @@ def guess_machine(addr=None): is_bigendian = info.is_be() infos = (is_armt, size, is_bigendian) - if not infos in info2machine: + if infos not in info2machine: raise NotImplementedError('not fully functional') machine = Machine(info2machine[infos]) diff --git a/miasm/analysis/data_analysis.py b/miasm/analysis/data_analysis.py index c7924cf23..b5766822a 100644 --- a/miasm/analysis/data_analysis.py +++ b/miasm/analysis/data_analysis.py @@ -34,7 +34,7 @@ def intra_block_flow_raw(lifter, ircfg, flow_graph, irb, in_nodes, out_nodes): for n in all_mems: node_n_w = get_node_name(irb.loc_key, i, n) - if not n in nodes_r: + if n not in nodes_r: continue o_r = n.ptr.get_r(mem_read=False, cst_read=True) for n_r in o_r: @@ -71,13 +71,13 @@ def inter_block_flow_link(lifter, ircfg, flow_graph, irb_in_nodes, irb_out_nodes current_nodes = dict(current_nodes) # link current nodes to block in_nodes - if not lbl in ircfg.blocks: + if lbl not in ircfg.blocks: print("cannot find block!!", lbl) return set() irb = ircfg.blocks[lbl] to_del = set() for n_r, node_n_r in viewitems(irb_in_nodes[irb.loc_key]): - if not n_r in current_nodes: + if n_r not in current_nodes: continue flow_graph.add_uniq_edge(current_nodes[n_r], node_n_r) to_del.add(n_r) @@ -86,7 +86,7 @@ def inter_block_flow_link(lifter, ircfg, flow_graph, irb_in_nodes, irb_out_nodes if link_exec_to_data: for n_x_r in exec_nodes: for n_r, node_n_r in viewitems(irb_in_nodes[irb.loc_key]): - if not n_x_r in current_nodes: + if n_x_r not in current_nodes: continue if isinstance(n_r, ExprInt): continue @@ -115,7 +115,7 @@ def create_implicit_flow(lifter, flow_graph, irb_in_nodes, irb_out_nodes): lbl = todo.pop() irb = lifter.blocks[lbl] for lbl_son in lifter.graph.successors(irb.loc_key): - if not lbl_son in lifter.blocks: + if lbl_son not in lifter.blocks: print("cannot find block!!", lbl) continue irb_son = lifter.blocks[lbl_son] @@ -127,7 +127,7 @@ def create_implicit_flow(lifter, flow_graph, irb_in_nodes, irb_out_nodes): node_n_w = irb.loc_key, len(irb), n_r irb_out_nodes[irb.loc_key][n_r] = node_n_w - if not n_r in irb_in_nodes[irb.loc_key]: + if n_r not in irb_in_nodes[irb.loc_key]: irb_in_nodes[irb.loc_key][n_r] = irb.loc_key, 0, n_r node_n_r = irb_in_nodes[irb.loc_key][n_r] for lbl_p in lifter.graph.predecessors(irb.loc_key): diff --git a/miasm/analysis/expression_range.py b/miasm/analysis/expression_range.py index 5a31873ac..77eb4dd16 100644 --- a/miasm/analysis/expression_range.py +++ b/miasm/analysis/expression_range.py @@ -57,7 +57,7 @@ def expr_range(expr): return - expr_range(expr.args[0]) elif expr.op == "%": assert len(expr.args) == 2 - op, mod = [expr_range(arg) for arg in expr.args] + op, mod = (expr_range(arg) for arg in expr.args) if mod.intervals.length == 1: # Modulo intervals is not supported return op % mod.intervals.hull()[0] diff --git a/miasm/arch/aarch64/arch.py b/miasm/arch/aarch64/arch.py index 0ade16bf7..7631ba473 100644 --- a/miasm/arch/aarch64/arch.py +++ b/miasm/arch/aarch64/arch.py @@ -608,9 +608,9 @@ def decode(self, v): def encode(self): if not test_set_sf(self.parent, self.expr.size): return False - if not self.expr.size in self.gpregs_info: + if self.expr.size not in self.gpregs_info: return False - if not self.expr in self.gpregs_info[self.expr.size].expr: + if self.expr not in self.gpregs_info[self.expr.size].expr: return False self.value = self.gpregs_info[self.expr.size].expr.index(self.expr) return True @@ -629,9 +629,9 @@ def decode(self, v): def encode(self): if not test_set_sf(self.parent, self.expr.size): return False - if not self.expr.size in self.gpregs_info: + if self.expr.size not in self.gpregs_info: return False - if not self.expr in self.gpregs_info[self.expr.size].expr: + if self.expr not in self.gpregs_info[self.expr.size].expr: return False if self.expr not in self.gpregs_info[self.expr.size].expr: return False @@ -651,9 +651,9 @@ def decode(self, v): return True def encode(self): - if not self.expr.size in self.simd_size: + if self.expr.size not in self.simd_size: return False - if not self.expr in simds_info[self.expr.size].expr: + if self.expr not in simds_info[self.expr.size].expr: return False self.value = simds_info[self.expr.size].expr.index(self.expr) self.parent.size.value = self.simd_size.index(self.expr.size) @@ -700,7 +700,7 @@ def decode(self, v): return True def encode(self): - if not self.expr in gpregs_info[self.expr.size].expr: + if self.expr not in gpregs_info[self.expr.size].expr: return False self.value = gpregs_info[self.expr.size].expr.index(self.expr) self.parent.sf.value = 1 if self.expr.size == 32 else 0 @@ -746,11 +746,11 @@ def encode(self): self.value = 0x1F return True return False - if not self.expr.size in self.gpregs_info: + if self.expr.size not in self.gpregs_info: return False if not test_set_sf(self.parent, self.expr.size): return False - if not self.expr in self.gpregs_info[self.expr.size].expr: + if self.expr not in self.gpregs_info[self.expr.size].expr: return False self.value = self.gpregs_info[self.expr.size].expr.index(self.expr) return True @@ -977,7 +977,7 @@ def encode(self): return False reg, amount = self.expr.args - if not reg in gpregsz_info[self.expr.size].expr: + if reg not in gpregsz_info[self.expr.size].expr: return False self.value = gpregsz_info[self.expr.size].expr.index(reg) option = extend_lst.index(self.expr.op) @@ -1029,7 +1029,7 @@ def encode(self): return True if not (isinstance(self.expr, m2_expr.ExprOp) and self.expr.op == 'segm'): return False - if not arg0 in self.parent.rn.reg_info.expr: + if arg0 not in self.parent.rn.reg_info.expr: return False self.parent.rn.value = self.parent.rn.reg_info.expr.index(arg0) is_reg = False @@ -1096,7 +1096,7 @@ def get_size(self): def test_set_sf(parent, size): if not hasattr(parent, 'sf'): return False - if parent.sf.value == None: + if parent.sf.value is None: parent.sf.value = 1 if size == 64 else 0 return True psize = 64 if parent.sf.value else 32 @@ -1112,9 +1112,9 @@ def encode(self): if not test_set_sf(self.parent, size): return False if isinstance(self.expr, m2_expr.ExprId): - if not size in gpregs_info: + if size not in gpregs_info: return False - if not self.expr in self.reg_info[size].expr: + if self.expr not in self.reg_info[size].expr: return False self.parent.shift.value = 0 self.parent.imm.value = 0 @@ -1123,10 +1123,10 @@ def encode(self): if not isinstance(self.expr, m2_expr.ExprOp): return False - if not self.expr.op in shift_expr: + if self.expr.op not in shift_expr: return False args = self.expr.args - if not args[0] in self.reg_info[size].expr: + if args[0] not in self.reg_info[size].expr: return False if not isinstance(args[1], m2_expr.ExprInt): return False @@ -1491,7 +1491,7 @@ def encode(self): return False if set_imm_to_size(self.parent.args[0].expr.size, self.expr.args[1]) is None: return False - arg, amount = [int(arg) for arg in self.expr.args] + arg, amount = (int(arg) for arg in self.expr.args) if arg > 0xFFFF: return False if amount % 16 or amount // 16 > 4: @@ -1607,7 +1607,7 @@ def encode(self): expr = self.expr if not isinstance(expr, m2_expr.ExprOp): return False - if not expr.op in ['postinc', 'preinc_wb', 'preinc']: + if expr.op not in ['postinc', 'preinc_wb', 'preinc']: return False if hasattr(self.parent, "postpre"): if expr.op == 'postinc': @@ -1617,7 +1617,7 @@ def encode(self): if len(expr.args) != 2: return False reg, off = expr.args - if not reg in gpregs64_info.expr: + if reg not in gpregs64_info.expr: return False if not isinstance(off, m2_expr.ExprInt): return False @@ -1672,7 +1672,7 @@ def encode(self): else: return False - if not reg in gpregs64_info.expr: + if reg not in gpregs64_info.expr: return False self.value = gpregs64_info.expr.index(reg) return True @@ -1687,7 +1687,7 @@ def decode_w_size(self, off): def encode_w_size(self, off): size = self.parent.args[0].expr.size - if not size in self.size2scale: + if size not in self.size2scale: return False scale = self.size2scale[size] off = int(mod_size2int[size](off) >> scale) diff --git a/miasm/arch/aarch64/sem.py b/miasm/arch/aarch64/sem.py index eaa012286..59cdd0366 100644 --- a/miasm/arch/aarch64/sem.py +++ b/miasm/arch/aarch64/sem.py @@ -2279,7 +2279,7 @@ def smull(arg1, arg2, arg3): def get_mnemo_expr(ir, instr, *args): - if not instr.name.lower() in mnemo_func: + if instr.name.lower() not in mnemo_func: raise NotImplementedError('unknown mnemo %s' % instr) instr, extra_ir = mnemo_func[instr.name.lower()](ir, instr, *args) return instr, extra_ir diff --git a/miasm/arch/arm/arch.py b/miasm/arch/arm/arch.py index 91c22bd59..d1daa31dd 100644 --- a/miasm/arch/arm/arch.py +++ b/miasm/arch/arm/arch.py @@ -1688,7 +1688,7 @@ def encode(self): len(ptr.args) == 2 and ptr.op == 'preinc'): reg, imm = ptr.args - if not reg in gpregs.expr: + if reg not in gpregs.expr: return False self.value = gpregs.expr.index(reg) if not isinstance(imm, ExprInt): @@ -1772,7 +1772,7 @@ def decode(self, v): return True def encode(self): - if not self.expr in self.reg_info.dct_expr_inv: + if self.expr not in self.reg_info.dct_expr_inv: log.debug("cannot encode reg %r", self.expr) return False self.value = self.reg_info.dct_expr_inv[self.expr] @@ -1871,7 +1871,7 @@ def encode(self): if not isinstance(value, ExprInt): return False value = int(value) - if not value in [8, 16, 24]: + if value not in [8, 16, 24]: return False self.parent.rot2.value = value // 8 return True @@ -2399,7 +2399,7 @@ class armt_reg_wb(arm_reg_wb): def decode(self, v): v = v & self.lmask e = self.reg_info.expr[v] - if not e in self.parent.trlist.expr.args: + if e not in self.parent.trlist.expr.args: e = ExprOp('wback', e) self.expr = e return True @@ -3003,7 +3003,7 @@ def encode(self): return True aif_str = ["X", "F", "I", "IF", "A", "AF", "AI", "AIF"] -aif_expr = [ExprId(x, 32) if x != None else None for x in aif_str] +aif_expr = [ExprId(x, 32) if x is not None else None for x in aif_str] aif_reg = reg_info(aif_str, aif_expr) diff --git a/miasm/arch/arm/disasm.py b/miasm/arch/arm/disasm.py index e84f617d1..26adc965a 100644 --- a/miasm/arch/arm/disasm.py +++ b/miasm/arch/arm/disasm.py @@ -22,9 +22,9 @@ def cb_arm_fix_call(mdis, cur_block, offsets_to_dis): return values = viewvalues(mdis.arch.pc) - if not l1.args[0] in values: + if l1.args[0] not in values: return - if not l2.args[1] in values: + if l2.args[1] not in values: return loc_key_cst = mdis.loc_db.get_or_create_offset_location(l1.offset + 4) cur_block.add_cst(loc_key_cst, AsmConstraint.c_next) diff --git a/miasm/arch/arm/sem.py b/miasm/arch/arm/sem.py index a138ef919..78a5b2ef5 100644 --- a/miasm/arch/arm/sem.py +++ b/miasm/arch/arm/sem.py @@ -1835,7 +1835,7 @@ def is_pc_written(ir, instr_ir): def add_condition_expr(ir, instr, cond, instr_ir, extra_ir): if cond == COND_AL: return instr_ir, extra_ir - if not cond in tab_cond: + if cond not in tab_cond: raise ValueError('unknown condition %r' % cond) cond = tab_cond[cond] @@ -2050,7 +2050,7 @@ def split_expr_dst(ir, instr_ir): def get_mnemo_expr(ir, instr, *args): - if not instr.name.lower() in mnemo_func_cond: + if instr.name.lower() not in mnemo_func_cond: raise ValueError('unknown mnemo %s' % instr) cond, mf = mnemo_func_cond[instr.name.lower()] instr_ir, extra_ir = mf(ir, instr, *args) diff --git a/miasm/arch/mips32/arch.py b/miasm/arch/mips32/arch.py index 76ebe7300..6c00c44e8 100644 --- a/miasm/arch/mips32/arch.py +++ b/miasm/arch/mips32/arch.py @@ -492,7 +492,7 @@ def decode(self, v): return True def encode(self): e = self.expr - if not e in regs.regs_cpr0_expr: + if e not in regs.regs_cpr0_expr: return False index = regs.regs_cpr0_expr.index(e) self.value = index & 7 diff --git a/miasm/arch/ppc/arch.py b/miasm/arch/ppc/arch.py index a1bde2a6f..2ad61180a 100644 --- a/miasm/arch/ppc/arch.py +++ b/miasm/arch/ppc/arch.py @@ -480,7 +480,7 @@ def ppc_bo_bi_to_mnemo(bo, bi, prefer_taken=True, default_taken=True): bi2cond = { 0b00: 'LT', 0b01: 'GT', 0b10: 'EQ', 0b11: 'SO' } bi2ncond = { 0b00: 'GE', 0b01: 'LE', 0b10: 'NE', 0b11: 'NS' } n = bo & 0b11110 - if not n in bo2mnemo: + if n not in bo2mnemo: raise NotImplementedError("Unknown BO field") mnem = 'B' + bo2mnemo[n] if mnem[-1] == 'T': diff --git a/miasm/arch/ppc/sem.py b/miasm/arch/ppc/sem.py index 7fbf61e69..076eb29ca 100644 --- a/miasm/arch/ppc/sem.py +++ b/miasm/arch/ppc/sem.py @@ -63,7 +63,7 @@ def mn_compute_flags(rvalue, overflow_expr=None): ExprInt(0, 1)) & ~rvalue.msb()))) ret.append(ExprAssign(CR0_EQ, ExprCond(rvalue, ExprInt(0, 1), ExprInt(1, 1)))) - if overflow_expr != None: + if overflow_expr is not None: ret.append(ExprAssign(CR0_SO, XER_SO | overflow_expr)) else: ret.append(ExprAssign(CR0_SO, XER_SO)) diff --git a/miasm/arch/sh4/arch.py b/miasm/arch/sh4/arch.py index 76489aee6..3431a725b 100644 --- a/miasm/arch/sh4/arch.py +++ b/miasm/arch/sh4/arch.py @@ -219,7 +219,7 @@ def encode(self): if not res: return False r = res[jra] - if not r in gpregs.expr: + if r not in gpregs.expr: return False v = gpregs.expr.index(r) self.value = v @@ -262,7 +262,7 @@ def encode(self): return False d = int(res[jrb]) p.disp.value = d // (s // 8) - if not res[jra] in gpregs.expr: + if res[jra] not in gpregs.expr: return False v = gpregs.expr.index(res[jra]) else: @@ -580,7 +580,7 @@ def encode(self): if not res: return False r = res[jra] - if not r in gpregs.expr: + if r not in gpregs.expr: return False self.value = gpregs.expr.index(r) return True diff --git a/miasm/arch/x86/arch.py b/miasm/arch/x86/arch.py index c5ff9b631..7a7e5ce33 100644 --- a/miasm/arch/x86/arch.py +++ b/miasm/arch/x86/arch.py @@ -1597,7 +1597,7 @@ def gen_modrm_form(): if sib_rez in [sib_s08_ebp, sib_u32_ebp, sib_u32]: tmp = i - if not tmp in sib_rez[index]: + if tmp not in sib_rez[index]: sib_rez[index][tmp] = 0 # 1 << ss sib_rez[index][tmp] += 1 << ss else: @@ -1606,7 +1606,7 @@ def gen_modrm_form(): tmp = i + 8 * rex_x if i == 0b100 and rex_x == 0: continue - if not tmp in sib_rez[rex_x][rex_b][index]: + if tmp not in sib_rez[rex_x][rex_b][index]: sib_rez[rex_x][rex_b][index][tmp] = 0 # 1 << ss sib_rez[rex_x][rex_b][index][tmp] += 1 << ss @@ -1864,7 +1864,7 @@ def expr2modrm(expr, parent, w8, sx=0, xmm=0, mm=0, bnd=0): else: size2reg = SIZE2XMMREG selreg = size2reg[expr.size] - if not expr in selreg.expr: + if expr not in selreg.expr: return None, None, False i = selreg.expr.index(expr) dct_expr[i] = 1 @@ -1923,14 +1923,14 @@ def expr2modrm(expr, parent, w8, sx=0, xmm=0, mm=0, bnd=0): parent.rex_p.value = 0 parent.rex_x.value = 0 r = size2gpregs[8] - if not expr in r.expr: + if expr not in r.expr: return None, None, False i = r.expr.index(expr) dct_expr[i] = 1 return [dct_expr], None, True if opmode != expr.size: return None, None, False - if not expr in size2gpregs[opmode].expr: + if expr not in size2gpregs[opmode].expr: return None, None, False i = size2gpregs[opmode].expr.index(expr) if i > 7: @@ -2013,7 +2013,7 @@ def get_modrm(self): p = self.parent admode = p.v_admode() - if not admode in [16, 32, 64]: + if admode not in [16, 32, 64]: raise ValueError('strange admode %r', admode) v = setmodrm(p.mod.value, 0, p.rm.value) v |= p.rex_b.value << 8 @@ -2039,7 +2039,7 @@ def decode(self, v): return self.expr is not None def gen_cand(self, v_cand, admode): - if not admode in modrm2byte: + if admode not in modrm2byte: # XXX TODO: 64bit return if not v_cand: @@ -2074,7 +2074,7 @@ def gen_cand(self, v_cand, admode): # We only need sort for determinism v = tuple(sorted(viewitems(v), key=str)) admode = 64 if p.mode == 64 else admode - if not v in modrm2byte[admode]: + if v not in modrm2byte[admode]: continue xx = modrm2byte[admode][v] @@ -2272,7 +2272,7 @@ def encode(self): if isinstance(self.expr, ExprInt): return p = self.parent - if not self.expr.size in [32, 64]: + if self.expr.size not in [32, 64]: return self.set_s_value(0) v_cand, segm, ok = expr2modrm(self.expr, p, 1) diff --git a/miasm/arch/x86/sem.py b/miasm/arch/x86/sem.py index 81e45e7e2..977e4076e 100644 --- a/miasm/arch/x86/sem.py +++ b/miasm/arch/x86/sem.py @@ -898,7 +898,7 @@ def dec(_, instr, dst): def push_gen(ir, instr, src, size): e = [] - if not size in [16, 32, 64]: + if size not in [16, 32, 64]: raise ValueError('bad size stacker!') if src.size < size: src = src.zeroExtend(size) @@ -924,13 +924,13 @@ def pushw(ir, instr, src): def pop_gen(ir, instr, src, size): e = [] - if not size in [16, 32, 64]: + if size not in [16, 32, 64]: raise ValueError('bad size stacker!') sp = mRSP[instr.mode] new_sp = sp + m2_expr.ExprInt(src.size // 8, sp.size) # Don't generate SP/ESP/RSP incrementation on POP SP/ESP/RSP - if not (src in mRSP.values()): + if src not in mRSP.values(): e.append(m2_expr.ExprAssign(sp, new_sp)) # XXX FIX XXX for pop [esp] if isinstance(src, m2_expr.ExprMem): @@ -2088,7 +2088,7 @@ def movsd_dispatch(ir, instr, dst=None, src=None): def float_prev(flt, popcount=1): - if not flt in float_list: + if flt not in float_list: return None i = float_list.index(flt) if i < popcount: @@ -5801,7 +5801,7 @@ def get_ir(self, instr): args[i] = self.ExprMem(m2_expr.ExprOp('segm', my_ss, a.ptr), a.size) - if not instr.name.lower() in mnemo_func: + if instr.name.lower() not in mnemo_func: raise NotImplementedError( "Mnemonic %s not implemented" % instr.name) @@ -5810,7 +5810,7 @@ def get_ir(self, instr): self.mod_pc(instr, instr_ir, extra_ir) instr.additional_info.except_on_instr = False if instr.additional_info.g1.value & 14 == 0 or \ - not instr.name in repeat_mn: + instr.name not in repeat_mn: return instr_ir, extra_ir if instr.name == "MOVSD" and len(instr.args) == 2: return instr_ir, extra_ir diff --git a/miasm/core/cpu.py b/miasm/core/cpu.py index 7df9f9919..80db11eb6 100644 --- a/miasm/core/cpu.py +++ b/miasm/core/cpu.py @@ -461,7 +461,7 @@ def __init__(self, strbits=None, l=None, cls=None, if cls: for b in cls: if 'flen' in b.__dict__: - flen = getattr(b, 'flen') + flen = b.flen self.strbits = strbits self.l = l @@ -734,7 +734,7 @@ def decode(self, v): return True def encode(self): - if not self.expr in self.reg_info.expr: + if self.expr not in self.reg_info.expr: log.debug("cannot encode reg %r", self.expr) return False self.value = self.reg_info.expr.index(self.expr) @@ -890,10 +890,10 @@ def add_candidate_to_tree(tree, c): continue node = f.l, f.fmask, f.fbits, f.fname, f.flen - if not node in branch: + if node not in branch: branch[node] = {} branch = branch[node] - if not 'mn' in branch: + if 'mn' not in branch: branch['mn'] = set() branch['mn'].add(c) @@ -924,7 +924,7 @@ def __new__(mcs, name, bases, dct): alias = dct.get('alias', False) fields = bases[0].mod_fields(dct['fields']) - if not 'name' in dct: + if 'name' not in dct: dct["name"] = bases[0].getmn(name) if 'args' in dct: # special case for permuted arguments @@ -1103,7 +1103,7 @@ def guess_mnemo(cls, bs, attrib, pre_dis_info, offset): offset_b += l if v & fmask != fbits: continue - if fname is not None and not fname in fname_values: + if fname is not None and fname not in fname_values: fname_values[fname] = v for nb, v in viewitems(vals): if 'mn' in nb: @@ -1240,7 +1240,7 @@ def dis(cls, bs_o, mode_o = None, offset=0): bs_o.leave_atomic_mode() raise offset_b += l - if not f.fname in fname_values: + if f.fname not in fname_values: fname_values[f.fname] = bv todo[i] = bv else: @@ -1306,7 +1306,7 @@ def fromstring(cls, text, loc_db, mode = None): raise ValueError('cannot find name', text) name = name[0] - if not name in cls.all_mn_name: + if name not in cls.all_mn_name: raise ValueError('unknown name', name) clist = [x for x in cls.all_mn_name[name]] out = [] diff --git a/miasm/core/ctypesmngr.py b/miasm/core/ctypesmngr.py index 94c96f7e5..2d990410c 100644 --- a/miasm/core/ctypesmngr.py +++ b/miasm/core/ctypesmngr.py @@ -664,7 +664,7 @@ def ast_to_typeid(self, ast): """Return the CTypeBase of the @ast @ast: pycparser.c_ast instance""" cls = ast.__class__ - if not cls in self.ast_to_typeid_rules: + if cls not in self.ast_to_typeid_rules: raise NotImplementedError("Strange type %r" % ast) return self.ast_to_typeid_rules[cls](ast) @@ -746,7 +746,7 @@ def ast_parse_declaration(self, ast): @ast: parsed pycparser.c_ast object """ cls = ast.__class__ - if not cls in self.ast_parse_rules: + if cls not in self.ast_parse_rules: raise NotImplementedError("Strange declaration %r" % cls) return self.ast_parse_rules[cls](ast) diff --git a/miasm/core/graph.py b/miasm/core/graph.py index e680894cd..fa2764645 100644 --- a/miasm/core/graph.py +++ b/miasm/core/graph.py @@ -90,9 +90,9 @@ def del_node(self, node): self.del_edge(node, succ) def add_edge(self, src, dst): - if not src in self._nodes: + if src not in self._nodes: self.add_node(src) - if not dst in self._nodes: + if dst not in self._nodes: self.add_node(dst) self._edges.append((src, dst)) self._nodes_succ[src].append(dst) @@ -115,7 +115,7 @@ def discard_edge(self, src, dst): self.del_edge(src, dst) def predecessors_iter(self, node): - if not node in self._nodes_pred: + if node not in self._nodes_pred: return for n_pred in self._nodes_pred[node]: yield n_pred @@ -124,7 +124,7 @@ def predecessors(self, node): return [x for x in self.predecessors_iter(node)] def successors_iter(self, node): - if not node in self._nodes_succ: + if node not in self._nodes_succ: return for n_suc in self._nodes_succ[node]: yield n_suc @@ -428,7 +428,7 @@ def _compute_generic_dominators(head, reachable_cb, prev_cb, next_cb): # Compute intersection of all predecessors'dominators new_dom = None for pred in prev_cb(node): - if not pred in nodes: + if pred not in nodes: continue if new_dom is None: new_dom = set(dominators[pred]) diff --git a/miasm/core/objc.py b/miasm/core/objc.py index 24ee84ab0..bd8fa23fd 100644 --- a/miasm/core/objc.py +++ b/miasm/core/objc.py @@ -1566,7 +1566,7 @@ def size_to_int(self, size): @size: CTypeOp or integer""" if isinstance(size, CTypeOp): assert len(size.args) == 2 - arg0, arg1 = [self.size_to_int(arg) for arg in size.args] + arg0, arg1 = (self.size_to_int(arg) for arg in size.args) if size.operator == "+": return arg0 + arg1 elif size.operator == "-": diff --git a/miasm/expression/expression.py b/miasm/expression/expression.py index e5debb341..34aa32128 100644 --- a/miasm/expression/expression.py +++ b/miasm/expression/expression.py @@ -1698,7 +1698,7 @@ def test_set(expr, pattern, tks, result): @result : dictionary of ExprId -> Expr, current context """ - if not pattern in tks: + if pattern not in tks: return expr == pattern if pattern in result and result[pattern] != expr: return False diff --git a/miasm/expression/simplifications_common.py b/miasm/expression/simplifications_common.py index 9156ee671..722bc0572 100644 --- a/miasm/expression/simplifications_common.py +++ b/miasm/expression/simplifications_common.py @@ -400,7 +400,7 @@ def simp_cond_op_int(_, expr): # x?a:b + x?c:d + e => x?(a+c+e:b+d+e) - if not expr.op in ["+", "|", "^", "&", "*", '<<', '>>', 'a>>']: + if expr.op not in ["+", "|", "^", "&", "*", '<<', '>>', 'a>>']: return expr if len(expr.args) < 2: return expr @@ -428,7 +428,7 @@ def simp_cond_op_int(_, expr): def simp_cond_factor(e_s, expr): "Merge similar conditions" - if not expr.op in ["+", "|", "^", "&", "*", '<<', '>>', 'a>>']: + if expr.op not in ["+", "|", "^", "&", "*", '<<', '>>', 'a>>']: return expr if len(expr.args) < 2: return expr @@ -448,7 +448,7 @@ def simp_cond_factor(e_s, expr): not_conds.append(arg) continue cond = arg.cond - if not cond in conds: + if cond not in conds: conds[cond] = [] else: multi_cond = True diff --git a/miasm/ir/symbexec.py b/miasm/ir/symbexec.py index 2e6b07df1..b6be27a2c 100644 --- a/miasm/ir/symbexec.py +++ b/miasm/ir/symbexec.py @@ -23,7 +23,7 @@ def get_block(lifter, ircfg, mdis, addr): """Get IRBlock at address @addr""" loc_key = ircfg.get_or_create_loc_key(addr) - if not loc_key in ircfg.blocks: + if loc_key not in ircfg.blocks: offset = mdis.loc_db.get_location_offset(loc_key) block = mdis.dis_block(offset) lifter.add_asmblock_to_ircfg(block, ircfg) diff --git a/miasm/ir/translators/z3_ir.py b/miasm/ir/translators/z3_ir.py index c72ff36f1..382c2f2cb 100644 --- a/miasm/ir/translators/z3_ir.py +++ b/miasm/ir/translators/z3_ir.py @@ -159,7 +159,7 @@ def from_ExprCompose(self, expr): res = None for arg in expr.args: e = z3.Extract(arg.size-1, 0, self.from_expr(arg)) - if res != None: + if res is not None: res = z3.Concat(e, res) else: res = e diff --git a/miasm/jitter/loader/pe.py b/miasm/jitter/loader/pe.py index 9af068e48..ec3b7c274 100644 --- a/miasm/jitter/loader/pe.py +++ b/miasm/jitter/loader/pe.py @@ -44,7 +44,7 @@ def get_pe_dependencies(pe_obj): out.add(libname) # If binary has redirected export, add dependencies - if pe_obj.DirExport.expdesc != None: + if pe_obj.DirExport.expdesc is not None: addrs = get_export_name_addr_list(pe_obj) for imp_ord_or_name, ad in addrs: # if export is a redirection, search redirected dll @@ -501,7 +501,7 @@ def add_export_lib(self, e, name): ad = found else: # import redirected lib from non loaded dll - if not exp_dname in self.name2off: + if exp_dname not in self.name2off: self.created_redirected_imports.setdefault( exp_dname, set()).add(name) @@ -631,7 +631,7 @@ def vm_load_pe_and_dependencies(vm, fname, name2module, runtime_lib, print(name) if pe_obj is None: continue - if pe_obj.DirExport.expdesc == None: + if pe_obj.DirExport.expdesc is None: continue addrs = get_export_name_addr_list(pe_obj) for imp_ord_or_name, ad in addrs: @@ -753,7 +753,7 @@ def transition(self, data): return self.cur_list.append(self.format_func_info(func_info, func_addr)) else: - self.state == self.STATE_SEARCH + self.state = self.STATE_SEARCH elif self.state == self.STATE_END_FUNC_LIST: self.seen.append(self.cur_list) self.state = self.STATE_SEARCH diff --git a/miasm/jitter/loader/utils.py b/miasm/jitter/loader/utils.py index 7f913d765..cceccc741 100644 --- a/miasm/jitter/loader/utils.py +++ b/miasm/jitter/loader/utils.py @@ -38,7 +38,7 @@ def __init__(self, lib_base_ad=0x71111000, **kargs): def lib_get_add_base(self, name): assert isinstance(name, basestring) name = name.lower().strip(' ') - if not "." in name: + if "." not in name: log.warning('warning adding .dll to modulename') name += '.dll' log.warning(name) @@ -57,7 +57,7 @@ def lib_get_add_base(self, name): return ad def lib_get_add_func(self, libad, imp_ord_or_name, dst_ad=None): - if not libad in viewvalues(self.name2off): + if libad not in viewvalues(self.name2off): raise ValueError('unknown lib base!', hex(libad)) # test if not ordinatl @@ -66,7 +66,7 @@ def lib_get_add_func(self, libad, imp_ord_or_name, dst_ad=None): # imp_ord_or_name = imp_ord_or_name[:imp_ord_or_name.find('\x00')] #[!] can have multiple dst ad - if not imp_ord_or_name in self.lib_imp2dstad[libad]: + if imp_ord_or_name not in self.lib_imp2dstad[libad]: self.lib_imp2dstad[libad][imp_ord_or_name] = set() if dst_ad is not None: self.lib_imp2dstad[libad][imp_ord_or_name].add(dst_ad) diff --git a/miasm/loader/cstruct.py b/miasm/loader/cstruct.py index 06d2e0027..331a9ddcd 100644 --- a/miasm/loader/cstruct.py +++ b/miasm/loader/cstruct.py @@ -27,7 +27,7 @@ def fix_size(fields, wsize): pass elif v == "ptr": v = size2type[wsize] - elif not v in type_size: + elif v not in type_size: raise ValueError("unknown Cstruct type", v) else: v = type_size[v] diff --git a/miasm/loader/elf_init.py b/miasm/loader/elf_init.py index cffb35758..61a849397 100644 --- a/miasm/loader/elf_init.py +++ b/miasm/loader/elf_init.py @@ -235,7 +235,7 @@ def set_linksection(self, val): def get_infosection(self): # XXX info may not be in sh list ?!? - if not self.sh.info in self.parent: + if self.sh.info not in self.parent: return None return self.parent[self.sh.info] @@ -406,7 +406,7 @@ def add_name(self, name): def mod_name(self, name, new_name): s = bytes(self.content) name_b = b'\x00%s\x00' % name.encode() - if not name_b in s: + if name_b not in s: raise ValueError('Unknown name %r' % name) self.content = s.replace( name_b, @@ -666,7 +666,7 @@ def __init__(self, x): self.parent = x def get_rvaitem(self, start, stop=None): - if stop == None: + if stop is None: s = self.parent.getsectionbyvad(start) if s: start = start - s.sh.addr @@ -725,7 +725,7 @@ def get(self, ad_start, ad_stop=None): n_item = slice(n_item, n_item + 1, 1) start = n_item.start + s.ph.offset stop = n_item.stop + s.ph.offset - if n_item.step != None: + if n_item.step is not None: step = n_item.step + s.ph.offset else: step = None diff --git a/miasm/loader/new_cstruct.py b/miasm/loader/new_cstruct.py index 16c947a5b..7714fd976 100644 --- a/miasm/loader/new_cstruct.py +++ b/miasm/loader/new_cstruct.py @@ -46,7 +46,7 @@ def fix_size(fields, wsize): pass elif v == "ptr": v = size2type[wsize] - elif not v in type2realtype: + elif v not in type2realtype: raise ValueError("unknown Cstruct type", v) else: v = type2realtype[v] @@ -177,7 +177,7 @@ def __init__(self, parent_head=None, _sex=None, _wsize=None, **kargs): self._size = None kargs = dict(kargs) # if not sex or size: get the one of the parent - if _sex == None and _wsize == None: + if _sex is None and _wsize is None: if parent_head: _sex = parent_head._sex _wsize = parent_head._wsize @@ -211,8 +211,8 @@ def pack(self): if ffmt in type2realtype or (isinstance(ffmt, str) and re.match(r'\d+s', ffmt)): # basic types fmt = real_fmt(ffmt, self._wsize) - if cpt == None: - if value == None: + if cpt is None: + if value is None: o = struct.calcsize(fmt) * b"\x00" elif ffmt.endswith('s'): new_value = force_bytes(value) @@ -222,7 +222,7 @@ def pack(self): else: o = b"" for v in value: - if value == None: + if value is None: o += struct.calcsize(fmt) * b"\x00" else: o += struct.pack(self.sex + fmt, v) @@ -231,7 +231,7 @@ def pack(self): o = value + b'\x00' elif ffmt in all_cstructs: # sub structures - if cpt == None: + if cpt is None: o = bytes(value) else: o = b"" diff --git a/miasm/loader/pe.py b/miasm/loader/pe.py index 1252e70ed..e6888820e 100644 --- a/miasm/loader/pe.py +++ b/miasm/loader/pe.py @@ -72,7 +72,7 @@ def get_optehdr_num(nthdr): entry_size = 8 if parent.Coffhdr.sizeofoptionalheader < numberofrva * entry_size + len(parent.Opthdr): numberofrva = (parent.Coffhdr.sizeofoptionalheader - len(parent.Opthdr)) // entry_size - log.warn('Bad number of rva.. using default %d' % numberofrva) + log.warning('Bad number of rva.. using default %d' % numberofrva) numberofrva = 0x10 return numberofrva @@ -210,10 +210,10 @@ def add_section(self, name="default", data=b"", **args): return section def align_sections(self, f_align=None, s_align=None): - if f_align == None: + if f_align is None: f_align = self.parent_head.NThdr.filealignment f_align = max(0x200, f_align) - if s_align == None: + if s_align is None: s_align = self.parent_head.NThdr.sectionalignment s_align = max(0x1000, s_align) @@ -295,12 +295,12 @@ def __init__(self, target_class, raw, off, cstr, num=None): if not raw: return - while (num == None) or (num and i < num): + while (num is None) or (num and i < num): entry, length = cstr.unpack_l(raw, off, target_class.parent_head, target_class.parent_head._sex, target_class.parent_head._wsize) - if num == None: + if num is None: if raw[off:off + length] == b'\x00' * length: self.end = b'\x00' * length break @@ -532,9 +532,9 @@ def add_dlldesc(self, new_dll): if attr not in import_descriptor: import_descriptor[attr] = 0 entry = ImpDesc_e(self.parent_head, **import_descriptor) - if entry.firstthunk != None: + if entry.firstthunk is not None: of1 = entry.firstthunk - elif of1 == None: + elif of1 is None: raise RuntimeError("set fthunk") else: entry.firstthunk = of1 @@ -617,7 +617,7 @@ def get_funcrva(self, dllname, funcname): def get_funcvirt(self, dllname, funcname): rva = self.get_funcrva(dllname, funcname) - if rva == None: + if rva is None: return return self.parent_head.rva2virt(rva) @@ -647,15 +647,15 @@ def gete(self, raw, off): return None, off off_sav = off if off >= len(raw): - log.warn("export dir malformed!") + log.warning("export dir malformed!") return None, off_o expdesc = ExpDesc_e.unpack(raw, off, self.parent_head) - if self.parent_head.rva2off(expdesc.addressoffunctions) == None or \ - self.parent_head.rva2off(expdesc.addressofnames) == None or \ - self.parent_head.rva2off(expdesc.addressofordinals) == None: - log.warn("export dir malformed!") + if self.parent_head.rva2off(expdesc.addressoffunctions) is None or \ + self.parent_head.rva2off(expdesc.addressofnames) is None or \ + self.parent_head.rva2off(expdesc.addressofordinals) is None: + log.warning("export dir malformed!") return None, off_o self.dlldescname = DescName.unpack(raw, expdesc.name, self.parent_head) try: @@ -669,7 +669,7 @@ def gete(self, raw, off): expdesc.addressofordinals, Ordinal, expdesc.numberofnames) except RuntimeError: - log.warn("export dir malformed!") + log.warning("export dir malformed!") return None, off_o for func in self.f_names: func.name = DescName.unpack(raw, func.rva, self.parent_head) @@ -697,7 +697,7 @@ def build_content(self, raw): names = [func.name for func in self.f_names] names_ = names[:] if names != names_: - log.warn("unsorted export names, may bug") + log.warning("unsorted export names, may bug") def set_rva(self, rva, size=None): rva_size = self.parent_head._wsize // 8 @@ -791,7 +791,7 @@ def add_name(self, name, rva=0xdeadc0fe, ordinal=None): names_s = names[:] names_s.sort() if names_s != names: - log.warn('tab names was not sorted may bug') + log.warning('tab names was not sorted may bug') names.append(name) names.sort() index = names.index(name) @@ -831,7 +831,7 @@ def get_funcrva(self, f_str): def get_funcvirt(self, addr): rva = self.get_funcrva(addr) - if rva == None: + if rva is None: return return self.parent_head.rva2virt(rva) @@ -861,7 +861,7 @@ def gete(self, raw, off): out = [] while off < ofend: if off >= len(raw): - log.warn('warning bad reloc offset') + log.warning('warning bad reloc offset') break delaydesc, length = Delaydesc_e.unpack_l(raw, @@ -1030,13 +1030,13 @@ def add_dlldesc(self, new_dll): for funcname in new_functions ] for attr in ["attrs", "name", "hmod", "firstthunk", "originalfirstthunk", "boundiat", "unloadiat", "timestamp"]: - if not attr in import_descriptor: + if attr not in import_descriptor: import_descriptor[attr] = 0 entry = Delaydesc_e(self.parent_head, **import_descriptor) # entry.cstr.__dict__.update(import_descriptor) - if entry.firstthunk != None: + if entry.firstthunk is not None: of1 = entry.firstthunk - elif of1 == None: + elif of1 is None: raise RuntimeError("set fthunk") else: entry.firstthunk = of1 @@ -1066,7 +1066,7 @@ def add_dlldesc(self, new_dll): entry.originalfirstthunks.append(rva_ofirstt) rva_func = Rva(self.parent_head) - if ibn != None: + if ibn is not None: rva_func.rva = 0xDEADBEEF # default func addr else: # ord ?XXX? @@ -1114,7 +1114,7 @@ def get_funcrva(self, func): def get_funcvirt(self, addr): rva = self.get_funcrva(addr) - if rva == None: + if rva is None: return return self.parent_head.rva2virt(rva) @@ -1153,18 +1153,18 @@ def gete(self, raw, off): out = [] while off < ofend: if off >= len(raw): - log.warn('warning bad reloc offset') + log.warning('warning bad reloc offset') break reldesc, length = Rel.unpack_l(raw, off, self.parent_head) if reldesc.size == 0: - log.warn('warning null reldesc') + log.warning('warning null reldesc') reldesc.size = length break of2 = off + length if of2 + reldesc.size > len(self.parent_head.img_rva): - log.warn('relocation too big, skipping') + log.warning('relocation too big, skipping') break reldesc.rels = struct_array(self, raw, of2, @@ -1330,7 +1330,7 @@ def gete(self, raw, off): # data dir off = entry.offsettodata if not 0 <= off < len(raw): - log.warn('bad resource entry') + log.warning('bad resource entry') continue data = ResDataEntry.unpack(raw, off, @@ -1341,10 +1341,10 @@ def gete(self, raw, off): continue # subdir if off in dir_done: - log.warn('warning recusif subdir') + log.warning('warning recusif subdir') continue if not 0 <= off < len(self.parent_head.img_rva): - log.warn('bad resource entry') + log.warning('bad resource entry') continue subdir, length = ResDesc_e.unpack_l(raw, off, @@ -1356,7 +1356,7 @@ def gete(self, raw, off): ResEntry, nbr) except RuntimeError: - log.warn('bad resource entry') + log.warning('bad resource entry') continue entry.subdir = subdir @@ -1409,7 +1409,7 @@ def __len__(self): for entry in my_dir.resentries: if not entry.offsettosubdir: continue - if not entry.subdir in dir_todo: + if entry.subdir not in dir_todo: dir_todo.append(entry.subdir) else: raise RuntimeError("recursive dir") @@ -1447,7 +1447,7 @@ def set_rva(self, rva, size=None): for entry in my_dir.resentries: if not entry.offsettosubdir: continue - if not entry.subdir in dir_todo: + if entry.subdir not in dir_todo: dir_todo.append(entry.subdir) else: raise RuntimeError("recursive dir") diff --git a/miasm/loader/pe_init.py b/miasm/loader/pe_init.py index 202a7b000..227af479c 100644 --- a/miasm/loader/pe_init.py +++ b/miasm/loader/pe_init.py @@ -111,7 +111,7 @@ def get(self, virt_start, virt_stop=None): @virt_stop: virt stop address """ rva_start = self.parent.virt2rva(virt_start) - if virt_stop != None: + if virt_stop is not None: rva_stop = self.parent.virt2rva(virt_stop) else: rva_stop = None @@ -135,7 +135,7 @@ def max_addr(self): def find(self, pattern, start=0, end=None): if start != 0: start = self.parent.virt2rva(start) - if end != None: + if end is not None: end = self.parent.virt2rva(end) ret = self.parent.img_rva.find(pattern, start, end) @@ -146,7 +146,7 @@ def find(self, pattern, start=0, end=None): def rfind(self, pattern, start=0, end=None): if start != 0: start = self.parent.virt2rva(start) - if end != None: + if end is not None: end = self.parent.virt2rva(end) ret = self.parent.img_rva.rfind(pattern, start, end) @@ -297,7 +297,7 @@ def parse_content(self, self.Doshdr = pe.Doshdr.unpack(self.content, off, self) off = self.Doshdr.lfanew if off > len(self.content): - log.warn('ntsig after eof!') + log.warning('ntsig after eof!') self.NTsig = None return self.NTsig = pe.NTsig.unpack(self.content, @@ -309,7 +309,7 @@ def parse_content(self, self.DirRes = None if self.NTsig.signature != 0x4550: - log.warn('not a valid pe!') + log.warning('not a valid pe!') return off += len(self.NTsig) self.Coffhdr, length = pe.Coffhdr.unpack_l(self.content, @@ -346,7 +346,7 @@ def parse_content(self, else: raw_off = section.offset if raw_off != section.offset: - log.warn('unaligned raw section (%x %x)!', raw_off, section.offset) + log.warning('unaligned raw section (%x %x)!', raw_off, section.offset) section.data = StrPatchwork() if section.rawsize == 0: @@ -575,7 +575,7 @@ def build_content(self): for section in self.SHList: if off + len(bytes(self.SHList)) > section.offset: - log.warn("section offset overlap pe hdr 0x%x 0x%x" % + log.warning("section offset overlap pe hdr 0x%x 0x%x" % (off + len(bytes(self.SHList)), section.offset)) self.DirImport.build_content(content) self.DirExport.build_content(content) @@ -585,7 +585,7 @@ def build_content(self): self.DirTls.build_content(content) if (self.Doshdr.lfanew + len(self.NTsig) + len(self.Coffhdr)) % 4: - log.warn("non aligned coffhdr, bad crc calculation") + log.warning("non aligned coffhdr, bad crc calculation") crcs = compute_crc(bytes(content), self.NThdr.CheckSum) content[self.Doshdr.lfanew + len(self.NTsig) + len(self.Coffhdr) + 64] = struct.pack('I', crcs) return bytes(content) @@ -615,7 +615,7 @@ def export_funcs(self): def reloc_to(self, imgbase): offset = imgbase - self.NThdr.ImageBase if self.DirReloc is None: - log.warn('no relocation found!') + log.warning('no relocation found!') for rel in self.DirReloc.reldesc: rva = rel.rva for reloc in rel.rels: diff --git a/miasm/os_dep/win_api_x86_32.py b/miasm/os_dep/win_api_x86_32.py index 6e568abbc..c017bce9f 100644 --- a/miasm/os_dep/win_api_x86_32.py +++ b/miasm/os_dep/win_api_x86_32.py @@ -533,7 +533,7 @@ def advapi32_CryptHashData(jitter): ret_ad, args = jitter.func_args_stdcall(["hhash", "pbdata", "dwdatalen", "dwflags"]) - if not args.hhash in winobjs.cryptcontext: + if args.hhash not in winobjs.cryptcontext: raise ValueError("unknown crypt context") data = jitter.vm.get_mem(args.pbdata, args.dwdatalen) @@ -547,7 +547,7 @@ def advapi32_CryptGetHashParam(jitter): ret_ad, args = jitter.func_args_stdcall(["hhash", "param", "pbdata", "dwdatalen", "dwflags"]) - if not args.hhash in winobjs.cryptcontext: + if args.hhash not in winobjs.cryptcontext: raise ValueError("unknown crypt context") if args.param == 2: @@ -793,7 +793,7 @@ def kernel32_VirtualProtect(jitter): 'lpfloldprotect']) # XXX mask hpart flnewprotect = args.flnewprotect & 0xFFF - if not flnewprotect in ACCESS_DICT: + if flnewprotect not in ACCESS_DICT: raise ValueError('unknown access dw!') if args.lpfloldprotect: @@ -812,7 +812,7 @@ def kernel32_VirtualProtect(jitter): size = jitter.vm.get_all_memory()[addr]["size"] # Page is included in Protect area if (paddr <= addr < addr + size <= paddr + psize): - log.warn("set page %x %x", addr, ACCESS_DICT[flnewprotect]) + log.warning("set page %x %x", addr, ACCESS_DICT[flnewprotect]) jitter.vm.set_mem_access(addr, ACCESS_DICT[flnewprotect]) continue @@ -844,7 +844,7 @@ def kernel32_VirtualProtect(jitter): for split_addr, split_access, split_data in splits: if not split_data: continue - log.warn("create page %x %x", split_addr, + log.warning("create page %x %x", split_addr, ACCESS_DICT[flnewprotect]) jitter.vm.add_memory_page( split_addr, split_access, split_data, @@ -858,7 +858,7 @@ def kernel32_VirtualAlloc(jitter): 'alloc_type', 'flprotect']) - if not args.flprotect in ACCESS_DICT: + if args.flprotect not in ACCESS_DICT: raise ValueError('unknown access dw!') if args.lpvoid == 0: @@ -1186,7 +1186,7 @@ def cryptdll_MD5Update(jitter): ret_ad, args = jitter.func_args_stdcall(["ad_ctx", "ad_input", "inlen"]) index = jitter.vm.get_u32(args.ad_ctx) - if not index in winobjs.cryptdll_md5_h: + if index not in winobjs.cryptdll_md5_h: raise ValueError('unknown h context', index) data = jitter.vm.get_mem(args.ad_input, args.inlen) @@ -1200,7 +1200,7 @@ def cryptdll_MD5Final(jitter): ret_ad, args = jitter.func_args_stdcall(["ad_ctx"]) index = jitter.vm.get_u32(args.ad_ctx) - if not index in winobjs.cryptdll_md5_h: + if index not in winobjs.cryptdll_md5_h: raise ValueError('unknown h context', index) h = winobjs.cryptdll_md5_h[index].digest() jitter.vm.set_mem(args.ad_ctx + 88, h) @@ -1420,7 +1420,7 @@ def ntoskrnl_IoAllocateMdl(jitter): def ntoskrnl_MmProbeAndLockPages(jitter): ret_ad, args = jitter.func_args_stdcall(["p_mdl", "access_mode", "op"]) - if not ad2mdl(args.p_mdl) in winobjs.nt_mdl: + if ad2mdl(args.p_mdl) not in winobjs.nt_mdl: raise ValueError('unk mdl', hex(args.p_mdl)) jitter.func_ret_stdcall(ret_ad, 0) @@ -1430,7 +1430,7 @@ def ntoskrnl_MmMapLockedPagesSpecifyCache(jitter): "cache_type", "base_ad", "bugcheckonfailure", "priority"]) - if not ad2mdl(args.p_mdl) in winobjs.nt_mdl: + if ad2mdl(args.p_mdl) not in winobjs.nt_mdl: raise ValueError('unk mdl', hex(args.p_mdl)) jitter.func_ret_stdcall(ret_ad, winobjs.nt_mdl[ad2mdl(args.p_mdl)].ad) @@ -1438,7 +1438,7 @@ def ntoskrnl_MmMapLockedPagesSpecifyCache(jitter): def ntoskrnl_MmProtectMdlSystemAddress(jitter): ret_ad, args = jitter.func_args_stdcall(["p_mdl", "prot"]) - if not ad2mdl(args.p_mdl) in winobjs.nt_mdl: + if ad2mdl(args.p_mdl) not in winobjs.nt_mdl: raise ValueError('unk mdl', hex(args.p_mdl)) jitter.func_ret_stdcall(ret_ad, 0) @@ -1446,7 +1446,7 @@ def ntoskrnl_MmProtectMdlSystemAddress(jitter): def ntoskrnl_MmUnlockPages(jitter): ret_ad, args = jitter.func_args_stdcall(['p_mdl']) - if not ad2mdl(args.p_mdl) in winobjs.nt_mdl: + if ad2mdl(args.p_mdl) not in winobjs.nt_mdl: raise ValueError('unk mdl', hex(args.p_mdl)) jitter.func_ret_stdcall(ret_ad, 0) @@ -1454,7 +1454,7 @@ def ntoskrnl_MmUnlockPages(jitter): def ntoskrnl_IoFreeMdl(jitter): ret_ad, args = jitter.func_args_stdcall(['p_mdl']) - if not ad2mdl(args.p_mdl) in winobjs.nt_mdl: + if ad2mdl(args.p_mdl) not in winobjs.nt_mdl: raise ValueError('unk mdl', hex(args.p_mdl)) del(winobjs.nt_mdl[ad2mdl(args.p_mdl)]) jitter.func_ret_stdcall(ret_ad, 0) @@ -1821,7 +1821,7 @@ def my_CreateEvent(jitter, funcname, get_str): "binitialstate", "lpname"]) s = get_str(args.lpname) if args.lpname else None - if not s in winobjs.events_pool: + if s not in winobjs.events_pool: winobjs.events_pool[s] = (args.bmanualreset, args.binitialstate) else: log.warning('WARNING: known event') @@ -1908,7 +1908,7 @@ def ntdll_ZwProtectVirtualMemory(jitter): # XXX mask hpart flnewprotect = args.flnewprotect & 0xFFF - if not flnewprotect in ACCESS_DICT: + if flnewprotect not in ACCESS_DICT: raise ValueError('unknown access dw!') jitter.vm.set_mem_access(ad, ACCESS_DICT[flnewprotect]) @@ -1927,7 +1927,7 @@ def ntdll_ZwAllocateVirtualMemory(jitter): # ad = upck32(jitter.vm.get_mem(args.lppvoid, 4)) dwsize = jitter.vm.get_u32(args.pdwsize) - if not args.flprotect in ACCESS_DICT: + if args.flprotect not in ACCESS_DICT: raise ValueError('unknown access dw!') alloc_addr = winobjs.heap.next_addr(dwsize) @@ -2250,7 +2250,7 @@ def msvcrt_fprintf(jitter): log.info("fprintf(%x, '%s') = '%s'" % (args.file, lambda addr:get_win_str_a(jitter, addr)(args.fmt), output)) fd = jitter.vm.get_u32(args.file + 0x10) - if not fd in winobjs.handle_pool: + if fd not in winobjs.handle_pool: raise NotImplementedError("Untested case") winobjs.handle_pool[fd].info.write(output) @@ -2439,7 +2439,7 @@ def kernel32_TlsSetValue(jitter): def kernel32_TlsGetValue(jitter): ret_ad, args = jitter.func_args_stdcall(["tlsindex"]) - if not args.tlsindex in winobjs.tls_values: + if args.tlsindex not in winobjs.tls_values: raise ValueError("unknown tls val", repr(args.tlsindex)) jitter.func_ret_stdcall(ret_ad, winobjs.tls_values[args.tlsindex]) @@ -2658,7 +2658,7 @@ def kernel32_CreateFileMapping(jitter, funcname, get_str): ret = winobjs.handle_pool.add('filemapping', hmap_handle) else: - if not args.hfile in winobjs.handle_pool: + if args.hfile not in winobjs.handle_pool: raise ValueError('unknown handle') ret = winobjs.handle_pool.add('filemapping', args.hfile) jitter.func_ret_stdcall(ret_ad, ret) @@ -2678,10 +2678,10 @@ def kernel32_MapViewOfFile(jitter): "dwfileoffsetlow", "length"]) - if not args.hfile in winobjs.handle_pool: + if args.hfile not in winobjs.handle_pool: raise ValueError('unknown handle') hmap = winobjs.handle_pool[args.hfile] - if not hmap.info in winobjs.handle_pool: + if hmap.info not in winobjs.handle_pool: raise ValueError('unknown file handle') hfile_o = winobjs.handle_pool[hmap.info] @@ -2692,7 +2692,7 @@ def kernel32_MapViewOfFile(jitter): log.debug('MapViewOfFile len: %x', len(data)) - if not args.flprotect in ACCESS_DICT: + if args.flprotect not in ACCESS_DICT: raise ValueError('unknown access dw!') alloc_addr = winobjs.heap.alloc(jitter, len(data)) @@ -2707,7 +2707,7 @@ def kernel32_MapViewOfFile(jitter): def kernel32_UnmapViewOfFile(jitter): ret_ad, args = jitter.func_args_stdcall(['ad']) - if not args.ad in winobjs.handle_mapped: + if args.ad not in winobjs.handle_mapped: raise NotImplementedError("Untested case") """ hfile_o, dwfileoffsethigh, dwfileoffsetlow, length = winobjs.handle_mapped[ad] @@ -2942,7 +2942,7 @@ def msvcrt_fseek(jitter): ret_ad, args = jitter.func_args_cdecl(['stream', 'offset', 'orig']) fd = jitter.vm.get_u32(args.stream + 0x10) - if not fd in winobjs.handle_pool: + if fd not in winobjs.handle_pool: raise NotImplementedError("Untested case") o = winobjs.handle_pool[fd] o.info.seek(args.offset, args.orig) @@ -2953,7 +2953,7 @@ def msvcrt_ftell(jitter): ret_ad, args = jitter.func_args_cdecl(["stream"]) fd = jitter.vm.get_u32(args.stream + 0x10) - if not fd in winobjs.handle_pool: + if fd not in winobjs.handle_pool: raise NotImplementedError("Untested case") o = winobjs.handle_pool[fd] off = o.info.tell() @@ -2963,7 +2963,7 @@ def msvcrt_ftell(jitter): def msvcrt_rewind(jitter): ret_ad, args = jitter.func_args_cdecl(["stream"]) fd = jitter.vm.get_u32(args.stream + 0x10) - if not fd in winobjs.handle_pool: + if fd not in winobjs.handle_pool: raise NotImplementedError("Untested case") o = winobjs.handle_pool[fd] # off = o.info.seek(0, 0) @@ -2973,7 +2973,7 @@ def msvcrt_rewind(jitter): def msvcrt_fread(jitter): ret_ad, args = jitter.func_args_cdecl(["buf", "size", "nmemb", "stream"]) fd = jitter.vm.get_u32(args.stream + 0x10) - if not fd in winobjs.handle_pool: + if fd not in winobjs.handle_pool: raise NotImplementedError("Untested case") data = winobjs.handle_pool[fd].info.read(args.size * args.nmemb) @@ -2984,7 +2984,7 @@ def msvcrt_fread(jitter): def msvcrt_fwrite(jitter): ret_ad, args = jitter.func_args_cdecl(["buf", "size", "nmemb", "stream"]) fd = jitter.vm.get_u32(args.stream + 0x10) - if not fd in winobjs.handle_pool: + if fd not in winobjs.handle_pool: raise NotImplementedError("Unknown file handle!") data = jitter.vm.get_mem(args.buf, args.size*args.nmemb) @@ -2996,7 +2996,7 @@ def msvcrt_fclose(jitter): ret_ad, args = jitter.func_args_cdecl(['stream']) fd = jitter.vm.get_u32(args.stream + 0x10) - if not fd in winobjs.handle_pool: + if fd not in winobjs.handle_pool: raise NotImplementedError("Untested case") o = winobjs.handle_pool[fd] # off = o.info.close() @@ -3216,7 +3216,7 @@ def msvcrt__ultow(jitter): ret_ad, args = jitter.func_args_cdecl(["value", "p", "radix"]) value = args.value & 0xFFFFFFFF - if not args.radix in [10, 16, 20]: + if args.radix not in [10, 16, 20]: raise ValueError("Not tested") s = int2base(value, args.radix) set_win_str_w(jitter, args.p, s) diff --git a/miasm/os_dep/win_api_x86_32_seh.py b/miasm/os_dep/win_api_x86_32_seh.py index 574164771..96fae0bc3 100644 --- a/miasm/os_dep/win_api_x86_32_seh.py +++ b/miasm/os_dep/win_api_x86_32_seh.py @@ -338,7 +338,7 @@ def fix_InLoadOrderModuleList(jitter, modules_info): ntdll_pe = modules_info.name2module.get("ntdll.dll", None) special_modules = [main_pe, kernel32_pe, ntdll_pe] if not all(special_modules): - log.warn( + log.warning( 'No main pe, ldr data will be unconsistant %r', special_modules) loaded_modules = modules_info.modules else: @@ -365,7 +365,7 @@ def fix_InMemoryOrderModuleList(jitter, modules_info): ntdll_pe = modules_info.name2module.get("ntdll.dll", None) special_modules = [main_pe, kernel32_pe, ntdll_pe] if not all(special_modules): - log.warn('No main pe, ldr data will be unconsistant') + log.warning('No main pe, ldr data will be unconsistant') loaded_modules = modules_info.modules else: loaded_modules = [module for module in modules_info.modules @@ -392,7 +392,7 @@ def fix_InInitializationOrderModuleList(jitter, modules_info): ntdll_pe = modules_info.name2module.get("ntdll.dll", None) special_modules = [main_pe, kernel32_pe, ntdll_pe] if not all(special_modules): - log.warn('No main pe, ldr data will be unconsistant') + log.warning('No main pe, ldr data will be unconsistant') loaded_modules = modules_info.modules else: loaded_modules = [module for module in modules_info.modules diff --git a/test/arch/arm/sem.py b/test/arch/arm/sem.py index 343bc063f..fb4ce910e 100755 --- a/test/arch/arm/sem.py +++ b/test/arch/arm/sem.py @@ -24,7 +24,8 @@ def M(addr): return ExprMem(ExprInt(addr, 16), 16) -def compute(asm, inputstate={}, debug=False): +def compute(asm, inputstate=None, debug=False): + inputstate = inputstate or {} loc_db = LocationDB() sympool = dict(regs_init) sympool.update({k: ExprInt(v, k.size) for k, v in viewitems(inputstate)}) diff --git a/test/arch/msp430/sem.py b/test/arch/msp430/sem.py index 51a2c540d..3a23981d0 100755 --- a/test/arch/msp430/sem.py +++ b/test/arch/msp430/sem.py @@ -23,7 +23,8 @@ def M(addr): return ExprMem(ExprInt(addr, 16), 16) -def compute(asm, inputstate={}, debug=False): +def compute(asm, inputstate=None, debug=False): + inputstate = inputstate or {} loc_db = LocationDB() sympool = dict(regs_init) sympool.update({k: ExprInt(v, k.size) for k, v in viewitems(inputstate)}) diff --git a/test/arch/ppc32/sem.py b/test/arch/ppc32/sem.py index c3a185316..6a70f0c9a 100644 --- a/test/arch/ppc32/sem.py +++ b/test/arch/ppc32/sem.py @@ -24,7 +24,8 @@ def M(addr): return ExprMem(ExprInt(addr, 32), 32) -def compute(asm, inputstate={}, debug=False): +def compute(asm, inputstate=None, debug=False): + inputstate = inputstate or {} loc_db = LocationDB() sympool = dict(regs_init) sympool.update({k: ExprInt(v, k.size) for k, v in viewitems(inputstate)}) diff --git a/test/arch/x86/sem.py b/test/arch/x86/sem.py index 5bca413f2..01b038007 100755 --- a/test/arch/x86/sem.py +++ b/test/arch/x86/sem.py @@ -43,7 +43,8 @@ def symb_exec(lbl, lifter, ircfg, inputstate, debug): if k not in EXCLUDE_REGS and regs_init.get(k, None) != v } -def compute(Lifter, mode, asm, inputstate={}, debug=False): +def compute(Lifter, mode, asm, inputstate=None, debug=False): + inputstate = inputstate or {} loc_db = LocationDB() instr = mn.fromstring(asm, loc_db, mode) code = mn.asm(instr)[0] @@ -52,10 +53,11 @@ def compute(Lifter, mode, asm, inputstate={}, debug=False): lifter = Lifter(loc_db) ircfg = lifter.new_ircfg() lbl = lifter.add_instr_to_ircfg(instr, ircfg) - return symb_exec(lbl, lifter, ircfg, inputstate, debug) + return symb_exec(lbl, lifter, ircfg, inputstate or dict(), debug) -def compute_txt(Lifter, mode, txt, inputstate={}, debug=False): +def compute_txt(Lifter, mode, txt, inputstate=None, debug=False): + inputstate = inputstate or {} loc_db = LocationDB() asmcfg = parse_asm.parse_txt(mn, mode, txt, loc_db) loc_db.set_location_offset(loc_db.get_name_location("main"), 0x0) diff --git a/test/test_all.py b/test/test_all.py index 85ebb31f6..d6faec6cc 100755 --- a/test/test_all.py +++ b/test/test_all.py @@ -457,11 +457,11 @@ def __init__(self, test_nb, implicit, base_addr, target_addr, elements, (0x401000, 0x401025, ["EAX", "EBX"], 4), (0x401000, 0x401007, ["EBX"], 3), ] -for i, test_args in enumerate(test_args): +for i, test_arg in enumerate(test_args): test_dg = SemanticTestAsm("x86_32", "PE", ["dg_test_%.2d" % i]) testset += test_dg - testset += TestDepgraph(i, False, *test_args, depends=[test_dg]) - testset += TestDepgraph(i, True, *test_args, depends=[test_dg]) + testset += TestDepgraph(i, False, *test_arg, depends=[test_dg]) + testset += TestDepgraph(i, True, *test_arg, depends=[test_dg]) ## Jitter for script in ["jitload.py", @@ -881,8 +881,8 @@ def run_process(t): executable = t.executable if t.executable else sys.executable print("Exec: ", executable, "(explicit)" if t.executable else "(default)") - for t in t.depends: - assert "shellcode.py" in t.command_line[0], "At the moment, only dependencies on 'shellcode.py' are handled" + for d in t.depends: + assert "shellcode.py" in d.command_line[0], "At the moment, only dependencies on 'shellcode.py' are handled" subprocess.check_call( [executable] + t.command_line,