Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > General Coding > Coding Tutorials
You last visited: Today at 12:36

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



[Autohotkey] Write/ReadProcessMemory

Discussion on [Autohotkey] Write/ReadProcessMemory within the Coding Tutorials forum part of the General Coding category.

Reply
 
Old   #1
 
elite*gold: 0
Join Date: Oct 2009
Posts: 16
Received Thanks: 4
[Autohotkey] Write/ReadProcessMemory

Hallo und guten Morgen|Tag|Abend,

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 ) (Version grösser als 1.80 (aktuell 1.85))
-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()
{


So nun gucken wir was MSDN zum thema WriteProcessMemory sagt

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
); 
1.
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%

So jetzt haben wir die PID aber NICHT das handle das Handle bekommen wir mit der WindowsFunktion OpenProcess.
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)

Wäre natürlich blöd wenn wir nichts in die addresse schreiben können also setzen wir auch eine wert in unsere funktion wider schön 32byte gross und da wir autohotkey verbieten sie zu "schneiden" (brauch dringend ein besseres wort dafür) müssen wir mit NumPut den wert schreiben alsooo...

PHP Code:
WriteProcessMemory(title,address,offset,wert)
{
VarSetCapacity(value320)
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)

SO nun haben wir alle Parameter die wir Brauchen hier nochmal ein Rückblick

PHP Code:
BOOL WINAPI WriteProcessMemory(     
  
processhandle           X
  addresse
+offset         X
  Wert                        X
  32                           X
  0                             X
); 
So also integrieren wir die Funktion (!!!! die addresse des wertvalue benutzen)

PHP Code:
WriteProcessMemory(title,address,offset,wert)
{
VarSetCapacity(value320)
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(value320)
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
-Raptor- is offline  
Thanks
1 User
Old 05/03/2010, 20:49   #2
 
~kau~'s Avatar
 
elite*gold: 0
Join Date: May 2009
Posts: 634
Received Thanks: 794
THX! besonders für
~kau~ is offline  
Old 05/03/2010, 21:01   #3
 
HardCore.1337's Avatar
 
elite*gold: 1
Join Date: Feb 2009
Posts: 1,726
Received Thanks: 729
Quote:
Originally Posted by kauknochen View Post
THX! besonders für
MSDN hätte haargenau das gleiche gesagt.
HardCore.1337 is offline  
Old 05/08/2010, 22:03   #4
 
~kau~'s Avatar
 
elite*gold: 0
Join Date: May 2009
Posts: 634
Received Thanks: 794
ja aber net auf deutsch xD edit lol hab 5 fehler o.O
~kau~ is offline  
Reply


Similar Threads Similar Threads
ReadProcessMemory From Lineage II
03/03/2011 - Lin2 Exploits, Hacks, Bots, Tools & Macros - 8 Replies
Hello, This is my second thread, and I hope someone can have some benefit from it. Why do this? well maybe make an status bar to display health,mana, etc or maybe you want to write data to the process, But in this article I show how to read. First of all you need to inculde some files: #include <Tlhelp32.h> to have access to:
ReadProcessMemory, C++ Problem
08/09/2010 - C/C++ - 12 Replies
Hi, ich mach mich gerade ans Memory editing in C++ aber habe nen Problem mit ReadProcessMemory. Hier mal mein Code: #include <iostream> #include <limits> #include <windows.h> using namespace std; int main()
[Request]C# ReadProcessMemory
04/18/2010 - .NET Languages - 2 Replies
Hi epvp coders I need an example for ReadProcessMemory in C# I need a full console application example that explains the ReadProcessMemory (the whole code) In deutsch Hallo epvp Codierer Ich brauche ein Beispiel für ReadProcessMemory in C # Ich brauche ein voller Konsole-Anwendung beispielsweise, dass die ReadProcessMemory (der gesamte Code erklärt)
[delphi] ReadProcessMemory
10/30/2009 - General Coding - 1 Replies
Hey guys, I don't know how to use ReadProcessMemory to get a string. Code: ReadProcessMemory(PHandle,Pointer($3B98D104),@tem ,4,Read); ...:= string(tem); This gives me an error
ReadProcessMemory Problem
07/26/2009 - General Coding - 3 Replies
I can't listing Proc. Only one uses TlHelp32 var hProcess,HandleWindow: THandle; Struct: TProcessEntry32; ProcessID,temp:cardinal; buf:pchar; begin



All times are GMT +1. The time now is 12:36.


Powered by vBulletin®
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2026 elitepvpers All Rights Reserved.