|
You last visited: Today at 09:38
Advertisement
C# WriteProcessMemory
Discussion on C# WriteProcessMemory within the .NET Languages forum part of the Coders Den category.
02/27/2012, 20:35
|
#1
|
elite*gold: 0
Join Date: Dec 2011
Posts: 35
Received Thanks: 123
|
C# WriteProcessMemory
Hey Leute hab nen Problem mit den schreiben von werten in den speicher ...
hier ma grob der code der damit zusammen hängt
Code:
//die eingebundene dll
[DllImport("kernel32.dll")]
static extern bool WriteProcessMemory(IntPtr hProcess, IntPtr lpBaseAddress,
byte[] lpBuffer, UIntPtr nSize, ref uint lpNumberOfBytesWritten);
// die Methode fürs Handle
Process[] Game_Processes = Process.GetProcessesByName(Settings1.Default.process);
while (Game_Processes.Length == 0)
{
Game_Processes = Process.GetProcessesByName(Settings1.Default.process);
}
Process Game = Game_Processes[0];
readHandle = OpenProcess(0x10, false, (uint)Game.Id);
writeHandle = OpenProcess(0x0008, false, (uint)Game.Id);
if (writeHandle == null)
{
MessageBox.Show("Writehandle nicht erstellt.", "Fehler!");
return;
}
//
// Und hier den teil mit dem auslesen
//
static uint size = sizeof(int);
uint rw = 0;
int value = 10000;
byte[] bytes2 = new byte[4];
bytes2 = BitConverter.GetBytes(value);
bool write;
write = WriteProcessMemory(writeHandle, (IntPtr)adress, bytes2, (UIntPtr)size, ref rw);
if (write)
MessageBox.Show("Write erfolgreich!");
else if (!write)
{
int error = Marshal.GetLastWin32Error();
MessageBox.Show(" Write Fehlgeschlagen. Errorcode: " + error.ToString(), "Fehler!");
return;
}
der compiler gibt keinen error aber die messagebox gibt immer den errorcode 0 aus weis aber leider nicht wofür der steht jemand ne id ?
|
|
|
02/27/2012, 20:45
|
#2
|
elite*gold: 0
Join Date: Jan 2011
Posts: 2,520
Received Thanks: 4,567
|
Hab deinen Code mal umgeschrieben, sollte nun funktionieren:
Code:
[DllImport("kernel32.dll", SetLastError = true)]
static extern bool WriteProcessMemory(IntPtr hProcess, int lpBaseAddress, byte[] lpBuffer, int nSize,int lpNumberOfBytesWritten);
IntPtr Handle;
[DllImport("kernel32.dll")]
static extern IntPtr OpenProcess(UInt32 dwDesiredAccess, bool bInheritHandle, int dwProcessId);
void getHandle()
{
while(Process.GetProcessesByName(Settings1.Default.process).Length == 0)
{
}
Process game = Process.GetProcessesByName(Settings.Default.process)[0];
try
{
Handle = OpenProcess(0x001F0FFF,true,game.Id);
}
catch(Exception e)
{
MessageBox.Show("Error! Exception:" + e.Message);
}
}
bool WriteMemory(IntPtr Handle,int Address,int Value)
{
try
{
byte[] btValue = BitConverter.GetBytes(Value);
return WriteProcessMemory(Handle,Address,btValue,btValue.Length,0);
}
catch(Exception e)
{
MessageBox.Show("Error! Exception:" + e.Message);
}
}
finde ich am einfachsten von Allen.
|
|
|
02/27/2012, 21:25
|
#3
|
elite*gold: 0
Join Date: Dec 2011
Posts: 35
Received Thanks: 123
|
Danke werde es gleich austesten kann ich dann handle zum lesen und schreiben nutzen ?
edit :
Jo vielen vielen Dank klapt alles =)
frage mich noch wo der fehler lag aber es klapt =)
|
|
|
02/29/2012, 22:06
|
#4
|
elite*gold: 15
Join Date: Nov 2005
Posts: 13,021
Received Thanks: 5,324
|
#moved
|
|
|
 |
Similar Threads
|
ReadProcessMemory & WriteProcessMemory blocken
12/10/2011 - C/C++ - 12 Replies
Hey, wollte fragen, wie man erkennt, wann ein externes Programm per Read- und WriteProcessMemory auf den RAM-Abschnitt von meinem Programm zugreift.
Möchte das verhindern, ist das ohne einen Treiber zu schreiben, möglich?
|
C# WriteProcessMemory brauche dringend hilfe
06/22/2011 - Off Topic - 3 Replies
Hey, also dies ist mein erstes Thema hier bei elitepvpers und ich verfolge schon seit langdem viele Themen.
Ich hoffe mein Thema passt hier irgendwo rein und wenn es hier falsch ist, entschuldgige ich mich dafür ;)
Also nun gut wie der Titel schon sagt habe ich ein Problem...
Ich weis wie ich die Pointer ( mit cheat engine ) finde und auch auslese
Memory mem = new Memory("inkball");
|
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;
|
Wie erlange ich die PID eines Prozesses für z.B. WriteProcessMemory
11/06/2008 - Coding Tutorials - 4 Replies
An die, die noch nicht wissen, wie sie ein Handle eines Prozesses erlangen, folgt hier ein kleiner Beispielquelltext .
Beispielprogramm:
.386
.model flat, stdcall
option casemap :none
include windows.inc
include kernel32.inc
include user32.inc
|
Locking WriteProcessMemory with a TickBox
06/11/2007 - General Coding - 5 Replies
This is the code for one of the buttons in my app:
Private Sub Command8_Click()
If Hooked = True Then
WriteProcessMemory ProcessHandle, &580316, 386, 2, 0&
End If
End Sub
The problem is the memory address that I write to resets itself after a while and I have to click the button again, is there anyway to lock the memory address that I write to? Or just have the code refresh itself at a set interval?
I would like to achieve this with a tick box if possible
|
All times are GMT +1. The time now is 09:40.
|
|