diff options
| author | Florent Monjalet <florent.monjalet@gmail.com> | 2015-11-26 14:29:36 +0100 |
|---|---|---|
| committer | Florent Monjalet <florent.monjalet@gmail.com> | 2016-01-18 14:02:31 +0100 |
| commit | 392a8eea91d6114c0f3480118354bf7f95ed9096 (patch) | |
| tree | 2fff684f5b542ff8833ee160bfeb3fde33291698 | |
| parent | 955595f40dfa7a8bb246050dd3bbb5a4ecb67f0e (diff) | |
| download | miasm-392a8eea91d6114c0f3480118354bf7f95ed9096.tar.gz miasm-392a8eea91d6114c0f3480118354bf7f95ed9096.zip | |
MemStruct: Struct -> RawStruct
| -rw-r--r-- | miasm2/analysis/mem.py | 6 | ||||
| -rw-r--r-- | test/analysis/mem.py | 14 |
2 files changed, 10 insertions, 10 deletions
diff --git a/miasm2/analysis/mem.py b/miasm2/analysis/mem.py index dbfd335a..ef41366b 100644 --- a/miasm2/analysis/mem.py +++ b/miasm2/analysis/mem.py @@ -41,7 +41,7 @@ MemStruct and define a list of (<field_name>, <field_definition>). Available MemField classes are: - Num: for number (float or int) handling - - Struct: abstraction over a simple struct pack/unpack + - RawStruct: abstraction over a simple struct pack/unpack - Ptr: a pointer to another MemStruct instance - Inline: include another MemStruct as a field (equivalent to having a struct field into another struct in C) @@ -240,7 +240,7 @@ class MemField(object): return not self == other -class Struct(MemField): +class RawStruct(MemField): """Dumb struct.pack/unpack field. Mainly used to factorize code. Value is a tuple corresponding to the struct @fmt passed to the constructor. @@ -268,7 +268,7 @@ class Struct(MemField): return hash((self.__class__, self._fmt)) -class Num(Struct): +class Num(RawStruct): """Represents a number (integer or float). The number is encoded with a struct-style format which must represent only one value. diff --git a/test/analysis/mem.py b/test/analysis/mem.py index e9c5d60b..bb5ffbe8 100644 --- a/test/analysis/mem.py +++ b/test/analysis/mem.py @@ -7,7 +7,7 @@ import struct from miasm2.analysis.machine import Machine from miasm2.analysis.mem import MemStruct, Num, Ptr, MemStr, MemArray,\ MemSizedArray, Array, mem_array_type,\ - mem_sized_array_type, Struct, Inline, mem,\ + mem_sized_array_type, RawStruct, Inline, mem,\ Union, BitField, MemSelf, MemVoid, Bits, \ set_allocator from miasm2.jitter.csts import PAGE_READ, PAGE_WRITE @@ -211,10 +211,10 @@ assert memsarray[0] == 2 assert str(memsarray) == '\x02\x00\x00\x00' + '\xcc' * (4 * 9) -# Atypical fields (Struct and Array) +# Atypical fields (RawStruct and Array) class MyStruct2(MemStruct): fields = [ - ("s1", Struct("=BI")), + ("s1", RawStruct("=BI")), ("s2", Array(Num("B"), 10)), ] @@ -222,7 +222,7 @@ ms2 = MyStruct2(jitter.vm) ms2.memset('\xaa') assert len(ms2) == 15 -## Struct +## RawStruct assert len(ms2.s1) == 2 assert ms2.s1[0] == 0xaa assert ms2.s1[1] == 0xaaaaaaaa @@ -355,7 +355,7 @@ assert bit.f4_1 == 1 # Unhealthy ideas class UnhealthyIdeas(MemStruct): fields = [ - ("pastruct", Ptr("I", MemArray, Struct("=Bf"))), + ("pastruct", Ptr("I", MemArray, RawStruct("=Bf"))), ("apstr", Array(Ptr("I", MemStr), 10)), ("pself", Ptr("I", MemSelf)), ("apself", Array(Ptr("I", MemSelf), 2)), @@ -431,8 +431,8 @@ assert p.deref_value.cast(MyStruct) == mstruct assert p.cast(MemPtrMyStruct).deref_value == mstruct # Field equality tests -assert Struct("IH") == Struct("IH") -assert Struct("I") != Struct("IH") +assert RawStruct("IH") == RawStruct("IH") +assert RawStruct("I") != RawStruct("IH") assert Num("I") == Num("I") assert Num(">I") != Num("<I") assert Ptr("I", MyStruct) == Ptr("I", MyStruct) |