KDMemory (AutoIt 32 & 64 Bit)

08/09/2013 02:11 YatoDev#16
Da ich jetzt erstmal nicht am pc bin : ich habe das genauso gemacht wie das mit der nomad.au3 ich habe vorhin nur deine funcs gegen die aus der nomad ausgetauscht und die variablen in die richtigen parameter gesetzt . ich werde deins morgen mal testen
08/09/2013 15:31 KDeluxe#17
In diesem Fall kann ich dir deinen Fehler sagen: Du hast ein Array als einen Wert behandelt.
09/28/2013 21:27 KDeluxe#18
Ich habe einen Bug in der _KDMemory_WriteProcessMemory() Funktion behoben und die .au3 um eine Funktion erweitert: _KDMemory_FindAddress()
09/30/2013 20:45 c0w#19
:O sorg mal dafür dass man das bei google besser findet ist ja genial =) genau das hat ich grad gesucht. nach ner stunde rumgoogeln aber nich befriedigendes gefunden und mich dazu entschlossen es ganze erst mal auf eis zu legen :D.

1k-dank
10/01/2013 01:08 kohei1#20
also ich weiß net wofür das gut ist, kann mir einer hier behilflich sein?


lg
10/01/2013 20:30 KDeluxe#21
Mit meiner .au3 kannst du einfacher von anderen Prozessen lesen oder schreiben. In anderen Worten: Die .au3 erleichtert dir das schreiben eines Hacks.
Das ist allerdings kein Thema in das Anfänger einsteigen sollten. Die Funktionen und mein Beispielscript sollten als "Anleitung" genügen.
10/18/2013 18:23 xxfabbelxx#22
topic renamed
10/28/2013 00:21 KDeluxe#23
Ich habe der .au3 zwei neue Funktionen hinzugefügt:
  1. _KDMemory_ReadProcessString( $handles, $baseAddress [, $offsets [, $unicode]] )
    • Diese Funktion gibt den String der angegebenen Adresse zurück. Man kann die Größe des Strings nicht bestimmen, es wird immer der gesamte String zurück gegeben.
  2. _KDMemory_WriteProcessString ( $handles, $baseAddress, $string [, $offsets [, $unicode]] )
    • Diese Funktion überschreibt den vorhandenen String der Adresse. Dieser String ist abschließend. Ändert man den String "Test" auf "1", so ist der geänderte String "1" und nicht "1est" (wie sonst üblich).
11/02/2013 20:04 BUNNY!#24
Code:
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <KDMemory.au3>

#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 199, 98, 192, 124)
$Button1 = GUICtrlCreateButton("Button1", 96, 24, 75, 41)
$Checkbox1 = GUICtrlCreateCheckbox("HP hack", 8, 16, 73, 25)
$Checkbox2 = GUICtrlCreateCheckbox("Infinite ammo", 8, 48, 81, 25)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $Button1
			Hacking()
	EndSwitch
WEnd



func Hacking()
	If ProcessExists("ac_client.exe")  Then
	$value = 7331
	$PID = ProcessExists("ac_client.exe")
	$handles = _KDMemory_OpenProcess($PID)
	If $Checkbox1 = 1 Then
		_KDMemory_WriteProcessMemory($handles,0x004DF830,'DWORD', 5000)
	EndIf
	If $Checkbox2 = 1 Then
		_KDMemory_WriteProcessMemory($handles,0x02CA9308,'DWORD', 5000)
		EndIf
Else
	MsgBox(0,"Error","Game not found, please try again.")
	EndIf
	EndFunc
What am I doing wrong? Or am I even doing something correctly? :\
11/03/2013 01:35 KDeluxe#25
Why is there a button? Do you want to modify the memory just once?
If you want to check the state of the checkbox, you have to use the GUICtrlRead() function.
11/05/2013 20:24 SpieleHacksInfo#26
Da man leider Gottes durch CoD Ghosts 64bit zu nutzen habe ich dies nun bei CoD Ghosts versucht. Aber ich habe ein Problem: Wenn ich die Adresse (welche Statisch ist) roh eingebe oder per Variable übergebe kann er sie nicht lesen. Aber mit _GetModuleBaseAdress kommt die richtige Adresse raus.

Code:
#RequireAdmin
#include <KDMemory.au3>
$pid = ProcessExists("iw6mp64_ship.exe")
$handle = _KDMemory_OpenProcess($pid)

$1 = _KDMemory_ReadProcessMemory($handle,"0x1440557BC","DWORD");,$handle)
MsgBox(0,"",$1)
$2 = _KDMemory_GetModuleBaseAddress($handle, "iw6mp64_ship.exe") + 0x40557BC
MsgBox(0,"",hex($2))
$memoryData = _KDMemory_ReadProcessMemory($handle, $2, 'DWORD')
MsgBox(0,"",$memoryData)
11/05/2013 20:54 KDeluxe#27
Du kannst in Hexadezimalschreibweise keine Werte über 0xFFFFFFFF (8x F) verwenden. Das ist der maximale 32 Bit Wert. Wenn du zahlen über diesen Wert verwenden möchtest musst du diese entweder in Dezimalschreibweise angeben oder mit der Funktion Dec().
Code:
$memoryData = _KDMemory_ReadProcessMemory($handle, Dec("1440557BC"), "DWORD")
MsgBox(0,"",$memoryData[0] & ": " & $memoryData[1])
11/05/2013 22:14 SpieleHacksInfo#28
Ah ok vielen Dank.
11/21/2013 00:55 KDeluxe#29
Ich habe die Funktion _KDMemory_GetModuleBaseAddress() geändert. Die Funktion verwendet keine Aufrufe aus der Psapsi.dll. Alle Funktionen der UDF verwenden nur noch die Funktionen der Kernel32.dll.
Außerdem habe ich einen Fehler der Berechtigung unter Windows XP behoben.
12/02/2013 16:03 mlukac89#30
i have a next problem in this script
problem is with function to show me a player name this one "_charName()"
if i comment that line in code gui starts normal and show me all correct values, but with that _charName() crashes script
this is error from scite
Code:
C:\Users\xooox\Desktop\aion test memory.au3 (95) : ==> Subscript used with non-Array variable.:
If GUICtrlRead($charName) <> $memoryData[1] Then GUICtrlSetData($charName, $memoryData[1])
If GUICtrlRead($charName) <> $memoryData^ ERROR
and error is in this line in function _charName()

Code:
Func _charName()
	$handles = _KDMemory_OpenProcess($processId)
    If Not @error Then
        $baseAddress = _KDMemory_GetModuleBaseAddress($handles, $moduleName) + $cName
		$memoryData = _KDMemory_ReadProcessMemory($handles, $baseAddress, "WCHAR[25] (Unicode)")
		If GUICtrlRead($charName) <> $memoryData[1] Then GUICtrlSetData($charName, $memoryData[1])
	EndIf
	_KDMemory_CloseHandles($handles)
EndFunc
whole script is in Spoiler

and im running win 7 64 bit