python memory scanner - is it ok to ask you guys about it?
Michael C <[email protected]> Mon, 28 Nov 2016 18:26:00 -0800
| Newsgroups | gmane.comp.python.ctypes |
|---|---|
| Message-ID | <CANyKM1gZ-kstG+O6j+7ZAL6pT9hH1pNoy41hQeTggAE-j4oTPw@mail.gmail.com> |
I have this code here I am working on. Right now it has 3 problems and then
I still don't know if it works:
what type of buffer should I create?
buff = ctypes.create_string_buffer(4) I am not sure what sort of buffer
ReadProcessMemory expect, and LPVOID, from MSDN,
https://msdn.microsoft.com/en-us/library/windows/desktop/ms680553(v=vs.85).aspx
doens't ring a bell for me.
2ndly,
what's the number I should use here?
addresses_list = range(????,????,???)
I am not sure how memory spaces are named, does each program get its own
memory space? So do I put down 99999999?
3rdly, I believe I configured unpack incorrectly, as I don't understand
what sort of parameters to give because I don't understand how the memory
works.
Basically my goal is to write a memory scanner so I'd better understand how
memories work.
import ctypes
from ctypes import wintypes as w
from struct import *
from time import *
import datetime
import sys
import time
PID = 15872
OpenProcess = ctypes.windll.kernel32.OpenProcess
OpenProcess.argtypes = [w.DWORD,w.BOOL,w.DWORD]
OpenProcess.restype = w.HANDLE
ReadProcessMemory = ctypes.windll.kernel32.ReadProcessMemory
ReadProcessMemory.argtypes = [w.HANDLE,w.LPCVOID,w.LPVOID,
ctypes.c_size_t,ctypes.POINTER(ctypes.c_size_t)]
ReadProcessMemory.restype = w.BOOL
PROCESS_QUERY_INFORMATION = 0x0400
PROCESS_VM_READ = 0x0010
ph = OpenProcess(PROCESS_QUERY_INFORMATION|PROCESS_VM_READ,False,int(PID))
#program handle
#this is a problem: what type of buffer should I create?
buff = ctypes.create_string_buffer(4)
bufferSize = ctypes.sizeof(buff)
bytesRead = ctypes.c_size_t(bufferSize)
# what's the number I should use here?
#addresses_list = range(0x99999999999)
address = 0x4000000
addresses_list = range(address,0x9000000,0x4)
for i in addresses_list:
ReadProcessMemory(ph, ctypes.c_void_p(i), buff, bufferSize,
ctypes.byref(bytesRead))
# I am uncertain how to configure unpack
print(buff)
value = unpack('I', buff)[0]
if value == int(64953):
print(i)
------------------------------------------------------------------------------
_______________________________________________
ctypes-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ctypes-users