![]() |
CreateRemoteThread, Was, Wie und Warum anwenden?
Hallo allerseits
Schonmal danke für euere Hilfe und ja, ich habe die Forensuche und die MSDN genutzt. Also, zuallererst einmal mein Problemfall: Ich möchte in einem C++ gecodedem Spiel eine Funktion (d.h.: den Chat) aufrufen, so, dass ich z.B.: In meinem Programm einen String eingeben kann und diesen in des Spiel senden kann, so dass er dort angezeigt wird. Meine bisherigen Infos: Ich habe von einem anderem Spieler des Spiels gehört, das man dazu CreateProzessThread nutzen muss, ich habe bisher immer mit Read/WriteProzessmemory gearbeited. Was ich über CreateProzessThread weiss: Eigentlich nicht sonderlich viel, mein Englisch ist leider nicht mehr das beste und ich möchte ja keine Dll in den Prozess rein hauen, sondern eigentlich nur eine im Prozess schon vorhandene Funktion nutzen. Habe schon mehrere Seiten Google und und die MSDN mehrfach zu dem Thema durchgelesen, auch die Forensuche hab ich intensiv genutzt, aber verstehen tu ichs doch noch nicht ganz. Nun, wie funktioniert CreateProzessThread? Ist die Funktion ähnlich wie Read/WriteProzessmemory? Was mus ich von dem zu 'Hackendem' Spiel wissen (ausser den Handle)?, Falls ich Pointer brauche also wie bei Read/Write Prozessmemory die Adressen im Arbeitsspeicher, wie finde ich diese raus (TSearch, Cheatengine?) Danke für eure Hilfe und Informationen zu dem Thema Mit freundlichen Grüßen Sfaizst |
Re: CreateRemoteThread, Was, Wie und Warum anwenden?
Hmm, da so wies scheint keinen gibt, der mir mit den Infos die ich gegeben habe / mir fehlen
was anfangen oder mir wirgentwie helfen kann, bitte ich, euch mal den Folgenden code anzugucken und zu sagen, was ich denn falsch gemacht habe Es ist nur ein versuch CreateProcessThread zu nutzen, ended aber in einer AccessViolation im Zielprozess
Delphi-Quellcode:
(Mit WriteProzessMemory konnte ich so ohne große Probleme in den Prozess einen String schreiben, warum geht dies nicht so bei CreateRenoteThread?)
var
pThreadStartRoutine: Pointer; hThread, TID: Cardinal; WriteStr : array [0..10] of AnsiChar; NewStr : AnsiString; begin [...] NewStr := 'Hallo Welt'; For i := 0 to Length(NewStr) do begin WriteStr[I] := NewStr[I+1]; end; pThreadStartRoutine := ptr($4833A0); hThread := CreateRemoteThread(Pidhandle,nil,0,@pThreadStartRoutine,@WriteStr,0,TID); [...] end; Danke für eure Hilfe MfG Sfaizst |
Re: CreateRemoteThread, Was, Wie und Warum anwenden?
Zitat:
|
Re: CreateRemoteThread, Was, Wie und Warum anwenden?
Logisch oder? Der String befindet sich ja noch in deiner Anwendung und nicht im Adressraum des Zielprozesses. Guck dir mal das Beispiel DLL Injection an. Dort wird auch mittels VirtualAllocEx und WriteProcessMemory zuerst der Pfad der DLL in den Zielprozess geschrieben und dann erst ein RemoteThread auf LoadLibraryA / W mit dem Pfad als entsprechenden Parameter gestartet.
€: Und ja das @ muss auch weg .. |
Re: CreateRemoteThread, Was, Wie und Warum anwenden?
Also erstmal solltest du dir klar werden, was du überhaupt wissen willst. Mein Windows SDK kennt die Funktion CreateProcessThread nicht. Mein Windows SDK kennt nur die Funktion
![]() Und wenn du dir mal die Hilfe durchliest auch zu der anderen API-Funktion, die du immer erwähnst ![]() Um dir mal klar zu machen, was du da eigentlich fragst ein Beispiel aus dem Alltag: "Warum kann ich mit einem Korkenzieher keinen Nagel in die Wand schlagen? Mit einem Hammer habe ich das ganz einfach gekonnt." |
Re: CreateRemoteThread, Was, Wie und Warum anwenden?
Sorry, wegen CreateProcessThread, ist natürlich CreateRemoteThread,
habs ohne @ probiert und das Programm ist diesmal nicht abgestürtzt, jedoch kahm gar nichts an, also es gab im chatlogger keinerlei ausgabe Ich hoffe ich habe die Funktion wenigstens im groben verstanden, Das hier basiert auf einer Vermutung!, wie das funktioniren könnte: Was ich machen möchte ist nicht eine neue Funktion/Procedure wie eine MessageBox in den Prozess zu schreiben sondern eine bereits vorhandene Funktion des Prozesses zu nutzen, bedeuted das nun nicht, das ich direkt CreateRemoteThread nutzen kann ohne einen neuen code in den Prozess zu schreiben??? In der msdn steht ja folgendes: HANDLE WINAPI CreateRemoteThread( __in HANDLE hProcess, __in LPSECURITY_ATTRIBUTES lpThreadAttributes, __in SIZE_T dwStackSize, __in LPTHREAD_START_ROUTINE lpStartAddress, //Adresse der Funktion? __in LPVOID lpParameter, //Parameter, da dacht ich der zu sendende string? __in DWORD dwCreationFlags, __out LPDWORD lpThreadId ); MfG Sfaizst Ps.: Falls ich das alles doch ganz falsch mit dem CreateRemoteThread verstanden hab entschuldigung |
Re: CreateRemoteThread, Was, Wie und Warum anwenden?
Mit CreateRemoteThread erstellst du nur ein Thread in einem anderen Prozess. Du musst den string den du benutzen möchtest auch schreiben mittels WriteProcessMemory und dann wirst wahrscheinlich noch eine prozedur infizieren müssen damit das ordentlich ausgeführt wird.
Wenn das Spiel nicht 3D ist dann versuchs doch mal mit FindWindow/SendMessage, etc weil bei CreateRemoteThread musst du alles schreiben was du benutzen willst. |
Re: CreateRemoteThread, Was, Wie und Warum anwenden?
Zitat:
Zitat:
|
Frage geklärt, danke für eure Hilfe
Hallo,
Danke für dei Infos und eurer Hilfe, nach 3 Stunden dauerdenken hab ichs doch endlich kapiert, was ihr mir genau erzählt habt, so einige msdn und google zeilen hatts auch noch gekosted, aber dankeschön Falls interesse an der Source besteht:
Delphi-Quellcode:
Schönen Abendbegin [...] ChatPointer := VirtualAllocEx(pidHandle,0,62,(MEM_RESERVE or MEM_COMMIT), PAGE_READWRITE); WriteProcessMemory(Pidhandle,ChatPointer,@WriteStr,Length(ChatStr)+1,Write); hThread := CreateRemoteThread(Pidhandle,nil,0,VPointer,ChatPointer,0,TID); if hThread <> 0 then begin WaitForSingleObject(hThread, INFINITE); VirtualFreeEx(pidHandle, ChatPointer, 0, MEM_RELEASE); end Else VirtualFreeEx(pidHandle, ChatPointer, 0, MEM_RELEASE); end; Mit freundlichen Grüßen Sfaizst |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:30 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz