miasm
Reverse engineering framework
|
Classes | |
class | A |
class | Anon |
class | B |
class | BitStruct |
class | ContStruct |
class | InStruct |
class | MyStruct |
class | MyStruct2 |
class | OtherStruct |
class | UnhealthyIdeas |
class | UniStruct |
Variables | |
loc_db = LocationDB() | |
jitter = Machine("x86_32").jitter(loc_db, "python") | |
int | addr = 0x1000 |
int | size = 0x1000 |
int | addr_str = 0x1100 |
int | addr_str2 = 0x1200 |
int | addr_str3 = 0x1300 |
mstruct = MyStruct(jitter.vm, addr) | |
Creation Use manual allocation with explicit addr for the first example. More... | |
num | |
Fields are read from the virtual memory. More... | |
memval = struct.unpack("I", jitter.vm.get_mem(mstruct.get_addr(), 4))[0] | |
my_heap = heap() | |
Memset sets the whole structure. More... | |
other = OtherStruct(jitter.vm) | |
Setup for Ptr tests the addr field can now be omitted since allocator is set. More... | |
foo | |
val | |
Basic usage. More... | |
other2 = OtherStruct(jitter.vm) | |
Deref assignment. More... | |
deref | |
alloc_addr | |
Same stuff for Ptr to MemField. More... | |
i | |
memstr = Str().lval(jitter.vm, addr_str) | |
Basic tests. More... | |
memstr2 = Str().lval(jitter.vm, addr_str2) | |
Other address, same value, same encoding. More... | |
memstr3 = Str("utf16").lval(jitter.vm, addr_str3) | |
Same value, other encoding. More... | |
memarray = Array(Num("I")).lval(jitter.vm, alloc_addr) | |
s = bytes(memarray) | |
memsarray = Array(Num("I"), 10).lval(jitter.vm) | |
Slice assignment. More... | |
ms2 = MyStruct2(jitter.vm) | |
s2 | |
RawStruct. More... | |
array2 = Array(Num("B"), 10).lval(jitter.vm) | |
Field assignment (MemSizedArray) More... | |
cont = ContStruct(jitter.vm) | |
one | |
bar | |
last | |
uni = UniStruct(jitter.vm) | |
bit = BitStruct(jitter.vm) | |
f1_1 | |
f2_5 | |
f3_8 | |
flags_num | |
int | p_size = Ptr("I", Void()).size |
ideas = UnhealthyIdeas(jitter.vm) | |
pself | |
ppself | |
pppself | |
a = A(jitter.vm) | |
b = B(jitter.vm) | |
MemInt = Num("I").lval | |
MemShort = Num("H").lval | |
dword = MemInt(jitter.vm) | |
MemPtrVoid = Ptr("I", Void()).lval | |
p = MemPtrVoid(jitter.vm) | |
anon = Anon(jitter.vm) | |
b2 | |
c1 | |
c2 | |
d | |
arr_t = Array(Num("H")) | |
test_types.a = A(jitter.vm) |
int test_types.addr = 0x1000 |
int test_types.addr_str = 0x1100 |
int test_types.addr_str2 = 0x1200 |
int test_types.addr_str3 = 0x1300 |
test_types.alloc_addr |
test_types.anon = Anon(jitter.vm) |
test_types.b = B(jitter.vm) |
test_types.b2 |
test_types.bar |
test_types.bit = BitStruct(jitter.vm) |
test_types.c1 |
test_types.c2 |
test_types.cont = ContStruct(jitter.vm) |
test_types.d |
test_types.deref |
test_types.dword = MemInt(jitter.vm) |
test_types.f1_1 |
test_types.f2_5 |
test_types.f3_8 |
test_types.flags_num |
test_types.foo |
test_types.i |
test_types.ideas = UnhealthyIdeas(jitter.vm) |
test_types.last |
test_types.loc_db = LocationDB() |
test_types.memarray = Array(Num("I")).lval(jitter.vm, alloc_addr) |
test_types.MemInt = Num("I").lval |
test_types.MemPtrVoid = Ptr("I", Void()).lval |
test_types.MemShort = Num("H").lval |
test_types.memval = struct.unpack("I", jitter.vm.get_mem(mstruct.get_addr(), 4))[0] |
test_types.ms2 = MyStruct2(jitter.vm) |
Creation Use manual allocation with explicit addr for the first example.
test_types.my_heap = heap() |
Memset sets the whole structure.
test_types.num |
Fields are read from the virtual memory.
Field assignment modifies virtual memory
test_types.one |
test_types.other = OtherStruct(jitter.vm) |
Setup for Ptr tests the addr field can now be omitted since allocator is set.
test_types.other2 = OtherStruct(jitter.vm) |
Deref assignment.
test_types.p = MemPtrVoid(jitter.vm) |
test_types.pppself |
test_types.ppself |
test_types.pself |
test_types.s = bytes(memarray) |
test_types.s2 |
RawStruct.
Array Basic checks
Subscript assignment
Field assignment (list)
int test_types.size = 0x1000 |
test_types.uni = UniStruct(jitter.vm) |
test_types.val |
Basic usage.
Ptr(Str()) manipulations.