update:

I should have put down buffer = ctypes.c_double() instead of buffer =
ctypes.c_double.

Sorry all

On Sat, Oct 7, 2017 at 8:18 PM, Michael C <mysecretrobotfact...@gmail.com>
wrote:

> I am following some examples online such as this one:
> https://social.msdn.microsoft.com/Forums/vstudio/en-US/
> ce0cc398-2b96-4688-b8a4-b5f4c9ebc064/memory-searcher-
> with-virtualqueryex-and-readprocessmemory?forum=vclanguage
>
>
> i think I got most of it right, so this following part is what I would
> like you to look at:
>
> DWORD read = 0;
> LPVOID buffer = 0
>
> (ReadProcessMemory(hackProcess, (void*)start, &buffer, sizeof(int), &read)
>
>
> So, what's the Python equivalent statements for sizeof(int) ?
>
>
>
>
>
>
> On Sat, Oct 7, 2017 at 7:38 PM, Michael C <mysecretrobotfact...@gmail.com>
> wrote:
>
>> Oh I am trying to write my own memory scanner, because I thought the
>> Cheat Engine is pretty neat and I am just trying make one for myself.
>>
>> Onto the problem, I think what happens with Readprocessmemory is that
>>
>> BOOL WINAPI ReadProcessMemory(
>>   _In_  HANDLE  hProcess,
>>   _In_  LPCVOID lpBaseAddress,  _Out_ LPVOID  lpBuffer,
>>   _In_  SIZE_T  nSize,
>>   _Out_ SIZE_T  *lpNumberOfBytesRead
>> );
>>
>>
>> for LPVOID lpbuffer, it should be a
>>
>> buffer = ctypes.c_double
>>
>> because i am trying to search for a double.
>> However, the interpreter gives me this:
>>
>> ReadProcessMemory(Process, current_address, ctypes.byref(buffer), \
>> TypeError: byref() argument must be a ctypes instance, not
>> '_ctypes.PyCSimpleType'
>>
>>
>> so I am using
>> buffer = ctypes.c_uint()
>> instead. It returns things like   "c_ulong(2006549856)" , though.
>>
>> 2nd, I believe  _In_  SIZE_T  nSize, means I tell the interpreter to
>> read that much
>> data, which means I can use this parameter to get doubles, which is what
>> I want!
>>
>> However, I am using
>>
>> ctypes.sizeof(buffer)
>>
>> for it, so, I need either to change my buffer to a double, or to tell
>> this parameter to  search for
>> doubles somehow.
>>
>>
>> Am I on the right track?
>>
>>
>> Thanks!
>>
>>
>>
>> On Sat, Oct 7, 2017 at 6:58 PM, Mats Wichmann <m...@wichmann.us> wrote:
>>
>>> it might help if you mention what you are trying to do. if it is
>>> forensics, there a bunch of python tools in that area. your problem may
>>> already have solutions you could use.
>>>
>>> On October 7, 2017 3:00:25 PM MDT, Michael C <
>>> mysecretrobotfact...@gmail.com> wrote:
>>> >Hi all:
>>> >
>>> >I am working on a memory scanner, and the source code and output is as
>>> >following:
>>> >
>>> >Now, I know why my buffer from read process memory looks like values
>>> >such
>>> >as "67108864" ; it's because I read into the buffer entire chunk of
>>> >memory
>>> >at a time, because I fed read process memory this:  "mbi.RegionSize"
>>> >
>>> >Now, how do I read for values such as doubles?
>>> >I am guessing I need to use a for loop to scan for small bits of memory
>>> >chunk
>>> >at a time.
>>> >
>>> >Is there a way to do it?
>>> >
>>> >Thanks!
>>> >
>>> >
>>> >
>>> >
>>> >>output starts
>>> >
>>> >buffer is:  c_ulong(0)
>>> >buffer is:  c_ulong(0)
>>> >buffer is:  c_ulong(6385664)
>>> >buffer is:  c_ulong(67108864)
>>> >buffer is:  c_ulong(7761920)
>>> >buffer is:  c_ulong(7798784)
>>> >buffer is:  c_ulong(7872512)
>>> >buffer is:  c_ulong(8007680)
>>> >buffer is:  c_ulong(8044544)
>>> >buffer is:  c_ulong(8069120)
>>> >buffer is:  c_ulong(8216576)
>>> >buffer is:  c_ulong(0)
>>> >buffer is:  c_ulong(0)
>>> >buffer is:  c_ulong(3976)
>>> >buffer is:  c_ulong(0)
>>> >buffer is:  c_ulong(0)
>>> >buffer is:  c_ulong(1318755581)
>>> >buffer is:  c_ulong(0)
>>> >buffer is:  c_ulong(0)
>>> >buffer is:  c_ulong(0)
>>> >buffer is:  c_ulong(0)
>>> >
>>> >> code starts
>>> >
>>> >buffer = ctypes.c_uint()
>>> >nread = SIZE_T()
>>> >
>>> >start = ctypes.c_void_p(mbi.BaseAddress)
>>> >
>>> >ReadProcessMemory = Kernel32.ReadProcessMemory
>>> >
>>> >MEM_COMMIT = 0x00001000;
>>> >PAGE_READWRITE = 0x04;
>>> >
>>> >current_address = sysinfo.lpMinimumApplicationAddress
>>> >end_address = sysinfo.lpMaximumApplicationAddress
>>> >
>>> >while current_address < end_address:
>>> >    Kernel32.VirtualQueryEx(Process, \
>>> >    current_address, ctypes.byref(mbi),ctypes.sizeof(mbi))
>>> >
>>> >    if mbi.Protect == PAGE_READWRITE and mbi.State == MEM_COMMIT :
>>> >
>>> >        if ReadProcessMemory(Process, current_address,
>>> >ctypes.byref(buffer), \
>>> >                           ctypes.sizeof(buffer), ctypes.byref(nread)):
>>> >                print('buffer is: ',buffer)
>>> >        else:
>>> >                raise ctypes.WinError(ctypes.get_last_error())
>>> >
>>> >    current_address += mbi.RegionSize
>>> >_______________________________________________
>>> >Tutor maillist  -  Tutor@python.org
>>> >To unsubscribe or change subscription options:
>>> >https://mail.python.org/mailman/listinfo/tutor
>>>
>>> --
>>> Sent from my Android device with K-9 Mail. Please excuse my brevity.
>>> _______________________________________________
>>> Tutor maillist  -  Tutor@python.org
>>> To unsubscribe or change subscription options:
>>> https://mail.python.org/mailman/listinfo/tutor
>>>
>>
>>
>
_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor

Reply via email to