about summary refs log tree commit diff stats
path: root/miasm2/jitter/loader
diff options
context:
space:
mode:
Diffstat (limited to 'miasm2/jitter/loader')
-rw-r--r--miasm2/jitter/loader/elf.py6
-rw-r--r--miasm2/jitter/loader/pe.py12
2 files changed, 11 insertions, 7 deletions
diff --git a/miasm2/jitter/loader/elf.py b/miasm2/jitter/loader/elf.py
index 08df632a..db0f1cb7 100644
--- a/miasm2/jitter/loader/elf.py
+++ b/miasm2/jitter/loader/elf.py
@@ -47,7 +47,7 @@ def preload_elf(vm, e, runtime_lib, patch_vm_imp=True):
     return runtime_lib, dyn_funcs
 
 
-def vm_load_elf(vm, fdata, **kargs):
+def vm_load_elf(vm, fdata, name="", **kargs):
     """
     Very dirty elf loader
     TODO XXX: implement real loader
@@ -56,6 +56,7 @@ def vm_load_elf(vm, fdata, **kargs):
     e = elf_init.ELF(fdata, **kargs)
     i = interval()
     all_data = {}
+
     for p in e.ph.phlist:
         if p.ph.type != elf_csts.PT_LOAD:
             continue
@@ -72,7 +73,8 @@ def vm_load_elf(vm, fdata, **kargs):
         i += [(a_addr, b_addr - 2)]
     for a, b in i.intervals:
         # print hex(a), hex(b)
-        vm.add_memory_page(a, PAGE_READ | PAGE_WRITE, "\x00" * (b + 2 - a))
+        vm.add_memory_page(a, PAGE_READ | PAGE_WRITE, "\x00" * (b + 2 - a),
+                           repr(name))
 
     for r_vaddr, data in all_data.items():
         vm.set_mem(r_vaddr, data)
diff --git a/miasm2/jitter/loader/pe.py b/miasm2/jitter/loader/pe.py
index 1d33f9b8..2d80c8df 100644
--- a/miasm2/jitter/loader/pe.py
+++ b/miasm2/jitter/loader/pe.py
@@ -101,7 +101,7 @@ def get_export_name_addr_list(e):
     return out
 
 
-def vm_load_pe(vm, fdata, align_s=True, load_hdr=True, **kargs):
+def vm_load_pe(vm, fdata, align_s=True, load_hdr=True, name="", **kargs):
     """Load a PE in memory (@vm) from a data buffer @fdata
     @vm: VmMngr instance
     @fdata: data buffer to parse
@@ -136,7 +136,7 @@ def vm_load_pe(vm, fdata, align_s=True, load_hdr=True, **kargs):
             pe_hdr = pe.content[:hdr_len] + max(
                 0, (min_len - hdr_len)) * "\x00"
             vm.add_memory_page(pe.NThdr.ImageBase, PAGE_READ | PAGE_WRITE,
-                               pe_hdr)
+                               pe_hdr, "%r: PE Header" % name)
 
         # Align sections size
         if align_s:
@@ -160,7 +160,8 @@ def vm_load_pe(vm, fdata, align_s=True, load_hdr=True, **kargs):
             attrib = PAGE_READ
             if section.flags & 0x80000000:
                 attrib |= PAGE_WRITE
-            vm.add_memory_page(pe.rva2virt(section.addr), attrib, data)
+            vm.add_memory_page(pe.rva2virt(section.addr), attrib, data,
+                               "%r: %r" % (name, section.name))
 
         return pe
 
@@ -217,7 +218,7 @@ def vm_load_pe_lib(vm, fname_in, libs, lib_path_base, **kargs):
 
     fname = os.path.join(lib_path_base, fname_in)
     with open(fname) as fstream:
-        pe = vm_load_pe(vm, fstream.read(), **kargs)
+        pe = vm_load_pe(vm, fstream.read(), name=fname_in, **kargs)
     libs.add_export_lib(pe, fname_in)
     return pe
 
@@ -484,7 +485,8 @@ def vm_load_pe_and_dependencies(vm, fname, name2module, runtime_lib,
             try:
                 with open(fname) as fstream:
                     log.info('Loading module name %r', fname)
-                    pe_obj = vm_load_pe(vm, fstream.read(), **kwargs)
+                    pe_obj = vm_load_pe(
+                        vm, fstream.read(), name=fname, **kwargs)
             except IOError:
                 log.error('Cannot open %s' % fname)
                 name2module[name] = None