Summary
I have published a new tool for dumping PE files in the target memory on Windows🎉
The tool name is pedumper. Here is a link for the tool.
https://github.com/owlinux1000/pedumper
Installation
You can easily install pedumper by pip.
pip install pedumper
How to use
pedumper is a very simple interface as follows. You have to pass an argument which is a PID of the target process.
If the tool can find a valid PE file, the file is saved on the disk. The filename is used by the memory address.
  
  
  How to create pedumper?
When I create this tool, I have to learn two things.
  
  
  1. ctypes
ctypes is a standard library of python. To use this library, we can execute Win32 API on Python like this.
def read_process_memory(hProcess: int, offset: int, size: ctypes.c_size_t) -> bytes:
    buf = ctypes.create_string_buffer(size)
    ctypes.windll.kernel32.ReadProcessMemory(
        ctypes.cast(hProcess, ctypes.c_void_p),
        ctypes.cast(offset, ctypes.c_void_p),
        ctypes.cast(buf, ctypes.c_wchar_p),
        size,
        None,
    )
2. Memory Basic Information of Windows
On Windows, a memory of the process is defined by MEMORY_BASIC_INFORMAION structure. Here is a definition from Microsoft Official document. I have learned some fileds of the structure through implementing pedumper.
typedef struct _MEMORY_BASIC_INFORMATION {
  PVOID  BaseAddress;
  PVOID  AllocationBase;
  DWORD  AllocationProtect;
  WORD   PartitionId;
  SIZE_T RegionSize;
  DWORD  State;
  DWORD  Protect;
  DWORD  Type;
} MEMORY_BASIC_INFORMATION, *PMEMORY_BASIC_INFORMATION;
Conclusion
I introduced pedumper created by myself. If you are interested in the tool, please use it and tell me feedback😄
 
 
              

 
    
Top comments (0)