KDMemory (AutoIt 32 & 64 Bit)

08/01/2013 00:50 KDeluxe#1
Functions:
Quote:
Originally Posted by KDMemory.au3
  1. _KDMemory_OpenProcess ( $processId [, $inheritHandle [, $desiredAccess]] )
  2. _KDMemory_CloseHandles ( $handles )
  3. _KDMemory_ReadProcessMemory ( $handles, $baseAddress, $type [, $offsets] )
  4. _KDMemory_ReadProcessString( $handles, $baseAddress [, $offsets [, $unicode]] )
  5. _KDMemory_WriteProcessMemory ( $handles, $baseAddress, $type, $value [, $offsets] )
  6. _KDMemory_WriteProcessString ( $handles, $baseAddress, $string [, $offsets [, $unicode]] )
  7. _KDMemory_GetModuleBaseAddress ( $handles, $moduleName [, $caseSensitive [, $unicode]] )
  8. _KDMemory_FindAddress ( $handles, $pattern, $startAddress, $endAddress, ByRef $errors [, $getAll] )
08/01/2013 01:18 YatoDev#2
Vielen dank :)

Sowas brauchte ich noch .

aber könntest du mir mal das mit den pointern (offsets) erklären ? ich verstehe grade nicht wie ich die übergeben soll (als array)

edit : wenns in dem example ist sry das hab ich am handy net gesehen und kann es auch net öffnen
08/01/2013 01:37 omer36#3
thx,
in der .au3 hast du einen kleinen tippfehler..

zeile 196
EndFuncspoiler]
08/01/2013 11:59 SpieleHacksInfo#4
Nice 64bit FTW! xD
08/01/2013 17:51 KDeluxe#5
Quote:
Originally Posted by »FlutterShy™ View Post
Vielen dank :)

Sowas brauchte ich noch .

aber könntest du mir mal das mit den pointern (offsets) erklären ? ich verstehe grade nicht wie ich die übergeben soll (als array)

edit : wenns in dem example ist sry das hab ich am handy net gesehen und kann es auch net öffnen
Die "Example" Datei beinhaltet ein Beispiel.

Quote:
Originally Posted by omer36 View Post
thx,
in der .au3 hast du einen kleinen tippfehler..

zeile 196
EndFuncspoiler]
Keine Ahnung wann und wie das da rein gerutscht ist. Ich habe den Fehler entfernt und die .au3 noch mal neu hochgeladen.
08/01/2013 20:27 omer36#6
komischerweise klappt bei mir die WriteProcessMemory funktion nicht, wenn ich einen pointer verwende (ohne pointer gehts). lesen klappt.

kommt auch keine fehlermeldung.

in deinem beispiel nur die stellen geändert:

$szProcessName = "Solitaire.exe"
Dim $pdwOffsets[2] = [0x50, 0x14]
$lpBaseAddress = _KDMemory_GetModuleBaseAddress($phHandles, $szProcessName) + Dec("BAFA8")

beim starten zeigt er mir die aktuellen punktzahlen des spiels an, ändert diese jedoch nicht in 5000, die vorgegeben waren.
08/01/2013 21:12 KDeluxe#7
Evtl. ist es wie beim CE Tutorial (siehe Beispielsscript). Der Wert wurde geändert, jedoch aktualisiert CE diesen Wert nicht, das Label zeigt also weiterhin den alten Wert an.
Klickst du allerdings auf den "Change Pointer" Button und führst anschließend das Script aus, so kannst du anschließend den "Next" Button betätigen.
Du siehst auch, dass es funktioniert, wenn du erst den Wert schreibst und diesen anschließend wieder ausließt. Das könntest du ja mal bei Solitär ausprobieren. Evtl. verwendest du ja auch einfach den falschen Pointer, wobei ich mal nicht davon ausgehe.
Der neue Wert wird übrigens auch bei Solitär nur angezeigt, sobald das Spiel einen Punktestandunterschied erkennt, zum Start wirst du also immer 0 sehen.
08/03/2013 08:15 KaT̅1muR̅#8
Cooles Ding Danke xD
08/05/2013 11:01 Angela_Merkel#9
Bei mir kommt immer das hier, wenn ich deinen Script ausführe.
[Only registered and activated users can see links. Click Here To Register...]
08/05/2013 13:45 YatoDev#10
Falsche adresse oder #RequireAdmin vergessen
08/05/2013 15:53 Logtetsch#11
Quote:
Originally Posted by KDeluxe View Post
Ich lade mal meine Memory UDF hoch. Diese kann sowohl mit 32 als auch 64 Bit Anwendungen verwendet werden.
Quote:
Originally Posted by KDeluxe View Post
Code:
If @CPUArch <> "X64" Or @AutoItX64 == 0 Then
    MsgBox(48, "Error", "Unsupported system")
    Exit
EndIf
Wieso prüfst du auf eine 32bit CPU, wenn es doch sowohl 64 als auch 32 Bit unterstützen soll?
08/05/2013 18:43 KDeluxe#12
Quote:
Originally Posted by Angela_Merkel View Post
Bei mir kommt immer das hier, wenn ich deinen Script ausführe.
[Only registered and activated users can see links. Click Here To Register...]
Du erstellst zwei Threads in der AutoIt Sektion und zusätzlich einen weiteren Thread im General Coding zu EINEM Thema und postest es auch noch in diesem Thread, obwohl der Fehler an dir liegt und nicht an der UDF.


Quote:
Originally Posted by Logtetsch View Post
Wieso prüfst du auf eine 32bit CPU, wenn es doch sowohl 64 als auch 32 Bit unterstützen soll?
Da hast du dich verguckt. Ich prüfe ob auf ein 64 Bit System verwendet wird und ob die Anwendung eine 64 Bit Anwendung ist.
Das hat einen einfachen Hintergrund:
  • eine 32 Bit Applikation kann nicht auf den Speicher einer 64 Bit Applikation zugreifen
  • auf einem 64 Bit Betriebssystem können 32 Bit Anwendungen ausgeführt werden

Bei dem Zielprozess handelt es sich um eine 64 Bit Anwendung, deshalb die Überprüfung. So kann die Funktionalität meiner UDF garantiert werden, was Beiträge wie "Funktioniert nicht" vermeiden soll (aber nicht kann).
08/05/2013 20:18 YatoDev#13
Quote:
Originally Posted by KDeluxe View Post
  • eine 32 Bit Applikation kann nicht auf den Speicher einer 64 Bit Applikation zugreifen
  • auf einem 64 Bit Betriebssystem können 32 Bit Anwendungen ausgeführt werden
kann denn eine 64 bit anwendung auf den speicher einer 32 bit anwendung zugreifen ?
08/08/2013 17:10 YatoDev#14
Mit deiner UDF hat das hier nicht funktioniert mit nomad aber schon . Ich habe nichts falsch eingegebn :

Code:
#include <NomadMemory.au3>

HotKeySet("{NUMPADADD}","_WriteAdd")
HotKeySet("{NUMPADSUB}","_WriteSub")

Global $adress = 0x059C0724
Global $processHandle = ProcessExists("iw5m.dat")
Global $hopen = _MemoryOpen($processHandle)

While 1
sleep(100)
WEnd

Func _Read()
	$read = _MemoryRead($adress,$hopen , "FLOAT")
EndFunc

Func _WriteSub()
$read = _MemoryRead($adress,$hopen , "FLOAT")
_MemoryWrite($adress,$hopen ,$read - 10, "FLOAT" )
EndFunc

Func _WriteAdd()
$read = _MemoryRead($adress,$hopen , "FLOAT")
_MemoryWrite($adress,$hopen ,$read + 10, "FLOAT" )
EndFunc
08/09/2013 00:55 KDeluxe#15
Wenn du das Script hinzufügen würdest, wie du es mit meiner UDF gemacht hast, könnte ich dir helfen.

Hier mal ein Beispiel, wie es funktionieren sollte: