Laden...

Wert aus fremder Speicheradresse abrufen

Erstellt von Qweide vor 8 Jahren Letzter Beitrag vor 8 Jahren 1.565 Views
Q
Qweide Themenstarter:in
8 Beiträge seit 2015
vor 8 Jahren
Wert aus fremder Speicheradresse abrufen

Hallo,

Ich möchte die Koordinaten eines Charakters aus einem Spiel in meinem Programm verwenden. Die Adressen der Koordinaten kenne ich bereits.
Wie kann ich die Werte aus den Adresse abrufen und verarbeiten?
Ich weiß, dass das irgendwie mit Pointern geht, aber wie genau weiß nicht nicht. Ich hoffe, jemand kann mir helfen.

J
251 Beiträge seit 2012
vor 8 Jahren
Q
Qweide Themenstarter:in
8 Beiträge seit 2015
vor 8 Jahren

Danke erstmal für die Antwort. Nachdem ich mir die Links angeschaut habe, habe ich folgendes Konstrukt zusammen gebaut:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;
using System.Runtime.InteropServices;
using System.Windows.Forms;

namespace Reader
{
    class Scanner
    {
        [DllImport("Kernel32.dll")]
        static extern bool ReadProcessMemory(IntPtr hProcess, IntPtr lpBaseAddress, byte[] lpBuffer, UInt32 nSize, ref UInt32 lpNumberOfBytesRead);

        unsafe public static string[] getCharValues()
        {
            try
            {
                Process[] pr = Process.GetProcessesByName("Prozess.exe");
                Process process = pr[0];
                uint baseAdress = (uint)process.MainModule.BaseAddress.ToInt32();
                uint o = 0;
                byte[] ret = new byte[10];
                ReadProcessMemory(process.Handle, (IntPtr)(process.MainModule.BaseAddress+0x156CC38), ret, (UInt32)ret.Length, ref o);
                return new string[] { BitConverter.ToSingle(ret, 0).ToString() };
            }
            catch(IndexOutOfRangeException)
            {
                MessageBox.Show("Prozess ist vermutlich nicht geöffnet");
                return new string[] {""};
            }
        }
    }
}

Der Rückgabewert der Methode wird nach deren Ausführung in eine Textbox geschrieben. Dieser Wert ist jedoch immer 0. Cheat Engine zeigt mir den richtigen Wert an.

W
196 Beiträge seit 2008
vor 8 Jahren

Du solltest versuchen, mit dem Debugger genauer einzugrenzen, wo das Problem auftritt. So ist es ziemlich schwierig, was konstruktives beizutragen...