Guest User

Untitled

a guest
May 31st, 2012
45
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.29 KB | None | 0 0
  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
Advertisement
Add Comment
Please, Sign In to add comment