Перейти к содержанию

12-и значный адрес указателя [Трейнер на c#]


Рекомендуемые сообщения

Гость NeoProgrammer

Здравствуйте!
Я нашёл указатель, он оказался таким:
 

Скрытый текст

IOSQiQ24t78.jpg

Мне надо написать трейнер на c#, по указателю найти адрес и с ним работать.
Но этот указатель слишком большой и не  вмещается в int, а необходим именно этот тип, потому что IntPtr, не работает с Int64 или long.
Вот код, который использую:

Скрытый текст

      private void button1_Click(object sender, EventArgs e)
        {
            GetProcess("game");
            int address1337 = 0x7FF71E258080; //Указатель, здесь ошибка, адрес не вмещается в int.
            var offset = new Int32[] {0x488, 0x8, 0x58, 0x20, 0x30 }; // Смещение
           
            //Получение адреса, по указателю
            var addGlavn = Convert.ToString(ReadPointer(address1337, offset),16); // Читаем указатель, производим смещения, конвертируем в HEX
        }
      public void GetProcess(string name) // Получаем процесс
        {
            var pList = Process.GetProcesses();
            if (pList.Length != 0)
            {
                foreach (var process in pList)
                {
                    if (process.ProcessName.Equals(name))
                    {
                        pID = process.Id;
                        MessageBox.Show("Есть процесс");
                        return;
                    }
                }
            }
            return;
        }
       public int ReadPointer(int addr, Int32[] of)
        {
            for (var i = 0; i < of.Length; i++)
            {
                addr = BitConverter.ToInt32(ReadMemory((IntPtr)addr, 4),0)+of[i];
               
            }
            return addr;
        }

        public byte[] ReadMemory(IntPtr address, int size)
        {
            byte[] byffer = new byte[size];
            IntPtr bytesRead = IntPtr.Zero;
            IntPtr handle = OpenProcess(ProcessAccessFlags.All, false, pID);
            ReadProcessMemory(handle, address, byffer, size, out bytesRead);
            CloseHandle(handle);
            return byffer;
        }

 

Помогите пожалуйста, обрыскал интернет, ничего дельного не нашёл!
Трейнер пишется основываясь на этих двух уроках:

Скрытый текст

 

 

 

Ссылка на комментарий
Поделиться на другие сайты

Указатели да и любые адреса используют WORD(2 байта) ,DWORD(4 байта), либо QWORD/DWORD64(8 байт),.

 

Можешь про типы почитать на msdn

Изменено пользователем partoftheworlD
  • Плюс 1
Ссылка на комментарий
Поделиться на другие сайты

Гость NeoProgrammer
1 час назад, partoftheworlD сказал:

Указатели да и любые адреса используют WORD(2 байта) ,DWORD(4 байта), либо QWORD/DWORD64(8 байт),.

 

Можешь про типы почитать на msdn

А какую функцию использовать, чтобы прочитать адрес указатель такого вида?

7FF71E258080

 

Я пытался все преобразовать в Int64, но выдаёт такую ошибку
 

Скрытый текст

aeX88Y47zYg.jpg

 

Изменено пользователем NeoProgrammer
Ссылка на комментарий
Поделиться на другие сайты

Зачем вообще преобразовывать? QWORD/DWORD64 это и есть 0х7FF71E258080

и 

var offset = new DWORD[] {0x488, 0x8, 0x58, 0x20, 0x30 };

 

На C++ с x64 приложениями ReadProcessMemory не хотел работать, пришлось использовать NtWow64QueryInformationProcess64, NtWow64ReadVirtualMemory64, чтобы получить процесс использовал IsWow64Process.

Изменено пользователем partoftheworlD
Ссылка на комментарий
Поделиться на другие сайты

  • 2 недели спустя...
  • 9 месяцев спустя...

скопируй его, в CE открой "Редактор Памяти"(кнопка над списком твоих адресов), 

кликни правой кнопкой мыши по байтам зелёного цвета(нижняя часть экрана),

перейти по адресу, вставляешь свой, жмёшь подтвердить

в списке адресов твой будет самый верхний,

копируешь его, добавляешь 0x и всё

Ссылка на комментарий
Поделиться на другие сайты

×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.