writeer Опубликовано 20 декабря, 2019 Поделиться Опубликовано 20 декабря, 2019 (изменено) пытаюсь прочить int из процесса но всегда буфер с байтами пустой Спойлер using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Runtime.InteropServices; using HackProcess; namespace MemoryTest { class Program { static Process process; static void Find(string name) { var plist = Process.GetProcesses(); foreach (var Pprocess in plist) { if (Pprocess.ProcessName == name) { process = Process.GetProcessById(Pprocess.Id); return; } } } static void Main(string[] args) { Find("test"); HackP.Setproc(process); var add = 0x5591B7E388; while (true) { var iint = HackP.ReadInt(add); Console.WriteLine(iint); string s = Console.ReadLine(); if(s == "exit") { return; } } } } } та самая dll"ка Спойлер using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Runtime.InteropServices; namespace HackProcess { public class HackP { [DllImport("kernel32.dll", SetLastError = true)] public static extern IntPtr OpenProcess(int processAccess, bool bInheritHandle, int processId); [DllImport("kernel32.dll", SetLastError = true)] static extern bool ReadProcessMemory(IntPtr hProcess,IntPtr lpBaseAddress,[Out] byte[] lpBuffer,int dwSize,out IntPtr lpNumberOfBytesRead); static Process Proc; static byte[] buffer = new byte[] { }; static IntPtr handel; public static void Setproc(Process proc) { Proc = proc; handel = OpenProcess(); } public static IntPtr OpenProcess() { return OpenProcess(0x001F0FFF, false, Proc.Id); } public static IntPtr Read(long addres,int byteread) { IntPtr bytereads; ReadProcessMemory(handel, (IntPtr)addres, buffer, byteread, out bytereads); return bytereads; } public static int ReadInt(long addres) { Read(addres, 4); if (buffer.Length != 0) { return BitConverter.ToInt32(buffer, 0); } else { return 0; } } } } Изменено 21 декабря, 2019 пользователем Xipho Большие куски кода необходимо не только выделять специальным тегом, но и убирать под спойлер. Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 21 декабря, 2019 Поделиться Опубликовано 21 декабря, 2019 Ты создаешь буфер нулевой длины. Выдели хотя бы 4 байта, и посмотри, что будет. Ну и в целом код бы переписать. Что будет, если ты на основе этого кода параллельно будет считывать значения из других адресов? У тебя буфер статичный, и он один. И постоянно будет перетираться, это не дело. Ссылка на комментарий Поделиться на другие сайты Поделиться
writeer Опубликовано 21 декабря, 2019 Автор Поделиться Опубликовано 21 декабря, 2019 4 часа назад, Xipho сказал: Ты создаешь буфер нулевой длины. Выдели хотя бы 4 байта, и посмотри, что будет. Ну и в целом код бы переписать. Что будет, если ты на основе этого кода параллельно будет считывать значения из других адресов? У тебя буфер статичный, и он один. И постоянно будет перетираться, это не дело. Спасибо помогло. Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения