Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on May 31st, 2012  |  syntax: None  |  size: 4.29 KB  |  hits: 14  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. #include <Pointer.au3>
  2. #include <WinAPI.au3>
  3.  
  4. $pid = ProcessExists("sro_client.exe")
  5.  
  6. Global $memory = _MemoryOpen($pid)
  7.  
  8. If @error Then
  9.         If @error = 1 Then
  10.                 MsgBox(0, "Error", "Invalid process id.")
  11.                 Exit
  12.         ElseIf @error = 2 Then
  13.                 MsgBox(0, "Error", "Failed to open kernel32.dll.")
  14.                 Exit
  15.         ElseIf @error = 3 Then
  16.                 MsgBox(0, "Error", "Failed to open the specified process.")
  17.                 Exit
  18.         EndIf
  19. EndIf
  20.  
  21. $ProcessBaseAdress = _ProcessGetModuleBase($pid, "sro_client.exe")
  22. $StaticOffset = 0x00D7695C
  23. Global $offsets[5] = [0x6E4, 0x7C0, 0x3A0, 0, 0x8C]
  24. Global $base = $ProcessBaseAdress + $StaticOffset
  25.  
  26. Func ReadCurrentPlus()
  27.  
  28. $nextaddress = _MemoryRead($base, $memory)
  29.  
  30. For $i = 0 To 4
  31.         $newhex = Hex($nextaddress + $offsets[$i])
  32.         Do
  33.                 $newhex = StringTrimLeft($newhex,1)
  34.         Until StringLen($newhex) = 8
  35.         $nextaddress = _MemoryRead("0x" & $newhex, $memory)
  36. Next
  37.  
  38. Return $nextaddress
  39.  
  40. EndFunc
  41.  
  42. MsgBox(0, "", "Your current item in Invenory Slot 1 is +" & ReadCurrentPlus())
  43.  
  44. Func _ProcessGetModuleBase($ivPID, $svModuleName)
  45.     $ivPID = ProcessExists($ivPID)
  46.     If Not $ivPID Then Return(SetError(1, 0, 0)); Process does not exist
  47.  
  48.     Local Const $TH32CS_SNAPMODULE = 0x00000008
  49.     Local Const $sMODULEENTRY32Struct = "dword Size;" & _
  50.                             "dword 32ModuleID;" & _
  51.                             "dword 32ProcessID;" & _
  52.                             "dword GlblcntUsage;" & _
  53.                             "dword ProccntUsage;" & _
  54.                             "ptr modBaseAddr;" & _
  55.                             "dword modBaseSize;" & _
  56.                             "hwnd hModule;" & _
  57.                             "char Module[255];" & _
  58.                             "char ExePath[260]"
  59.  
  60.     Local $hvSnapShot = DllCall("Kernel32.dll", "hwnd", "CreateToolhelp32Snapshot", "dword", $TH32CS_SNAPMODULE, "dword", $ivPID)
  61.     If Not $hvSnapShot[0] Then Return(SetError(2, 0, 0)); Could not create snapshot?
  62.  
  63.     Local $stMODULEENTRY32 = DllStructCreate($sMODULEENTRY32Struct)
  64.     DllStructSetData($stMODULEENTRY32, "Size", DllStructGetSize($stMODULEENTRY32))
  65.  
  66.     Local $ivState = DllCall("Kernel32.dll", "int", "Module32First", "hwnd", $hvSnapShot[0], "long_ptr", DllStructGetPtr($stMODULEENTRY32))
  67.     If Not $ivState[0] Then Return(SetError(3, _WinAPI_CloseHandle($hvSnapShot[0]), 0)); Could not enumerate first module in list?
  68.     Local $ivRet = 0
  69.     Local $svModule
  70.  
  71.     Do
  72.         $ivRet = DllStructGetData($stMODULEENTRY32, "modBaseAddr")
  73.         $svModule = DllStructGetData($stMODULEENTRY32, "Module")
  74.         If $svModule = $svModuleName Then ExitLoop
  75.         $ivState = DllCall("Kernel32.dll", "int", "Module32Next", "hwnd", $hvSnapShot[0], "long_ptr", DllStructGetPtr($stMODULEENTRY32))
  76.         Sleep(1)
  77.     Until Not $ivState[0]
  78.  
  79.     _WinAPI_CloseHandle($hvSnapShot[0])
  80.  
  81.     Return $ivRet
  82. EndFunc
  83.  
  84. Func _ReadProcessPointers(ByRef $hvProcess, $ivBaseAddress, $avOffsets)
  85.     If Not IsArray($avOffsets) Then Return _ReadProcessMemory($hvProcess, $ivBaseAddress, "ptr")
  86.     $ivBaseAddress = _ReadProcessMemory($hvProcess, $ivBaseAddress, "ptr")
  87.  
  88.     For $i = 0 To UBound($avOffsets)-1
  89.         $ivBaseAddress = _ReadProcessMemory($hvProcess, $ivBaseAddress+$avOffsets[$i], "ptr")
  90.     Next
  91.     Return $ivBaseAddress
  92. EndFunc
  93.  
  94. Func _ReadProcessMemory(ByRef $hvProcess, $ivAddress, $svDataType = "byte")
  95.     Local $stvRead = DllStructCreate("int Read")
  96.     Local $stvData = DllStructCreate($svDataType)
  97.     Local $avResult = DllCall("Kernel32.dll", "int", "ReadProcessMemory", "int", $hvProcess, "int", $ivAddress, "ptr", DllStructGetPtr($stvData), "int", DllStructGetSize($stvData), "ptr", DllStructGetPtr($stvRead))
  98.     Return(SetError(Not $avResult[0], DllStructGetData($stvRead, "Read"), DllStructGetData($stvData, 1)))
  99. EndFunc
  100.  
  101. Func _WriteProcessMemory(ByRef $hvProcess, $ivAddress, $bvData, $svDataType = "byte")
  102.     Local $stvWritten = DllStructCreate("int Written")
  103.     Local $stvData = DllStructCreate($svDataType)
  104.     DllStructSetData($stvData, 1, $bvData)
  105.     Local $avResult = DllCall("Kernel32.dll", "int", "WriteProcessMemory", "int", $hvProcess, "int", $ivAddress, "ptr", DllStructGetPtr($stvData), "int", DllStructGetSize($stvData), "int", DllStructGetPtr($stvWritten))
  106.     Return(SetError($avResult[0], 0, DllStructGetData($stvWritten, "Written")))
  107. EndFunc