|
You last visited: Today at 09:54
Advertisement
C++ WriteProcessMemory return 998
Discussion on C++ WriteProcessMemory return 998 within the C/C++ forum part of the Coders Den category.
01/05/2014, 16:31
|
#1
|
elite*gold: 0
Join Date: Jun 2011
Posts: 149
Received Thanks: 27
|
C++ WriteProcessMemory return 998
Hi Leute,
ich habe ein Problem mit der Funktion WriteProcessMemory.
Ich bekomme immer den Fehler 998 (Acces denied).
Jedoch weiß ich nicht, was ich falsch mache.
Ich hoffe mir kann jemand helfen.
Hier mein Code:
Code:
#include <iostream>
#include <windows.h>
using namespace std;
BYTE flash[5] = { 0xE9, 0x7A, 0x01, 0x00, 0x00 };
BYTE smoke[5] = { 0xE9, 0x1E, 0x05, 0x00, 0x00 };
int main()
{
HWND fenster = NULL;
while(fenster == NULL)
{
fenster = FindWindow(NULL, "Counter-Strike Source");
Sleep(100);
}
if(!fenster)
{
cout << "There was an error: function FindWindow" << endl;
}
else
{
cout << "Counterstrike:Source wurde gefunden!" << endl;
}
DWORD prozessid;
if(!GetWindowThreadProcessId(fenster, &prozessid))
{
cout << "There was an error: function GetWindowThreadProcessId" << endl;
}
HANDLE handleprozess;
if(!(handleprozess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, prozessid)))
{
cout << "There was an error: function OpenProcess" << endl;
}
DWORD puffer = NULL;
if(!(WriteProcessMemory(handleprozess,(void*)(0x5D6AD38E),&flash,sizeof(flash),&puffer)))
{
cout << "There was an error: function WriteProcessMemory" << endl;
}
cout << GetLastError() << endl;
CloseHandle(handleprozess);
cin.get();
return 0;
}
|
|
|
01/08/2014, 14:08
|
#2
|
elite*gold: 1091
Join Date: Jun 2007
Posts: 19,836
Received Thanks: 7,180
|
Quote:
|
Originally Posted by MSDN
PROCESS_ALL_ACCESS
All possible access rights for a process object.
Windows Server 2003 and Windows XP: The size of the PROCESS_ALL_ACCESS flag increased on Windows Server 2008 and Windows Vista. If an application compiled for Windows Server 2008 and Windows Vista is run on Windows Server 2003 or Windows XP, the PROCESS_ALL_ACCESS flag is too large and the function specifying this flag fails with ERROR_ACCESS_DENIED. To avoid this problem, specify the minimum set of access rights required for the operation. If PROCESS_ALL_ACCESS must be used, set _WIN32_WINNT to the minimum operating system targeted by your application (for example, #define _WIN32_WINNT _WIN32_WINNT_WINXP). For more information, see Using the Windows Headers.
|
Könnte ne Lösung sein, ansonsten mal bei WriteProcessMemory schauen ob da etwas diesbezüglich angegeben wurde.
|
|
|
01/08/2014, 14:15
|
#3
|
elite*gold: 0
Join Date: Feb 2011
Posts: 1,206
Received Thanks: 736
|
Quote:
sicher, dass die adresse da zu dem zeitpunkt an dem du das programm ausführst beschreibbar ist?
sieht mir stark nach einer dynamischen dll-adresse aus die sich bei jedem spielstart ändert.
|
|
|
01/08/2014, 20:10
|
#4
|
elite*gold: 0
Join Date: Mar 2010
Posts: 519
Received Thanks: 155
|
Quote:
Originally Posted by Dr. Coxxy
sicher, dass die adresse da zu dem zeitpunkt an dem du das programm ausführst beschreibbar ist?
sieht mir stark nach einer dynamischen dll-adresse aus die sich bei jedem spielstart ändert.
|
Quote:
|
LoadLibrary failed with error 998: Unzulässiger Zugriff auf einen Speicherbereich
|
Man kann nicht so einfach bei CSS am Spiel rumbasteln.
|
|
|
01/08/2014, 20:58
|
#5
|
elite*gold: 0
Join Date: Feb 2011
Posts: 1,206
Received Thanks: 736
|
Quote:
Originally Posted by ccommander
Man kann nicht so einfach bei CSS am Spiel rumbasteln.
|
was hast du denn geraucht?
|
|
|
01/08/2014, 21:16
|
#6
|
elite*gold: 0
Join Date: Jun 2011
Posts: 149
Received Thanks: 27
|
Die Adresse ist Statisch.
Ist bei jedem Game neustart gleich.
Habe ich ca. 3-5 mal getestet. Auch bei PC Neustart ist die Adresse gleich.
Wenn ich die Adresse mithilfe von OllyDBG ändere, funktioniert auch alles super.
Nur die WriteProcessMemory will nicht funktionieren.
In der MSDN steht auch nichts dazu, wie man diesen Fehler beheben könnte.
Es wird nur ACCES_DENIED angegeben.
|
|
|
01/08/2014, 21:18
|
#7
|
elite*gold: 0
Join Date: Feb 2011
Posts: 1,206
Received Thanks: 736
|
mal mit virtualprotectex schreibrechte setzen.
Btw. vac detected was du da machst.
|
|
|
01/08/2014, 21:22
|
#8
|
elite*gold: 0
Join Date: Jun 2011
Posts: 149
Received Thanks: 27
|
Nicht VAC Protectet. VAC sichert ja nur auf Servern ab, und nicht im Spielmenü.
Wenn man im Spielmenü änderungen vornimmt, sieht VAC das als "Normal" an und beschwert sich nicht. Wenn man jedoch wärend des Spiels etwas ändert, merkt VAC das ganze.
Quote:
Originally Posted by Mostey
Könnte ne Lösung sein, ansonsten mal bei WriteProcessMemory schauen ob da etwas diesbezüglich angegeben wurde.
|
Hab mir das ganze nochmal genauer durchgeschaut.
Und genau das ist es.
mit
#define _WIN32_WINNT _WIN32_WINNT_WIN7
funktioniert alles
Danke für die hilfe
|
|
|
01/09/2014, 05:25
|
#9
|
elite*gold: 0
Join Date: Feb 2011
Posts: 1,206
Received Thanks: 736
|
Quote:
Originally Posted by xX.Slayer.Xx
Nicht VAC Protectet. VAC sichert ja nur auf Servern ab, und nicht im Spielmenü.
Wenn man im Spielmenü änderungen vornimmt, sieht VAC das als "Normal" an und beschwert sich nicht. Wenn man jedoch wärend des Spiels etwas ändert, merkt VAC das ganze.
|
nein, tut es nicht, enjoy your free vac ban.
|
|
|
 |
Similar Threads
|
WriteProcessMemory
08/06/2013 - C/C++ - 5 Replies
Hey, also ich versuche schon seit paar Stunden den Wert von einem Base Pointer eines anderen Prozesses via writeProcessMemory zu ändern, aber aus irgendein Grund funktioniert dies nicht.
Code:
GetWindowThreadProcessId(hWnd, &prog_id);
HANDLE hprog = OpenProcess(PROCESS_ALL_ACCESS, false, prog_id);
float valueY;
ReadProcessMemory(hprog, (LPVOID)(PointerY), &PointedY, 4, NULL);
PointedY = PointedY+OFFY;
|
WriteProcessmemory?
09/13/2012 - C/C++ - 3 Replies
Mal ne frage.
Kann es sein dass Cheat Engine etwas besonderes macht um werte zu ändern?
Habe einen wert der überprüft wird.
Wenn ich ihn über c++ oder autoit change wirds bemerkt.
Wenn ich den wert mit cheat engine ändere wirds nicht bemerkt.
Bin grad bissle verwundert.
Hab Processopen alle rechte gegeben.
|
WriteProcessMemory
07/11/2012 - C/C++ - 4 Replies
HeyHo,
Ich wollte ein Autoit Script in C++ umwandeln doch leider klappt das nicht so
wie ich will ...
Autoit Code ::
$Adresse = 0x00477786
$Prozess = _memoryopen(ProcessExists("NostaleX.dat" ))
|
C# WriteProcessMemory
02/29/2012 - .NET Languages - 3 Replies
Hey Leute hab nen Problem mit den schreiben von werten in den speicher ...
hier ma grob der code der damit zusammen hängt
//die eingebundene dll
static extern bool WriteProcessMemory(IntPtr hProcess, IntPtr lpBaseAddress,
byte lpBuffer, UIntPtr nSize, ref uint lpNumberOfBytesWritten);
|
help on Writeprocessmemory
10/07/2009 - General Coding - 8 Replies
#include <Windows.h>
#include <iostream>
using namespace std;
#define EngineUpgrade_Addr 0x2F7EDDC8
#define EngineUpgrade_Value 1000
const SIZE_T EngineUpgrade_Size = sizeof(EngineUpgrade_Value);
SIZE_T EngineUpgrade_Sent = 0;
|
All times are GMT +1. The time now is 09:54.
|
|