diff options
| -rw-r--r-- | example/asm/shellcode.py | 9 | ||||
| -rw-r--r-- | example/jitter/unpack_upx.py | 2 | ||||
| -rw-r--r-- | miasm2/core/bin_stream.py | 6 | ||||
| -rw-r--r-- | miasm2/jitter/loader/elf.py | 6 | ||||
| -rw-r--r-- | miasm2/jitter/loader/pe.py | 2 |
5 files changed, 15 insertions, 10 deletions
diff --git a/example/asm/shellcode.py b/example/asm/shellcode.py index 253386b5..ce84238a 100644 --- a/example/asm/shellcode.py +++ b/example/asm/shellcode.py @@ -96,8 +96,13 @@ if args.encrypt: patches = new_patches print patches -for offset, raw in patches.items(): - virt[offset] = raw +if isinstance(virt, StrPatchwork): + for offset, raw in patches.items(): + virt[offset] = raw +else: + for offset, raw in patches.items(): + virt.set(offset, raw) + # Produce output open(args.output, 'wb').write(str(output)) diff --git a/example/jitter/unpack_upx.py b/example/jitter/unpack_upx.py index 58507506..c27ecdd8 100644 --- a/example/jitter/unpack_upx.py +++ b/example/jitter/unpack_upx.py @@ -86,7 +86,7 @@ def update_binary(jitter): logging.info('updating binary') for s in sb.pe.SHList: sdata = sb.jitter.vm.get_mem(sb.pe.rva2virt(s.addr), s.rawsize) - sb.pe.virt[sb.pe.rva2virt(s.addr)] = sdata + sb.pe.rva.set(s.addr, sdata) # Stop execution jitter.run = False diff --git a/miasm2/core/bin_stream.py b/miasm2/core/bin_stream.py index 6e158061..e02523d8 100644 --- a/miasm2/core/bin_stream.py +++ b/miasm2/core/bin_stream.py @@ -142,13 +142,13 @@ class bin_stream_container(bin_stream): if self.offset + l > self.l: raise IOError("not enough bytes") self.offset += l - return self.bin(self.offset - l, self.offset) + return self.bin.get(self.offset - l, self.offset) def getbytes(self, start, l=1): - return self.bin(start, start + l) + return self.bin.get(start, start + l) def __str__(self): - out = self.bin(self.offset, self.l) + out = self.bin.get(self.offset, self.offset + self.l) return out def setoffset(self, val): diff --git a/miasm2/jitter/loader/elf.py b/miasm2/jitter/loader/elf.py index b3946000..12670977 100644 --- a/miasm2/jitter/loader/elf.py +++ b/miasm2/jitter/loader/elf.py @@ -57,10 +57,10 @@ def vm_load_elf(vm, fdata, **kargs): i = interval() all_data = {} for p in e.ph.phlist: - if p.ph.type != 1: + if p.ph.type != elf_csts.PT_LOAD: continue - log.debug('0x%x 0x%x 0x%x 0x%x', p.ph.vaddr, p.ph.memsz, p.ph.offset, - p.ph.filesz) + log.debug('0x%x 0x%x 0x%x 0x%x 0x%x', p.ph.vaddr, p.ph.memsz, p.ph.offset, + p.ph.filesz, p.ph.type) data_o = e._content[p.ph.offset:p.ph.offset + p.ph.filesz] addr_o = p.ph.vaddr a_addr = addr_o & ~0xFFF diff --git a/miasm2/jitter/loader/pe.py b/miasm2/jitter/loader/pe.py index 32d92164..168a5e7d 100644 --- a/miasm2/jitter/loader/pe.py +++ b/miasm2/jitter/loader/pe.py @@ -70,7 +70,7 @@ def is_redirected_export(e, ad): # test is ad points to code or dll name out = '' for i in xrange(0x200): - c = e.virt(ad + i) + c = e.virt.get(ad + i) if c == "\x00": break out += c |