ich weiss zwar das die Ahk schreiber hier stark in der Minderzahl sind, aber das hat mich trotzdem nicht davon abgehalten für euch ein schickes Tut zu schreiben wie mann ein Write bzw ReadProcessMemory hinbekommt.
Ihr braucht:
-Ahk (lach lach
-ein bisschen wissen über DllCall und VarSetCapacity
-und natürlich gutes Ahk grundwissen
Also Fangen wir an::
als erstes Deklinieren wir eine Funktion und nennen die Passenderweise
WriteProcessMemory
PHP Code:
WriteProcessMemory()
{
}
PHP Code:
BOOL WINAPI WriteProcessMemory( ;ähhmmm sollte klar sein
__in HANDLE hProcess, ;als erstes ein ProcessHandle
__in LPVOID lpBaseAddress, ;Die Addresse in die wir schreiben
__in LPCVOID lpBuffer, ;den Wert den wir schreiben wollen
__in SIZE_T nSize, ;grösse in bytes
__out SIZE_T *lpNumberOfBytesWritten ;relativ egal
);
Handle Des Processes.
Um das Handle zu bekommen brauchen wir ersteinmal die ProcessID (PID)
die hohlen wir uns mit WinGet,var,PID,Titel des Fenster
also brauchen wir erstmal den Titel des Fensters den Titel lassen wir dan den Anwender angeben also
PHP Code:
WriteProcessMemory(title)
{
WinGet ,idvar,PID,%title%
}
Wir beachten auch Autohotkey schneidet gerne werte aber wir wollen immer ein schönen 32byte grossen integer also....
VarSetCapacity(idvar,32,0)
VarSetCapacity(processhandle,32,0)
OpenProcess benötigt ebenfalls "Rechte" wir nehmen da lieber eine Kombination
0x8 PROCESS_VM_OPERATION
0x10 PROCESS_VM_READ
0x20 PROCESS_VM_WRITE
_____
0x38
PHP Code:
WriteProcessMemory(title)
{
VarSetCapacity(idvar,32,0)
VarSetCapacity(processhandle,32,0)
WinGet ,idvar,PID,%title%
processhandle:=DllCall("OpenProcess","Uint",0x38,"int",0,"int",idvar)
}
Soooo,
Jetzt haben wir den Process Geöffnet.
Jetzt Brauchen wir eine Addresse in die wir schreiben
lassen wir natürlich auch den anwender entscheiden
netürlich lassen wir auch eine option für ein offset
PHP Code:
WriteProcessMemory(title,address,offset)
{
VarSetCapacity(idvar,32,0)
VarSetCapacity(processhandle,32,0)
WinGet ,idvar,PID,%title%
processhandle:=DllCall("OpenProcess","Uint",0x38,"int",0,"int",idvar)
}
PHP Code:
WriteProcessMemory(title,address,offset,wert)
{
VarSetCapacity(value, 32, 0)
VarSetCapacity(idvar,32,0)
VarSetCapacity(processhandle,32,0)
NumPut(wert,value,0,Uint)
WinGet ,idvar,PID,%title%
processhandle:=DllCall("OpenProcess","Uint",0x38,"int",0,"int",idvar)
}
PHP Code:
BOOL WINAPI WriteProcessMemory(
processhandle X
addresse+offset X
Wert X
32 X
0 X
);
PHP Code:
WriteProcessMemory(title,address,offset,wert)
{
VarSetCapacity(value, 32, 0)
VarSetCapacity(idvar,32,0)
VarSetCapacity(processhandle,32,0)
NumPut(wert,value,0,Uint)
WinGet ,idvar,PID,%title%
processhandle:=DllCall("OpenProcess","Uint",0x38,"int",0,"int",idvar)
Funkvar:=DllCall("WriteProcessMemory","Uint",processhandle,"Uint",address+offset,"Uint",&value,"Uint",32,"Uint",0)
}
Und Fertig hier noch ein Beispielcode
(Wallhack für CS:S)
PHP Code:
;=============Deklarieren==========================
WriteProcessMemory(title,addresse,wert,size)
{
VarSetCapacity(idvar,32,0)
VarSetCapacity(processhandle,32,0)
VarSetCapacity(value, 32, 0)
NumPut(wert,value,0,Uint)
address=%addresse%
WinGet ,idvar,PID,%title%
processhandle:=DllCall("OpenProcess","Uint",0x38,"int",0,"int",idvar)
Bvar:=DllCall("WriteProcessMemory","Uint",processhandle,"Uint",address+0,"Uint",&value,"Uint",size,"Uint",0)
}
;===============================================
#NoTrayIcon
#SingleInstance force
Return
pruefvar=0
q::
{
if (pruefvar=0)
{
WriteProcessMemory("Counter-Strike Source",0x243AEC3C,1)
pruefvar=1
Return
}else{
WriteProcessMemory("Counter-Strike Source",0x243AEC3C,2)
pruefvar=0
Return
}
}
HOME::
ExitApp
+++
Noch nciht fertig
ReadProcessMemory und weitere Kompliziertere Bsp. kommen noch






