На нашем форуме вы можете получить приватный чит для игры Euro Truck Simulator 2. Подробности по ссылке ниже:
Тема с читом на Euro Truck Simulator 2
Авторизация  
MaGzMa

Получение значения от статического адреса процесса

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

День добрый. На основании кода от imaginary в Получение значения от статического адреса процесса

Спойлер

#include <Windows.h>
#include <TlHelp32.h>
#include <iostream>


using namespace std;

int GetProcesByName(wstring name)

{
	HANDLE snapShot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
	PROCESSENTRY32 pInfo = { 0 }; pInfo.dwSize = sizeof(PROCESSENTRY32);
	
	while (Process32Next(snapShot, &pInfo))
	{
		if ( pInfo.szExeFile == name)
		{
			CloseHandle(snapShot);
			return pInfo.th32ProcessID;
		}
	}
	CloseHandle(snapShot);
	return 0;
}
	

int main() {
	
	int pID = GetProcesByName(L"calculator.exe");
	cout << pID ;
	return 0;
}

 

немного добавив пару строк для чтения адреса

Спойлер

#include <Windows.h>
#include <TlHelp32.h>
#include <iostream>
#include <string>

DWORD pid;
long int Card = 0x7FEC9133E88;
int MyCard;

using namespace std;

int GetProcesByName(wstring name)

{
    HANDLE snapShot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
    PROCESSENTRY32 pInfo = { 0 }; pInfo.dwSize = sizeof(PROCESSENTRY32);

    while (Process32Next(snapShot, &pInfo))
    {
        if (pInfo.szExeFile == name)
        {
            CloseHandle(snapShot);
            return pInfo.th32ProcessID;
        }
    }
    CloseHandle(snapShot);
    return 0;
}


int main() {

    int pID = GetProcesByName(L"Gwent.exe");
    HANDLE pHandle = OpenProcess(PROCESS_VM_READ, FALSE, pID);
    ReadProcessMemory(pHandle, (LPVOID)Card, &MyCard, sizeof(MyCard), 0);

    cout << MyCard;

    return 0;
}

Итог, любой динамический адрес который состоит из 8 цифр читать получается. Но если я пытаюсь прочесть статический GameAssembly.dll+2A03E88  или он же 7FEC9133E88 то данным кодом не получается. Как мне прочесть этот адрес? Подскажите пожалуйста. PS. Не могу найти кнопки редактирования сообщения в теме которую не прошла модерацию. Поэтому создаю новую тему ознакомившись с правилами форума

Изменено пользователем MaGzMa

Поделиться сообщением


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

адрес 8 байт, а sizeof(long int)?

Поделиться сообщением


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

Ааа, это я забыл вернуть. Там int был. Просто экспериментировал... Но и даже так он всё равно считывал адреса динамические

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
10 часов назад, MaGzMa сказал:

Но и даже так он всё равно считывал адреса динамические

адреса меньше 7FFFFFFF?

Поделиться сообщением


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

Те что на картинке динамические, подчеркнул зелёным. Я вбивая напрямую их адрес в "Card = 0x29579798;" в скрипт из первого поста, могу получить параметр который они содержат. А вот статический ((GameAssembly.dll+2A03E88) = 7FEC9133E88), к которому кодом потом нужно будет прибавлять указатели, я считывать не умею. Какой функцией именно его можно считать? И можно ли её добавить в мой код или это уже совсем другой будет?

Спойлер

Если я правильно понял вопрос, то тот который я могу считать адрес через С++ "0х29579798", он меньше чем 0х7FFFFFFF, но тот который не могу, он больше  (GameAssembly.dll+2A03E88) = 7FEC9133E88 > 7FFFFFFF

 

В итоге поставил DWORD64 на переменную с адресом. При отладчике в (LPVOID)Card адрес стал теперь полностью виден. Но код всё равно не читает что по нём находится

 

(извиняюсь за 3 подряд поста, но кнопки удалить не вижу, а изменить быстро пропадает. В итоге понял что код читает и статические адреса, в этом проблемы нет. Проблема в том что именно тот статический адрес который мне нужен, он длиннее чем те, которые он читать может... как прочитать этот адрес? 7FEC9133E88 ? Или придётся искать указатель на более короткий? 

Изменено пользователем MaGzMa

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
5 часов назад, MaGzMa сказал:

(извиняюсь за 3 подряд поста, но кнопки удалить не вижу, а изменить быстро пропадает. В итоге понял что код читает и статические адреса, в этом проблемы нет. Проблема в том что именно тот статический адрес который мне нужен, он длиннее чем те, которые он читать может... как прочитать этот адрес? 7FEC9133E88 ? Или придётся искать указатель на более короткий? 

компилишь какой версии 32bit или 64bit? предоставленный winapi 32bit, не может полностью контачить с 64bit.

Изменено пользователем Hack

Поделиться сообщением


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

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Предпросмотр
Авторизация