-
Постов
10 -
Зарегистрирован
-
Посещение
Тип контента
Профили
Форумы
Загрузки
Блоги
Сообщения, опубликованные MaGzMa
-
-
Нашёл через поиск неизвестных значений какие то странные адреса которые дают 8битные параметры. Они косвенно могут показывать определённые характеристики карты. Но я не могу не автоматически запустить на них поиск указателей (ответ 0 аддресов) Ни брейкпоинт на доступ или запись поставить. Там ничего не отражается, хотя значение в них меняется. Запись в них хранится такого рода: FF66859CFF65849B
-
Капают мои слёзки) Это делается на вкладке в CE Анализ класса/структур?
-
Нашел указатель номер расположения карты в руке с параметрами от 0 до 9. То есть в руке 10 карт и при просмотре, этот параметр ставит число от 0 до 9 в зависимости какая по счету карта в руке. Как от этого параметра можно теперь найти ид карты? В какую сторону капать?
-
Есть карточные коллекционные игры на подобии Hearthtone. Я даже где то натыкался что кто то писал под них бота который мог понимать что за карты у него в руке и играть их. (точнее в новостях что идёт война с этим ботом от метелицы) Я для фана копаюсь сейчас в похожей игре под названием ГВИНТ. Такой же жанр, куча карт. Получить простые данные из этой игры у меня получилось - к примеру сколько карт в руке или очков на столе. Интересует следующее... Как можно определить какая карта у меня в руке? Как это делают? Какие параметры нужно задавать в поиск? Или какими манипуляциями делают такой поиск. (я пробую в Cheat Engine 7.1)
-
Те что на картинке динамические, подчеркнул зелёным. Я вбивая напрямую их адрес в "Card = 0x29579798;" в скрипт из первого поста, могу получить параметр который они содержат. А вот статический ((GameAssembly.dll+2A03E88) = 7FEC9133E88), к которому кодом потом нужно будет прибавлять указатели, я считывать не умею. Какой функцией именно его можно считать? И можно ли её добавить в мой код или это уже совсем другой будет?
СпойлерЕсли я правильно понял вопрос, то тот который я могу считать адрес через С++ "0х29579798", он меньше чем 0х7FFFFFFF, но тот который не могу, он больше (GameAssembly.dll+2A03E88) = 7FEC9133E88 > 7FFFFFFF
В итоге поставил DWORD64 на переменную с адресом. При отладчике в (LPVOID)Card адрес стал теперь полностью виден. Но код всё равно не читает что по нём находится
(извиняюсь за 3 подряд поста, но кнопки удалить не вижу, а изменить быстро пропадает. В итоге понял что код читает и статические адреса, в этом проблемы нет. Проблема в том что именно тот статический адрес который мне нужен, он длиннее чем те, которые он читать может... как прочитать этот адрес? 7FEC9133E88 ? Или придётся искать указатель на более короткий?
-
Ааа, это я забыл вернуть. Там int был. Просто экспериментировал... Но и даже так он всё равно считывал адреса динамические
-
День добрый. На основании кода от 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. Не могу найти кнопки редактирования сообщения в теме которую не прошла модерацию. Поэтому создаю новую тему ознакомившись с правилами форума
Поиск в карточной игре
in Создание трейнеров в специальных студиях
Опубликовано · Изменено пользователем MaGzMa
Нашёл. Не понял как, но долго копаясь и сравнивая структуры, закономерности... ид карты теперь есть. Правда интересует теперь вопрос. Как осуществлять поиск по параметру, который показывается при наведении мышкой? Или в тот момент когда противник выбрасывает карту, она показывается в специальном месте, но это временно. Как то можно стопить игру или процесс? (то есть этот параметр только в тот момент когда я навожу на него мышкой, а что бы запустить поиск этого параметра, естественно мне нужно переместить курсор...)