|
You last visited: Today at 14:37
Advertisement
Einfache Hp Adresse+Pointer finden und anwenden
Discussion on Einfache Hp Adresse+Pointer finden und anwenden within the General Coding forum part of the Coders Den category.
08/23/2011, 21:12
|
#1
|
elite*gold: 25
Join Date: Jun 2010
Posts: 1,076
Received Thanks: 290
|
Einfache Hp Adresse+Pointer finden und anwenden
Hey Leute 
Ich hab vor mich mal ein bischen mit Memory und diesem ganzen Kram auseinanderzusetzen^^
Also einfach Adressen finden wie z.B. die der Hp oder so kann ich schon
(Glaub ich  )
Nur i. wie will das mit den Pointern nicht hinhauen.
Ich habe bereits mehrere Tutorials gelesen und angewendet bzw.
es versucht, nur i. wie will dasn ich so richtig...
Ich "arbeite" mit CE naja hier ein Screen ... ich bin mir sicher das
ihr mir helfen könnt da es eig. ein unnötiges Problem ist und meine Frage(n)
total nooblike sind ^^ naja mir wayne 
Achja ^^ Ihr müsst mir nicht unbedingt die Lösung verraten
am besten wäre wenn ihr mir einen Weg erklährt wie ich mein Problem selbst lösen kann.Wäre ja doof wenn ich in 3 Tagen wieder das selbe Problem habe..
|
|
|
08/23/2011, 22:34
|
#2
|
elite*gold: 0
Join Date: Jan 2010
Posts: 360
Received Thanks: 249
|
ist der scan vollkommen durchgelaufen?
2 offsets sind meistens scheisse da das oft nicht statisch ist.
probier mal das game neu zu starten und die adressen dann neu zu reloaded, ob dir immernoch die hp angezeigt wird
|
|
|
08/23/2011, 23:22
|
#3
|
elite*gold: 0
Join Date: Jun 2011
Posts: 96
Received Thanks: 21
|
die adresse auf die du einen pointer erstellen möchtest, zeigt enthält doch schon den falschen wert...du musst dir erstmal eine richtige adresse raussuchen und auf diese dann einen pointer erstellen, entweder über den pointer scanner oder manuell mit "what writes to this adress".
|
|
|
08/24/2011, 06:46
|
#4
|
elite*gold: 25
Join Date: Jun 2010
Posts: 1,076
Received Thanks: 290
|
Wieso enthält die Adresse den falschen Wert ?
Die Adressen haben alle immer genau die HP angezeigt.
Dann hab ich mir halt eine ausgesucht und dann den pointerscanner benutzt
€: Die Adressen zeigen nach Neustart den Wert 0 an
|
|
|
08/24/2011, 10:54
|
#5
|
elite*gold: 0
Join Date: Jan 2010
Posts: 360
Received Thanks: 249
|
du musst versuchen entweder einen statischen pointer zu finden oder einen statischen pointer mit nur einem offset sonst wird das wahrscheinlich nichts ;-)
falls möglich lass den pointerscan noch weitere adressen anzeigen.
|
|
|
08/24/2011, 17:10
|
#6
|
elite*gold: 25
Join Date: Jun 2010
Posts: 1,076
Received Thanks: 290
|
Und wie kann ich diesen Pointer wenn ich ihn gefunden habe in AutoIt umsetzen ?
Ich habe nämlich keine Tutorials gefunden die dies mit "Pointerscan" erklähren :/
Und wenn dann hab ich es nicht wirklich verstanden...
|
|
|
08/24/2011, 17:39
|
#7
|
elite*gold: 0
Join Date: Jan 2010
Posts: 360
Received Thanks: 249
|
|
|
|
08/24/2011, 17:50
|
#8
|
elite*gold: 25
Join Date: Jun 2010
Posts: 1,076
Received Thanks: 290
|
?
Sorry aber ich meinte damit eig. eher
Was ich mit dem Offset und der gefundenen Adresse machen muss ...
Achja ich finde i. wie immern ur 2 Offsets :/
|
|
|
08/24/2011, 19:16
|
#9
|
elite*gold: 0
Join Date: Jan 2010
Posts: 360
Received Thanks: 249
|
naja wenn du einen pointer und ein offset hast dann kannst du so in autoit damit arbeiten.
bei zwei offsets funktioniert das meistens nicht
|
|
|
08/24/2011, 20:50
|
#10
|
elite*gold: 0
Join Date: Mar 2009
Posts: 2,317
Received Thanks: 1,255
|
Quote:
Originally Posted by ZeraPain
naja wenn du einen pointer und ein offset hast dann kannst du so in autoit damit arbeiten.
bei zwei offsets funktioniert das meistens nicht
|
kla funzt es..
hab grad keine zeit zum erklären, aber hier ist ma ein lc hack, den ich vor ein halbes jahr geschrieben hatte, kannst es mit den offsets ect mal anschauen.
PHP Code:
#include <Nomadmemory.au3> #include <ButtonConstants.au3> #include <EditConstants.au3> #include <GUIConstantsEx.au3> #include <StaticConstants.au3> #include <WindowsConstants.au3> #Region ### START Koda GUI section ### Form= $Form1 = GUICreate("Last Chaos Hack", 218, 318, 202, 231) $Label6 = GUICtrlCreateLabel("Speed Hack", 44, 8, 64, 17) $SpeedHackAktuell = GUICtrlCreateInput("", 17, 28, 53, 21) $SpeedHackNeu = GUICtrlCreateInput("12", 84, 28, 53, 21) $SpeedHackButton = GUICtrlCreateButton("change", 156, 28, 53, 21, $WS_GROUP) $Label5 = GUICtrlCreateLabel("Attack Speed", 40, 68, 69, 17) $AttachSpeedActuell = GUICtrlCreateInput("", 17, 88, 53, 21) $AttackSpeedNeu = GUICtrlCreateInput("2", 84, 88, 53, 21) $AttackSpeedButton = GUICtrlCreateButton("change", 156, 88, 53, 21, $WS_GROUP) $Label7 = GUICtrlCreateLabel("Range Hack", 40, 136, 65, 17) $RangeHackAktuell = GUICtrlCreateInput("", 17, 156, 53, 21) $RangeHackNeu = GUICtrlCreateInput("35", 84, 156, 53, 21) $RangeHackButton = GUICtrlCreateButton("change", 156, 156, 53, 21, $WS_GROUP) $Label8 = GUICtrlCreateLabel("Teleport Hack", 40, 196, 72, 17) $Labelx = GUICtrlCreateLabel("X:", 4, 220, 14, 17) $xActuell = GUICtrlCreateInput("", 17, 216, 53, 21) $xNeu = GUICtrlCreateInput("", 84, 216, 53, 21) $Labely = GUICtrlCreateLabel("Y:", 4, 252, 14, 17) $yActuell = GUICtrlCreateInput("", 17, 248, 53, 21) $yNeu = GUICtrlCreateInput("", 84, 248, 53, 21) $Labelz = GUICtrlCreateLabel("Z:", 4, 284, 14, 17) $zActuell = GUICtrlCreateInput("", 17, 280, 53, 21) $zNeu = GUICtrlCreateInput("", 84, 280, 53, 21) $TeleportButton = GUICtrlCreateButton("change", 156, 248, 53, 21, $WS_GROUP) $TeleportAktuellButton = GUICtrlCreateButton("Aktuelle posi", 150, 216, 66, 21, $WS_GROUP) GUISetState(@SW_SHOW) #EndRegion ### END Koda GUI section ###
WinWaitActive("[CLASS:Nksp]")
$Open = _MemoryOpen(ProcessExists("Nksp.exe")) If @error Then MsgBox(4096, "Fehler", "Das richtige Fenster konnte nicht gefunden werden")
$SpeedHackPointer = 0x1066C620 Global $SpeedHackOffset[2] = [0, 0xDD4] ;die 0 (null) muss immer überall als erstes hin
$attackspeedPointer = 0x1066C620 Global $attackspeedOffset[2] = [0, 0xDDC] ; 0, ...
$RangeHackPointer = 0x106507E8 Global $RangeHackOffset[2] = [0, 0x10934C] ; 0, ... $RangeHackPointer2 = 0x1066C620 Global $RangeHackOffset2[2] = [0, 0xDD8] ; 0, ...
$xyzPointer = 0x106507E8 Global $xOffset[5] = [0, 0x1C, 0x10, 0x4, 0x54] ; 0, ... Global $yOffset[5] = [0, 0x1C, 0x10, 0x4, 0x5C] ; 0, ... Global $zOffset[5] = [0, 0x1C, 0x10, 0x4, 0x58] ; 0, ...
While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $AttackSpeedButton AdlibRegister("_attackspeed") Case $TeleportAktuellButton GUICtrlSetData($xNeu, GUICtrlRead($xActuell)) GUICtrlSetData($yNeu, GUICtrlRead($yActuell)) GUICtrlSetData($zNeu, GUICtrlRead($zActuell)) Case $TeleportButton Sleep(200) AdlibRegister(_MemoryPointerWrite($xyzPointer, $Open, $xOffset, GUICtrlRead($xNeu), "float")) AdlibRegister(_MemoryPointerWrite($xyzPointer, $Open, $yOffset, GUICtrlRead($yNeu), "float")) AdlibRegister(_MemoryPointerWrite($xyzPointer, $Open, $zOffset, GUICtrlRead($zNeu), "float")) Case $SpeedHackButton AdlibRegister("_speedhack") Case $RangeHackButton AdlibRegister("_rangehack") EndSwitch $pAttackspeed = _MemoryPointerRead($attackspeedPointer, $Open, $attackspeedOffset) $pSpeedhack = _MemoryPointerRead($SpeedHackPointer, $Open, $SpeedHackOffset, "float") $pRangehack = _MemoryPointerRead($RangeHackPointer, $Open, $RangeHackOffset, "float") $pX = _MemoryPointerRead($xyzPointer, $Open, $xOffset, "float") $pY = _MemoryPointerRead($xyzPointer, $Open, $YOffset, "float") $pZ = _MemoryPointerRead($xyzPointer, $Open, $ZOffset, "float")
If $pAttackspeed[1] <> GUICtrlRead($AttachSpeedActuell) Then GUICtrlSetData($AttachSpeedActuell, $pAttackspeed[1]) If $pSpeedhack[1] <> GUICtrlRead($SpeedHackAktuell) Then GUICtrlSetData($SpeedHackAktuell, Round($pSpeedhack[1],1)) If $pRangehack[1] <> GUICtrlRead($RangeHackAktuell) Then GUICtrlSetData($RangeHackAktuell, Round($pRangehack[1],1)) If $pX[1] <> GUICtrlRead($xActuell) Then GUICtrlSetData($xActuell, Round($pX[1],1)) If $pY[1] <> GUICtrlRead($yActuell) Then GUICtrlSetData($yActuell, Round($pY[1],1)) If $pZ[1] <> GUICtrlRead($zActuell) Then GUICtrlSetData($zActuell, Round($pZ[1],1)) WEnd
Func _attackspeed() _MemoryPointerWrite($attackspeedPointer, $Open, $attackspeedOffset, GUICtrlRead($AttackSpeedNeu), 'DWORD') EndFunc
Func _speedhack() _MemoryPointerWrite($SpeedHackPointer, $Open, $SpeedHackOffset, GUICtrlRead($SpeedHackNeu), "float") EndFunc
Func _rangehack() _MemoryPointerWrite($RangeHackPointer, $Open, $RangeHackOffset, GUICtrlRead($RangeHackNeu), "float") _MemoryPointerWrite($RangeHackPointer2, $Open, $RangeHackOffset2, GUICtrlRead($RangeHackNeu), "float") EndFunc
nomadmemory:
PHP Code:
#include-once #region _Memory ;================================================================================================= ; AutoIt Version: 3.1.127 (beta) ; Language: English ; Platform: All Windows ; Author: Nomad ; Requirements: These functions will only work with beta. ;================================================================================================= ; Credits: wOuter - These functions are based on his original _Mem() functions. But they are ; easier to comprehend and more reliable. These functions are in no way a direct copy ; of his functions. His functions only provided a foundation from which these evolved. ;================================================================================================= ; ; Functions: ; ;================================================================================================= ; Function: _MemoryOpen($iv_Pid(, $iv_DesiredAccess(, $iv_InheritHandle))) ; Description: Opens a process and enables all possible access rights to the process. The ; Process ID of the process is used to specify which process to open. You must ; call this function before calling _MemoryClose(), _MemoryRead(), or _MemoryWrite(). ; Parameter(s): $iv_Pid - The Process ID of the program you want to open. ; $iv_DesiredAccess - (optional) Set to 0x1F0FFF by default, which enables all ; possible access rights to the process specified by the ; Process ID. ; $if_InheritHandle - (optional) If this value is TRUE, all processes created by ; this process will inherit the access handle. Set to TRUE ; (1) by default. Set to 0 if you want it to be FALSE. ; Requirement(s): A valid process ID. ; Return Value(s): On Success - Returns an array containing the Dll handle and an open handle to ; the specified process. ; On Failure - Returns 0 ; @Error - 0 = No error. ; 1 = Invalid $iv_Pid. ; 2 = Failed to open Kernel32.dll. ; 3 = Failed to open the specified process. ; Author(s): Nomad ; Note(s): ;================================================================================================= Func _MemoryOpen($iv_Pid, $iv_DesiredAccess = 0x1F0FFF, $if_InheritHandle = 1)
If Not ProcessExists($iv_Pid) Then SetError(1) Return 0 EndIf
Local $ah_Handle[2] = [DllOpen('kernel32.dll')]
If @Error Then SetError(2) Return 0 EndIf
Local $av_OpenProcess = DllCall($ah_Handle[0], 'int', 'OpenProcess', 'int', $iv_DesiredAccess, 'int', $if_InheritHandle, 'int', $iv_Pid)
If @Error Then DllClose($ah_Handle[0]) SetError(3) Return 0 EndIf
$ah_Handle[1] = $av_OpenProcess[0]
Return $ah_Handle
EndFunc
;================================================================================================= ; Function: _MemoryRead($iv_Address, $ah_Handle(, $sv_Type)) ; Description: Reads the value located in the memory address specified. ; Parameter(s): $iv_Address - The memory address you want to read from. It must be in hex ; format (0x00000000). ; $ah_Handle - An array containing the Dll handle and the handle of the open ; process as returned by _MemoryOpen(). ; $sv_Type - (optional) The "Type" of value you intend to read. This is set to ; 'dword'(32bit(4byte) signed integer) by default. See the help file ; for DllStructCreate for all types. ; An example: If you want to read a word that is 15 characters in ; length, you would use 'char[16]'. ; Requirement(s): The $ah_Handle returned from _MemoryOpen. ; Return Value(s): On Success - Returns the value located at the specified address. ; On Failure - Returns 0 ; @Error - 0 = No error. ; 1 = Invalid $ah_Handle. ; 2 = $sv_Type was not a string. ; 3 = $sv_Type is an unknown data type. ; 4 = Failed to allocate the memory needed for the DllStructure. ; 5 = Error allocating memory for $sv_Type. ; 6 = Failed to read from the specified process. ; Author(s): Nomad ; Note(s): Values returned are in Decimal format, unless specified as a 'char' type, then ; they are returned in ASCII format. Also note that size ('char[size]') for all ; 'char' types should be 1 greater than the actual size. ;================================================================================================= Func _MemoryRead($iv_Address, $ah_Handle, $sv_Type = 'dword')
If Not IsArray($ah_Handle) Then SetError(1) Return 0 EndIf
Local $v_Buffer = DllStructCreate($sv_Type)
If @Error Then SetError(@Error + 1) Return 0 EndIf
DllCall($ah_Handle[0], 'int', 'ReadProcessMemory', 'int', $ah_Handle[1], 'int', $iv_Address, 'ptr', DllStructGetPtr($v_Buffer), 'int', DllStructGetSize($v_Buffer), 'int', '')
If Not @Error Then Local $v_Value = DllStructGetData($v_Buffer, 1) Return $v_Value Else SetError(6) Return 0 EndIf
EndFunc
;================================================================================================= ; Function: _MemoryWrite($iv_Address, $ah_Handle, $v_Data(, $sv_Type)) ; Description: Writes data to the specified memory address. ; Parameter(s): $iv_Address - The memory address you want to write to. It must be in hex ; format (0x00000000). ; $ah_Handle - An array containing the Dll handle and the handle of the open ; process as returned by _MemoryOpen(). ; $v_Data - The data to be written. ; $sv_Type - (optional) The "Type" of value you intend to write. This is set to ; 'dword'(32bit(4byte) signed integer) by default. See the help file ; for DllStructCreate for all types. ; An example: If you want to write a word that is 15 characters in ; length, you would use 'char[16]'. ; Requirement(s): The $ah_Handle returned from _MemoryOpen. ; Return Value(s): On Success - Returns 1 ; On Failure - Returns 0 ; @Error - 0 = No error. ; 1 = Invalid $ah_Handle. ; 2 = $sv_Type was not a string. ; 3 = $sv_Type is an unknown data type. ; 4 = Failed to allocate the memory needed for the DllStructure. ; 5 = Error allocating memory for $sv_Type. ; 6 = $v_Data is not in the proper format to be used with the "Type" ; selected for $sv_Type, or it is out of range. ; 7 = Failed to write to the specified process. ; Author(s): Nomad ; Note(s): Values sent must be in Decimal format, unless specified as a 'char' type, then ; they must be in ASCII format. Also note that size ('char[size]') for all ; 'char' types should be 1 greater than the actual size. ;================================================================================================= Func _MemoryWrite($iv_Address, $ah_Handle, $v_Data, $sv_Type = 'dword')
If Not IsArray($ah_Handle) Then SetError(1) Return 0 EndIf
Local $v_Buffer = DllStructCreate($sv_Type)
If @Error Then SetError(@Error + 1) Return 0 Else DllStructSetData($v_Buffer, 1, $v_Data) If @Error Then SetError(6) Return 0 EndIf EndIf
DllCall($ah_Handle[0], 'int', 'WriteProcessMemory', 'int', $ah_Handle[1], 'int', $iv_Address, 'ptr', DllStructGetPtr($v_Buffer), 'int', DllStructGetSize($v_Buffer), 'int', '')
If Not @Error Then Return 1 Else SetError(7) Return 0 EndIf
EndFunc
;================================================================================================= ; Function: _MemoryClose($ah_Handle) ; Description: Closes the process handle opened by using _MemoryOpen(). ; Parameter(s): $ah_Handle - An array containing the Dll handle and the handle of the open ; process as returned by _MemoryOpen(). ; Requirement(s): The $ah_Handle returned from _MemoryOpen. ; Return Value(s): On Success - Returns 1 ; On Failure - Returns 0 ; @Error - 0 = No error. ; 1 = Invalid $ah_Handle. ; 2 = Unable to close the process handle. ; Author(s): Nomad ; Note(s): ;================================================================================================= Func _MemoryClose($ah_Handle)
If Not IsArray($ah_Handle) Then SetError(1) Return 0 EndIf
DllCall($ah_Handle[0], 'int', 'CloseHandle', 'int', $ah_Handle[1]) If Not @Error Then DllClose($ah_Handle[0]) Return 1 Else DllClose($ah_Handle[0]) SetError(2) Return 0 EndIf
EndFunc
;================================================================================================= ; Function: _MemoryPointerRead ($iv_Address, $ah_Handle, $av_Offset(, $sv_Type)) ; Description: Reads a chain of pointers and returns an array containing the destination ; address and the data at the address. ; Parameter(s): $iv_Address - The static memory address you want to start at. It must be in ; hex format (0x00000000). ; $ah_Handle - An array containing the Dll handle and the handle of the open ; process as returned by _MemoryOpen(). ; $av_Offset - An array of offsets for the pointers. Each pointer must have an ; offset. If there is no offset for a pointer, enter 0 for that ; array dimension. (Offsets must be in decimal format, NOT hex!) ; $sv_Type - (optional) The "Type" of data you intend to read at the destination ; address. This is set to 'dword'(32bit(4byte) signed integer) by ; default. See the help file for DllStructCreate for all types. ; Requirement(s): The $ah_Handle returned from _MemoryOpen. ; Return Value(s): On Success - Returns an array containing the destination address and the value ; located at the address. ; On Failure - Returns 0 ; @Error - 0 = No error. ; 1 = $av_Offset is not an array. ; 2 = Invalid $ah_Handle. ; 3 = $sv_Type is not a string. ; 4 = $sv_Type is an unknown data type. ; 5 = Failed to allocate the memory needed for the DllStructure. ; 6 = Error allocating memory for $sv_Type. ; 7 = Failed to read from the specified process. ; Author(s): Nomad ; Note(s): Values returned are in Decimal format, unless a 'char' type is selected. ; Set $av_Offset like this: ; $av_Offset[0] = NULL (not used) ; $av_Offset[1] = Offset for pointer 1 (all offsets must be in Decimal) ; $av_Offset[2] = Offset for pointer 2 ; etc... ; (The number of array dimensions determines the number of pointers) ;================================================================================================= Func _MemoryPointerRead ($iv_Address, $ah_Handle, $av_Offset, $sv_Type = 'dword')
If IsArray($av_Offset) Then If IsArray($ah_Handle) Then Local $iv_PointerCount = UBound($av_Offset) - 1 Else SetError(2) Return 0 EndIf Else SetError(1) Return 0 EndIf
Local $iv_Data[2], $i Local $v_Buffer = DllStructCreate('dword')
For $i = 0 to $iv_PointerCount
If $i = $iv_PointerCount Then $v_Buffer = DllStructCreate($sv_Type) If @Error Then SetError(@Error + 2) Return 0 EndIf
$iv_Address = '0x' & hex($iv_Data[1] + $av_Offset[$i]) DllCall($ah_Handle[0], 'int', 'ReadProcessMemory', 'int', $ah_Handle[1], 'int', $iv_Address, 'ptr', DllStructGetPtr($v_Buffer), 'int', DllStructGetSize($v_Buffer), 'int', '') If @Error Then SetError(7) Return 0 EndIf
$iv_Data[1] = DllStructGetData($v_Buffer, 1)
ElseIf $i = 0 Then DllCall($ah_Handle[0], 'int', 'ReadProcessMemory', 'int', $ah_Handle[1], 'int', $iv_Address, 'ptr', DllStructGetPtr($v_Buffer), 'int', DllStructGetSize($v_Buffer), 'int', '') If @Error Then SetError(7) Return 0 EndIf
$iv_Data[1] = DllStructGetData($v_Buffer, 1)
Else $iv_Address = '0x' & hex($iv_Data[1] + $av_Offset[$i]) DllCall($ah_Handle[0], 'int', 'ReadProcessMemory', 'int', $ah_Handle[1], 'int', $iv_Address, 'ptr', DllStructGetPtr($v_Buffer), 'int', DllStructGetSize($v_Buffer), 'int', '') If @Error Then SetError(7) Return 0 EndIf
$iv_Data[1] = DllStructGetData($v_Buffer, 1)
EndIf
Next
$iv_Data[0] = $iv_Address
Return $iv_Data
EndFunc
;================================================================================================= ; Function: _MemoryPointerWrite ($iv_Address, $ah_Handle, $av_Offset, $v_Data(, $sv_Type)) ; Description: Reads a chain of pointers and writes the data to the destination address. ; Parameter(s): $iv_Address - The static memory address you want to start at. It must be in ; hex format (0x00000000). ; $ah_Handle - An array containing the Dll handle and the handle of the open ; process as returned by _MemoryOpen(). ; $av_Offset - An array of offsets for the pointers. Each pointer must have an ; offset. If there is no offset for a pointer, enter 0 for that ; array dimension. ; $v_Data - The data to be written. ; $sv_Type - (optional) The "Type" of data you intend to write at the destination ; address. This is set to 'dword'(32bit(4byte) signed integer) by ; default. See the help file for DllStructCreate for all types. ; Requirement(s): The $ah_Handle returned from _MemoryOpen. ; Return Value(s): On Success - Returns the destination address. ; On Failure - Returns 0. ; @Error - 0 = No error. ; 1 = $av_Offset is not an array. ; 2 = Invalid $ah_Handle. ; 3 = Failed to read from the specified process. ; 4 = $sv_Type is not a string. ; 5 = $sv_Type is an unknown data type. ; 6 = Failed to allocate the memory needed for the DllStructure. ; 7 = Error allocating memory for $sv_Type. ; 8 = $v_Data is not in the proper format to be used with the ; "Type" selected for $sv_Type, or it is out of range. ; 9 = Failed to write to the specified process. ; Author(s): Nomad ; Note(s): Data written is in Decimal format, unless a 'char' type is selected. ; Set $av_Offset like this: ; $av_Offset[0] = NULL (not used, doesn't matter what's entered) ; $av_Offset[1] = Offset for pointer 1 (all offsets must be in Decimal) ; $av_Offset[2] = Offset for pointer 2 ; etc... ; (The number of array dimensions determines the number of pointers) ;================================================================================================= Func _MemoryPointerWrite ($iv_Address, $ah_Handle, $av_Offset, $v_Data, $sv_Type = 'dword')
If IsArray($av_Offset) Then If IsArray($ah_Handle) Then Local $iv_PointerCount = UBound($av_Offset) - 1 Else SetError(2) Return 0 EndIf Else SetError(1) Return 0 EndIf
Local $iv_StructData, $i Local $v_Buffer = DllStructCreate('dword')
For $i = 0 to $iv_PointerCount If $i = $iv_PointerCount Then $v_Buffer = DllStructCreate($sv_Type) If @Error Then SetError(@Error + 3) Return 0 EndIf
DllStructSetData($v_Buffer, 1, $v_Data) If @Error Then SetError(8) Return 0 EndIf
$iv_Address = '0x' & hex($iv_StructData + $av_Offset[$i]) DllCall($ah_Handle[0], 'int', 'WriteProcessMemory', 'int', $ah_Handle[1], 'int', $iv_Address, 'ptr', DllStructGetPtr($v_Buffer), 'int', DllStructGetSize($v_Buffer), 'int', '') If @Error Then SetError(9) Return 0 Else Return $iv_Address EndIf ElseIf $i = 0 Then DllCall($ah_Handle[0], 'int', 'ReadProcessMemory', 'int', $ah_Handle[1], 'int', $iv_Address, 'ptr', DllStructGetPtr($v_Buffer), 'int', DllStructGetSize($v_Buffer), 'int', '') If @Error Then SetError(3) Return 0 EndIf
$iv_StructData = DllStructGetData($v_Buffer, 1)
Else $iv_Address = '0x' & hex($iv_StructData + $av_Offset[$i]) DllCall($ah_Handle[0], 'int', 'ReadProcessMemory', 'int', $ah_Handle[1], 'int', $iv_Address, 'ptr', DllStructGetPtr($v_Buffer), 'int', DllStructGetSize($v_Buffer), 'int', '') If @Error Then SetError(3) Return 0 EndIf
$iv_StructData = DllStructGetData($v_Buffer, 1)
EndIf Next
EndFunc
|
|
|
08/24/2011, 21:04
|
#11
|
elite*gold: 25
Join Date: Jun 2010
Posts: 1,076
Received Thanks: 290
|
Danke^^
Wow bin lange nicht in diesem Forum bzw. dem Autoit Forum "aktiv" gewesen :O
|
|
|
 |
Similar Threads
|
Pointer Adresse in VB08
02/18/2013 - .NET Languages - 21 Replies
Wie bringt man bei der WriteProcessMemory Funktion pointer ein, beispielsweise die Pointer Adresse &H1007170, die die Adresse dann auf das Offset 30 bringt...
Gibt es da eine Möglichkeit "richtige" adressen aus pointern zu bekommen oder muss man das direkt in der Funktion machen, beispielsweise:
WriteProcessMemory(processHandle, &H1007170 + &H1E, 100, 4)
Wenn ja, wie? :)
Gruß
chesar
|
Einfache Pointer/Offsets mit IDA Pro finden
08/22/2012 - Coding Tutorials - 12 Replies
Hey,
das ist jetz mein erstes Tutorial auf Epvpers, also verzeiht mir bitte wenn ich etwas falsch mache :handsdown:
Benötigte Programme:
IDA Pro: http://www.hex-rays.com/idapro/idadown.htm
Hex-Rays Decompiler Plugin: http://www.hex-rays.com/decompiler.shtml ( Optional aber nur zu empfehlen ;)
|
Inf Amo Adresse finden??
11/29/2009 - S4 League - 0 Replies
Also ich versuche gerade das Hacken mit cheat engine zu erlernen mich würde nur intressieren wo ich nach dieser adresse suchen muss und wie ichs ie zu den advanced options bringe.
Danke schon mal im voraus!!!
|
Adresse finden ohne Information
03/07/2008 - General Coding - 7 Replies
Hallo,
Wie kann man eine Adresse einer Variable finden, über die die GUI keine Information gibt? Wenn ich zB in Zone XY bin, dann weiss ich ja nicht, nach welchem Wert ich suchen soll :) Man hat eigentlich nur das Kriterium der Veränderung zum Ausschließen andere Variablen. Aber bei einem Zonenwechsel wird sich ja nich nur die eine Zonenvariable ändern, sondern noch 1000de mehr.
Grüße
|
hp memory adresse finden
10/27/2007 - Kal Online - 11 Replies
.
|
All times are GMT +1. The time now is 14:39.
|
|