diff options
| author | serpilliere <devnull@localhost> | 2012-07-31 12:57:04 +0200 |
|---|---|---|
| committer | serpilliere <devnull@localhost> | 2012-07-31 12:57:04 +0200 |
| commit | 753e230cec8b4070ce6ffcdfadc5daa05abb0f5d (patch) | |
| tree | 71ec3d74e9574a4f2f2f7eba507ce1d5a5ac6d64 | |
| parent | a95d1b7bd1d8e8ca349c45fb83987a4baaf99025 (diff) | |
| download | miasm-753e230cec8b4070ce6ffcdfadc5daa05abb0f5d.tar.gz miasm-753e230cec8b4070ce6ffcdfadc5daa05abb0f5d.zip | |
eval_abs: fix mem lookup; ia32_sem: gen ia32info
| -rw-r--r-- | example/expression/find_conditions.py | 6 | ||||
| -rw-r--r-- | example/expression/manip_expression2.py | 2 | ||||
| -rw-r--r-- | miasm/arch/ia32_sem.py | 6 | ||||
| -rw-r--r-- | miasm/expression/expression_eval_abstract.py | 4 |
4 files changed, 12 insertions, 6 deletions
diff --git a/example/expression/find_conditions.py b/example/expression/find_conditions.py index 3fe64f2c..f57a83ad 100644 --- a/example/expression/find_conditions.py +++ b/example/expression/find_conditions.py @@ -97,9 +97,9 @@ argc = ExprId('argc') argv = ExprId('argv') ret_addr = ExprId('ret_addr') -machine.eval_instr(push(('u32', 'u32'), argv)) -machine.eval_instr(push(('u32', 'u32'), argc)) -machine.eval_instr(push(('u32', 'u32'), ret_addr)) +machine.eval_instr(push(ia32info(), argv)) +machine.eval_instr(push(ia32info(), argc)) +machine.eval_instr(push(ia32info(), ret_addr)) ad = int(ad_to_dis, 16) print 'disasm', hex(ad) diff --git a/example/expression/manip_expression2.py b/example/expression/manip_expression2.py index cbdd8f9d..e8b73a92 100644 --- a/example/expression/manip_expression2.py +++ b/example/expression/manip_expression2.py @@ -16,7 +16,7 @@ def get_rw(exprs): a = ExprId('eax') b = ExprMem(ExprId('ebx'), 32) -exprs = add(('u32', 'u32'), a, b) +exprs = add(ia32info(), a, b) o_r, o_w = get_rw(exprs) # read ID print 'r:', [str(x) for x in o_r] diff --git a/miasm/arch/ia32_sem.py b/miasm/arch/ia32_sem.py index bac0a90c..af73c359 100644 --- a/miasm/arch/ia32_sem.py +++ b/miasm/arch/ia32_sem.py @@ -390,6 +390,12 @@ tab_afs_int ={x86_afs.u08:uint8, x86_afs.u16:uint16, x86_afs.u32:uint32, } + +class ia32info: + opmode = "u32" + admode = "u32" + # offset + """ http://www.emulators.com/docs/nx11_flags.htm diff --git a/miasm/expression/expression_eval_abstract.py b/miasm/expression/expression_eval_abstract.py index 27f13e3b..99c0ef8c 100644 --- a/miasm/expression/expression_eval_abstract.py +++ b/miasm/expression/expression_eval_abstract.py @@ -604,8 +604,8 @@ class eval_abs: out.append((ee, off_base, off_base+ee.get_size())) off_base += ee.get_size() else: - m = min(a.get_size()+off*8, x.get_size()) - ee = ExprSlice(self.pool[x], 0, m) + m = min(a.get_size()-off*8, x.get_size()) + ee = ExprSlice(self.pool[x], -off*8, m) ee = expr_simp(ee) out.append((ee, off_base, off_base+ee.get_size())) off_base += ee.get_size() |