Advertisement
Atheuz

Untitled

Aug 3rd, 2014 (edited)
269
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.02 KB | None | 0 0
  1. # -*- coding: utf-8 -*-
  2.  
  3. # Filename      main.py
  4.  
  5. import psutil
  6. from ctypes import *
  7. from ctypes.wintypes import *
  8. from struct import *
  9.  
  10. OpenProcess = windll.kernel32.OpenProcess
  11. ReadProcessMemory = windll.kernel32.ReadProcessMemory
  12. GetLastError = windll.kernel32.GetLastError
  13. CloseHandle = windll.kernel32.CloseHandle
  14. PROCESS_ALL_ACCESS = 0x1F0FFF
  15.  
  16. class TrackManiaTimer(object):
  17.     def __init__(self):
  18.         self.pid = None
  19.         self.process_name = "ManiaPlanet.exe"
  20.         self.offsets = [0x37C, 0x3C, None]
  21.         self.time = None
  22.         self.timelast = None
  23.         self.address = 0x0163B4D8
  24.    
  25.     def get_pid(self):
  26.         for proc in psutil.process_iter():
  27.             try:
  28.                 if (proc.name() == self.process_name):
  29.                     self.pid = proc.pid
  30.             except (PermissionError, psutil.AccessDenied):
  31.                 pass
  32.                
  33.     def read_process_memory(self):
  34.         processHandle = OpenProcess(PROCESS_ALL_ACCESS, False, self.pid)
  35.         length = 4
  36.         data = ""
  37.         read_buff = create_string_buffer(length)
  38.         count = c_ulong(0)
  39.         current_address = self.address
  40.         for offset in self.offsets:
  41.             if not ReadProcessMemory(processHandle, current_address, cast(read_buff, LPVOID), length, byref(count)):
  42.                 #print("[*] Error Code: 0x%08x" % GetLastError())
  43.                 #print(read_buff.raw)
  44.                 return -1
  45.             else:
  46.                 val = read_buff.value
  47.                 result = int.from_bytes(val, byteorder='little')
  48.                 if(offset != None):
  49.                     current_address = result+offset
  50.                 else:
  51.                     return result
  52.            
  53.    
  54.  
  55. def main():
  56.     t = TrackManiaTimer()
  57.     t.get_pid()
  58.     old_timer = 0
  59.     while(True):
  60.         new_timer = t.read_process_memory()
  61.         if new_timer != old_timer:
  62.             print(new_timer)
  63.             old_timer = new_timer
  64.        
  65.    
  66.    
  67. if __name__ == '__main__':
  68.     main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement