diff options
| -rw-r--r-- | miasm/arch/ia32_sem.py | 34 | ||||
| -rwxr-xr-x | miasm/tools/emul_helper.py | 22 |
2 files changed, 28 insertions, 28 deletions
diff --git a/miasm/arch/ia32_sem.py b/miasm/arch/ia32_sem.py index 23ff103f..e4bfca10 100644 --- a/miasm/arch/ia32_sem.py +++ b/miasm/arch/ia32_sem.py @@ -631,14 +631,14 @@ def rcr(info, a, b): ### hack (only valid if b=1) e.append(ExprAff(of, ExprOp("^", get_op_msb(a), get_op_msb(c)))) e.append(ExprAff(a, c)) - + return e def sar(info, a, b): e= [] cast_int = tab_uintsize[a.get_size()] cast_intb = tab_uintsize[b.get_size()] - + shifter = ExprOp('&',b, ExprInt(cast_intb(0x1f))) c = ExprOp('a>>', a, shifter) @@ -1114,7 +1114,7 @@ def popfw(info): def pushad(info): e = [] - opmode, admode = info + opmode, admode = info.opmode, info.admode if opmode == u16: s = 16 myesp = esp[:16] @@ -1133,7 +1133,7 @@ def pushad(info): def popad(info): e = [] - opmode, admode = info + opmode, admode = info.opmode, info.admode if opmode == u16: s = 16 myesp = esp[:16] @@ -1159,7 +1159,7 @@ def popad(info): def call(info, a, b): e= [] - opmode, admode = info + opmode, admode = info.opmode, info.admode if opmode == u16: s = 16 myesp = esp[:16] @@ -1176,7 +1176,7 @@ def call(info, a, b): def ret(info, a = ExprInt(uint32(0))): e = [] - opmode, admode = info + opmode, admode = info.opmode, info.admode if opmode == u16: s = 16 myesp = esp[:16] @@ -1190,7 +1190,7 @@ def ret(info, a = ExprInt(uint32(0))): def retf(info, a = ExprInt(uint32(0))): e = [] - opmode, admode = info + opmode, admode = info.opmode, info.admode if opmode == u16: s = 16 myesp = esp[:16] @@ -1207,7 +1207,7 @@ def retf(info, a = ExprInt(uint32(0))): return e def leave(info): - opmode, admode = info + opmode, admode = info.opmode, info.admode if opmode == u16: s = 16 myesp = esp[:16] @@ -1224,7 +1224,7 @@ def leave(info): return e def enter(info, a,b): - opmode, admode = info + opmode, admode = info.opmode, info.admode if opmode == u16: s = 16 myesp = esp[:16] @@ -1483,7 +1483,7 @@ def imul(info, a, b = None, c = None): def cdq(info): # XXX to check - opmode, admode = info + opmode, admode = info.opmode, info.admode if opmode == u32: e = [] e.append(ExprAff(edx, @@ -1812,7 +1812,7 @@ def rdtsc(info): return e def cbw(info, a): - opmode, admode = info + opmode, admode = info.opmode, info.admode if opmode == u16: s = 16 src = a[:8] @@ -2240,9 +2240,9 @@ class ia32_rexpr: s32:'i', u32:'I', } - - + + r_eax = eax r_ecx = ecx r_edx = edx @@ -2251,7 +2251,7 @@ class ia32_rexpr: r_ebp = ebp r_esi = esi r_edi = edi - + r_dr0 = dr0 r_dr1 = dr1 r_dr2 = dr2 @@ -2260,7 +2260,7 @@ class ia32_rexpr: r_dr5 = dr5 r_dr6 = dr6 r_dr7 = dr7 - + r_cr0 = cr0 r_cr1 = cr1 r_cr2 = cr2 @@ -2269,7 +2269,7 @@ class ia32_rexpr: r_cr5 = cr5 r_cr6 = cr6 r_cr7 = cr7 - + r_ax = r_eax[:16] r_cx = r_ecx[:16] r_dx = r_edx[:16] @@ -2278,7 +2278,7 @@ class ia32_rexpr: r_bp = r_ebp[:16] r_si = r_esi[:16] r_di = r_edi[:16] - + r_al = r_eax[:8] r_cl = r_ecx[:8] r_dl = r_edx[:8] diff --git a/miasm/tools/emul_helper.py b/miasm/tools/emul_helper.py index 66521bf3..ba16eabf 100755 --- a/miasm/tools/emul_helper.py +++ b/miasm/tools/emul_helper.py @@ -168,23 +168,23 @@ def get_instr_expr_args(name, modifs, mnemo_mode, args, my_eip): #""" ###XXX for eval abs -def get_instr_expr_args(name, modifs, opmode, admode, args, my_eip): +def get_instr_expr_args(l, args, my_eip): for a in args: if type(a) in [int, long]: raise ValueError('int deprec in args') - info = (opmode, admode) - if name in ['jmp']: + info = l + if l.m.name in ['jmp']: if isinstance(args[0], ExprInt): - e = mnemo_func[name](info, args[0]) + e = mnemo_func[l.m.name](info, args[0]) else: - e = mnemo_func[name](info, *args) - elif name in jcc: - e = mnemo_func[name](info, my_eip, args[0]) - elif name in ['call']: - e = mnemo_func[name](info, my_eip, args[0]) + e = mnemo_func[l.m.name](info, *args) + elif l.m.name in jcc: + e = mnemo_func[l.m.name](l, my_eip, args[0]) + elif l.m.name in ['call']: + e = mnemo_func[l.m.name](l, my_eip, args[0]) else: - e = mnemo_func[name](info, *args) + e = mnemo_func[l.m.name](l, *args) return e #""" @@ -194,7 +194,7 @@ def get_instr_expr(l, my_eip, args = None, segm_to_do = {}): for x in l.arg: args.append(dict_to_Expr(x, l.m.modifs, l.opmode, l.admode, segm_to_do)) l.arg_expr = args - return get_instr_expr_args(l.m.name, l.m.modifs, l.opmode, l.admode, args, my_eip) + return get_instr_expr_args(l, args, my_eip) |