|
You last visited: Today at 01:58
Advertisement
KDMemory (AutoIt 32 & 64 Bit)
Discussion on KDMemory (AutoIt 32 & 64 Bit) within the AutoIt forum part of the Coders Den category.
08/09/2013, 02:11
|
#16
|
elite*gold: 50
Join Date: Sep 2012
Posts: 3,841
Received Thanks: 1,462
|
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
|
#17
|
elite*gold: 0
Join Date: Mar 2009
Posts: 7,260
Received Thanks: 33,147
|
In diesem Fall kann ich dir deinen Fehler sagen: Du hast ein Array als einen Wert behandelt.
|
|
|
09/28/2013, 21:27
|
#18
|
elite*gold: 0
Join Date: Mar 2009
Posts: 7,260
Received Thanks: 33,147
|
Ich habe einen Bug in der _KDMemory_WriteProcessMemory() Funktion behoben und die .au3 um eine Funktion erweitert: _KDMemory_FindAddress()
|
|
|
09/30/2013, 20:45
|
#19
|
elite*gold: 3653
Join Date: Aug 2008
Posts: 30,854
Received Thanks: 529
|
: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 .
1k-dank
|
|
|
10/01/2013, 01:08
|
#20
|
elite*gold: 0
Join Date: Jul 2010
Posts: 17
Received Thanks: 1
|
also ich weiß net wofür das gut ist, kann mir einer hier behilflich sein?
lg
|
|
|
10/01/2013, 20:30
|
#21
|
elite*gold: 0
Join Date: Mar 2009
Posts: 7,260
Received Thanks: 33,147
|
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
|
#22
|
elite*gold: 900
Join Date: Apr 2009
Posts: 14,976
Received Thanks: 11,388
|
topic renamed
|
|
|
10/28/2013, 00:21
|
#23
|
elite*gold: 0
Join Date: Mar 2009
Posts: 7,260
Received Thanks: 33,147
|
Ich habe der .au3 zwei neue Funktionen hinzugefügt: - _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.
- _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
|
#24
|
elite*gold: 0
Join Date: Oct 2013
Posts: 12
Received Thanks: 0
|
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
|
#25
|
elite*gold: 0
Join Date: Mar 2009
Posts: 7,260
Received Thanks: 33,147
|
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.
Code:
Func Hacking()
$processId = ProcessExists("ac_client.exe")
If $processId == 0 Then
MsgBox(16, "Error", "Game not found, please try again.")
Else
$handles = _KDMemory_OpenProcess($processId)
If @error Then
;~ MsgBox(16, "Error", "...")
Else
If GUICtrlRead($Checkbox1) == $GUI_CHECKED Then
_KDMemory_WriteProcessMemory($handles,0x004DF830,'DWORD', 5000)
EndIf
If GUICtrlRead($Checkbox2) == $GUI_CHECKED Then
_KDMemory_WriteProcessMemory($handles,0x02CA9308,'DWORD', 5000)
EndIf
EndIf
EndIf
EndFunc
Code:
#AutoIt3Wrapper_UseX64=n ; 32 Bit application
;~ #AutoIt3Wrapper_UseX64=y ; 64 Bit application
#RequireAdmin
#include <GUIConstantsEx.au3>
#include <KDMemory.au3>
GUICreate("", 150, 60)
$ckb_HPHack = GUICtrlCreateCheckbox("HP Hack", 5, 5, 140, 25)
$ckb_InfiniteAmmunition = GUICtrlCreateCheckbox("Infinite Ammunition", 5, 30, 140, 25)
GUISetState(@SW_SHOW)
Dim $processName = "ac_client.exe", $handles = 0
While True
;~ Sleep()
$msg = GUIGetMsg()
Switch $msg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
$processId = ProcessExists($processName)
If $processId == 0 Then
If IsArray($handles) Then
_KDMemory_CloseHandles($handles)
$handles = 0
EndIf
ContinueLoop
EndIf
If $handles == 0 Then
$handles = _KDMemory_OpenProcess($processId)
If @error Then
If MsgBox(52, "Error", "Can't open " & $processName & "! @error: " & @error) == 6 Then
ContinueLoop
Else
Exit
EndIf
EndIf
EndIf
If GUICtrlRead($ckb_HPHack) == $GUI_CHECKED Then
_KDMemory_WriteProcessMemory($handles, 0x004DF830, "DWORD", 5000)
;~ If @error Then ;...
EndIf
If GUICtrlRead($ckb_InfiniteAmmunition) == $GUI_CHECKED Then
_KDMemory_WriteProcessMemory($handles, 0x02CA9308, "DWORD", 5000)
;~ If @error Then ;...
EndIf
WEnd
|
|
|
11/05/2013, 20:24
|
#26
|
elite*gold: 0
Join Date: Dec 2012
Posts: 448
Received Thanks: 278
|
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
|
#27
|
elite*gold: 0
Join Date: Mar 2009
Posts: 7,260
Received Thanks: 33,147
|
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
|
#28
|
elite*gold: 0
Join Date: Dec 2012
Posts: 448
Received Thanks: 278
|
Ah ok vielen Dank.
|
|
|
11/21/2013, 00:55
|
#29
|
elite*gold: 0
Join Date: Mar 2009
Posts: 7,260
Received Thanks: 33,147
|
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
|
#30
|
elite*gold: 0
Join Date: Sep 2010
Posts: 473
Received Thanks: 104
|
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
Code:
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <ProgressConstants.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <KDMemory.au3>
#Region ### START Koda GUI section ###
$GUI = GUICreate("Aion Test memory", 253, 389, 222, 198)
$Group1 = GUICtrlCreateGroup("Char info", 8, 8, 233, 129)
$Label1 = GUICtrlCreateLabel("Name : ", 16, 32, 41, 17)
$charName = GUICtrlCreateLabel("", 56, 32, 170, 17)
$Label3 = GUICtrlCreateLabel("HP : ", 27, 67, 28, 17)
$charHP = GUICtrlCreateLabel("", 56, 67, 70, 17)
$Label2 = GUICtrlCreateLabel("MP : ", 27, 89, 29, 17)
$charMP = GUICtrlCreateLabel("", 56, 89, 70, 17)
$Label5 = GUICtrlCreateLabel("XP : ", 27, 111, 27, 17)
$currentXP = GUICtrlCreateProgress(56, 111, 169, 12)
$Label4 = GUICtrlCreateLabel("Level : ", 17, 49, 39, 17)
$charLevel = GUICtrlCreateLabel("", 56, 49, 22, 17)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Group2 = GUICtrlCreateGroup("Enemy info", 9, 144, 233, 105)
$Label6 = GUICtrlCreateLabel("Name : ", 17, 168, 41, 17)
$enemyName = GUICtrlCreateLabel("", 57, 168, 170, 17)
$Label8 = GUICtrlCreateLabel("HP : ", 28, 203, 28, 17)
$enemyHp = GUICtrlCreateLabel("", 57, 203, 70, 17)
$Label10 = GUICtrlCreateLabel("MP : ", 28, 225, 29, 17)
$enemyMp = GUICtrlCreateLabel("", 57, 225, 70, 17)
$Label13 = GUICtrlCreateLabel("Level : ", 18, 185, 39, 17)
$enemyLevel = GUICtrlCreateLabel("", 57, 185, 22, 17)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$startBTN = GUICtrlCreateButton("Start", 8, 352, 75, 25)
$Group3 = GUICtrlCreateGroup("Mob info", 9, 256, 233, 83)
$Label7 = GUICtrlCreateLabel("Name : ", 17, 280, 41, 17)
$mobName = GUICtrlCreateLabel("", 57, 280, 170, 17)
$Label11 = GUICtrlCreateLabel("HP : ", 28, 315, 28, 17)
$mobHp = GUICtrlCreateLabel("", 57, 315, 70, 17)
$Label16 = GUICtrlCreateLabel("Level : ", 18, 297, 39, 17)
$mobLevel = GUICtrlCreateLabel("", 57, 297, 22, 17)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Label9 = GUICtrlCreateLabel("", 99, 355, 136, 20)
GUICtrlSetFont(-1, 10, 800, 0, "Tahoma")
GUICtrlSetColor(-1, 0x800000)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
Global $processName = "aion.bin", $moduleName = "Game.dll"
Global $cName = 0x10A490C ; char name
Global $cLevel = 0x10A49B0 ; char level
Global $cHP = 0x10ADAF8 ; char hp
Global $cMP = 0x10ADB00 ; char mp
Global $cCurrentXP = 0x10ADAE8 ; char current xp
Global $cTotalXP = 0x10ADAD8 ; char total xp
Global $eName = 0x0112C1C4 ; enemy name
Global $eNamePointer[6] = [0, 0x0, 0x324, 0x8, 0x0, 0x270] ; enemy pointer
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
$processId = ProcessExists($processName)
If $processId == 0 Then
GUICtrlSetData($Label9, "Aion is not running")
Else
GUICtrlSetData($Label9, "Aion is running")
_charName()
_charLevel()
_charHP()
_charMP()
_charXP()
;_enemyName()
EndIf
WEnd
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
Func _charLevel()
$handles = _KDMemory_OpenProcess($processId)
If Not @error Then
$baseAddress = _KDMemory_GetModuleBaseAddress($handles, $moduleName) + $cLevel
$memoryData = _KDMemory_ReadProcessMemory($handles, $baseAddress, "WORD")
If GUICtrlRead($charLevel) <> $memoryData[1] Then GUICtrlSetData($charLevel, $memoryData[1])
EndIf
_KDMemory_CloseHandles($handles)
EndFunc
Func _charHP()
$handles = _KDMemory_OpenProcess($processId)
If Not @error Then
$baseAddress = _KDMemory_GetModuleBaseAddress($handles, $moduleName) + $cHP
$memoryData = _KDMemory_ReadProcessMemory($handles, $baseAddress, "DWORD")
If GUICtrlRead($charHP) <> $memoryData[1] Then GUICtrlSetData($charHP, $memoryData[1])
EndIf
_KDMemory_CloseHandles($handles)
EndFunc
Func _charMP()
$handles = _KDMemory_OpenProcess($processId)
If Not @error Then
$baseAddress = _KDMemory_GetModuleBaseAddress($handles, $moduleName) + $cMP
$memoryData = _KDMemory_ReadProcessMemory($handles, $baseAddress, "DWORD")
If GUICtrlRead($charMP) <> $memoryData[1] Then GUICtrlSetData($charMP, $memoryData[1])
EndIf
_KDMemory_CloseHandles($handles)
EndFunc
Func _charXP()
$val = _currentXP()
$val2 = ($val * 100) / _totalXP()
GUICtrlSetData($currentXP, $val2)
EndFunc
Func _currentXP()
$handles = _KDMemory_OpenProcess($processId)
If Not @error Then
$baseAddress = _KDMemory_GetModuleBaseAddress($handles, $moduleName) + $cCurrentXP
$memoryData = _KDMemory_ReadProcessMemory($handles, $baseAddress, "DWORD")
Return $memoryData[1]
EndIf
_KDMemory_CloseHandles($handles)
EndFunc
Func _totalXP()
$handles = _KDMemory_OpenProcess($processId)
If Not @error Then
$baseAddress = _KDMemory_GetModuleBaseAddress($handles, $moduleName) + $cTotalXP
$memoryData = _KDMemory_ReadProcessMemory($handles, $baseAddress, "DWORD")
Return $memoryData[1]
EndIf
_KDMemory_CloseHandles($handles)
EndFunc
|
|
|
All times are GMT +2. The time now is 01:58.
|
|