|
0 / 0 / 0
Регистрация: 01.10.2015
Сообщений: 23
|
|
Трейнер для DMA игры01.10.2015, 06:04. Показов 2839. Ответов 15
Метки нет (Все метки)
Приветствую.
Имеется игра с динамическими адресами. Все указатели уже найдены. Начало (ArtMoney) указывает на модуль игры glk.exe и адрес модуля 358CA0. Получается glk.exe + 358CA0 Каким образом записать это в дельфи код? (не знаю как записать модуль)
0
|
|
| 01.10.2015, 06:04 | |
|
Ответы с готовыми решениями:
15
Работа с адресами (трейнер) Для каждой игры определить словесный результат игры (выигрыш, проигрыш или ничья) Трейнер для игры |
|
446 / 374 / 133
Регистрация: 09.09.2011
Сообщений: 1,346
|
|
| 01.10.2015, 23:41 | |
|
Более понятно опишите проблему. Что вы в итоге хотите сделать? какой код вам нужно записать?
0
|
|
|
39 / 39 / 11
Регистрация: 05.09.2015
Сообщений: 262
|
|
| 01.10.2015, 23:52 | |
|
OpenProcess() | ReadProcessMemory() | WriteProcessMemory() ?
0
|
|
|
0 / 0 / 0
Регистрация: 01.10.2015
Сообщений: 23
|
|
| 02.10.2015, 05:22 [ТС] | |
|
Ок, спасибо, что откликнулись, опишу подробно.
Вот структура: 1) "glk.exe + 358CA0" = 10D2CA0 (Получили адрес указателя) 2) 10D2CA0 = 0B960EC0 + 148 = B961008 ( Считали из 10D2CA0 указатель, добавили смещение 148 и получили финальный адрес B961008, значение которого равно 100) В случае нахождения адреса из простого указателя все просто: ReadProcessMemory(HandleWindow,ptr($10D2 CA0),Addr(Pointer1),4,read); ReadProcessMemory(HandleWindow,ptr(Point er1+$148),Addr(FinAdress),4,read); Проблема в том, что я не знаю как считать с помощью дельфи кода "glk.exe + 358CA0", в котором содержится указатель на 10D2CA0. Пробовал подставлять вместо glk.exe HandleWindow и ThreadId, но не получилось. (что логично) Никак не могу найти решение, просьба помочь
0
|
|
|
446 / 374 / 133
Регистрация: 09.09.2011
Сообщений: 1,346
|
|
| 02.10.2015, 10:58 | |
|
я конечно не знаком с жаргоном людей занимающихся исследованием памяти запущенных процессов, но для обычного человека - glk.exe - это имя файла (ваш К.О.) и от него отсчитывать смещения в оперативной памяти невозможно (ваш К.О. x2), смещение можно отсчитывать, только от другого, уже известного, адреса памяти (К.О. x3!!! bingo!).
Очевидно, под glk.exe - понимается одна из известных "точек" процесса, которую легко найти в памяти процесса, например начало сегмента данных, начало сегмента кода, вершина стека процесса, entry point процесса, начало "кучи" ит.д. кроме того есть еще понятие IMAGE_BASE процесса (не уверен что это здесь применимо). Для решение Вашей проблемы, я вижу 3 возможности: 1. ждать пока в тему зайдет человек, который владеет той же понятийной системой - и для которого glk.exe это понятное место в запущенном процессе. И тогда он Вам может подсказать. 2. Вы спросите про это у человека, который Вам указал на конкретное смещение - я уверен, что этот человек не Вы и он точно знает от чего он отсчитывал смещение. 3. маловероятный - исходя из цитаты: "я не знаю как считать с помощью дельфи кода "glk.exe + 358CA0" ", Вы возможно знаете как это сделать без делфи. Расскажите как Вы это делаете и мы подскажем, как это реализовать в делфи!
0
|
|
|
0 / 0 / 0
Регистрация: 01.10.2015
Сообщений: 23
|
|
| 02.10.2015, 11:20 [ТС] | |
|
Да, glk.exe это и есть имя файла.
Мне на смещения указал я сам, путем поиска указателей ![]() Вообще, в игре нужно найти аж три указателя, чтобы выйти на финальный адрес. Если открыть процесс glk.exe в дельфи, то по адресу 358CA0 ничего не содержится. То есть я нахожу сначала динамический адрес, потому постепенно, указатель за указателем подхожу к статическому адресу, который обозначен как "glk.exe + 358CA0". Все предыдущие указатели выглядят нормально, обычный адрес, к примеру 10D2CA0. А в этом случае добавился еще и glk.exe. Если посмотреть память в ассемблере, то там можно найти точно такой же указатель "glk.exe + 358CA0". Если ввести этот указатель (прямо с именем файла) в ArtMoney или CheatEngine, то они понимают его и сразу же считывают из него следующий указатель.
0
|
|
|
446 / 374 / 133
Регистрация: 09.09.2011
Сообщений: 1,346
|
||
| 02.10.2015, 12:33 | ||
|
Как Вы искали указатели??? Правильно ли я понимаю, что исходного кода glk.exe у Вас нет?
0
|
||
|
0 / 0 / 0
Регистрация: 01.10.2015
Сообщений: 23
|
|
| 02.10.2015, 12:44 [ТС] | |
|
Конечно исходного кода нет, я просто смотрю, что обращается к этому динамическому адресу, и нахожу статическое обращение.
358CA0, да это смещение, и ничего не содержит. Я просто подробно объяснил на всякий случай. Мне просто нужно вставить ReadProcessMemory(HandleWindow,ptr(СЮДА),Addr(Pointer1),4,read); вот это "glk.exe + 358CA0" Проще не знаю как..
0
|
|
|
446 / 374 / 133
Регистрация: 09.09.2011
Сообщений: 1,346
|
|
| 02.10.2015, 12:54 | |
|
Подозреваю - что под glk.exe у Вас понимается EntryPoint
0
|
|
|
446 / 374 / 133
Регистрация: 09.09.2011
Сообщений: 1,346
|
|
| 02.10.2015, 13:16 | |
|
ну смотри, вот я открыл свои программу в дебаггере OllyDB
Я открыл окно "Executable modules" и вижу, что адрес EntryPoint моего процесса 005522300. Как его найти? - При создании exe-файла (да и dll) в PE заголовок прописывается IMAGE_BASE - адрес куда будет загружен модуль (начиная с PE заголовка). В lazarus/freepascal IMAGE_BASE=00400000 (для 32 bit) в delphi не знаю какой image_base. Дальше в PE заголовке прописано смещение до входной точки, в моем случае это 152300, это смещение от IMAGE_BASE, т.е. получается 00400000 + 152300 = 00552300 нашего процесса. Таким образом адрес EntryPoint можно узнать, просто проанализировав PE заголовок (его формат описан и наверняка уже есть готовые функции для его разбора). Далее, берете рассчитанный EntryPoint прибавляете смещение и пробуете туда писать.
0
|
|
|
0 / 0 / 0
Регистрация: 01.10.2015
Сообщений: 23
|
|
| 02.10.2015, 16:12 [ТС] | |
|
Уже ближе, спасибо
![]() image base как раз то, что нужно. Его можно узнать с помощью PE Tools. Однако он каждый раз другой. Как с помощью дельфи прочитать image base?
0
|
|
|
446 / 374 / 133
Регистрация: 09.09.2011
Сообщений: 1,346
|
|
| 05.10.2015, 13:41 | |
|
Ну вообще пишут, что IMAGE_BASE более менее стандартный, и что только при редких случаях (например если по этому адресу/ам отображается какая то системная библиотека) то загрузчик может в другое место образ загрузить с пересчетом всех адресов.
Посмотри внимательно - действительно ли у тебя IMAGE_BASE меняется каждый раз? Добавлено через 1 минуту вот интересная дискуссия по этому поводу на стэковерфлоу - ищи по такой строчке в гугле: How can I get a process entry point address - Stack Overflow только читай до самого низа, а то в начале вроде не верное решение предлагают.
0
|
|
|
0 / 0 / 0
Регистрация: 01.10.2015
Сообщений: 23
|
||||||
| 05.10.2015, 14:05 [ТС] | ||||||
|
Да, image base меняется каждый раз.
Кое как нашел рабочую функцию на зарубежном форуме. В интернете было много пустышек, которые не работают. Трейнер завершен, флай хак работает отлично. Оставлю функцию здесь, уверен кому нибудь пригодится. (Необходимо подключить библиотеку TlHelp32)
0
|
||||||
|
0 / 0 / 0
Регистрация: 25.06.2016
Сообщений: 5
|
|
| 31.08.2016, 09:31 | |
|
А как сделать, чтобы и для x64 битных игр работало?
0
|
|
|
90 / 3 / 0
Регистрация: 05.03.2013
Сообщений: 36
|
||||||||||||||||||||||||||
| 31.08.2016, 17:38 | ||||||||||||||||||||||||||
|
Могу предложить вариант побыстрее, обращение напрямую, а не через рид и врайт мемори.
1. Открываем Delphi и создаем новый проект. File => New => Other... => Dynamic-link Library 2. Добавим основную форму, где будем работать в дальнейшем. В окне "Project Manager" ПКМ по "Project1.dll" => "Add New" => "VCL Form" => "Yes". 3. В uses пихаем
Запускаем этот поток, добавив выше переменную
Кликните здесь для просмотра всего текста
library DLL_Cheat;
{ Important note about DLL memory management: ShareMem must be the first unit in your library's USES clause AND your project's (select Project-View Source) USES clause if your DLL exports any procedures or functions that pass strings as parameters or function results. This applies to all strings passed to and from your DLL--even those that are nested in records and classes. ShareMem is the interface unit to the BORLNDMM.DLL shared memory manager, which must be deployed along with your DLL. To avoid using BORLNDMM.DLL, pass string information using PChar or ShortString parameters. } uses System.SysUtils, System.Classes, Windows, Forms, Unit1 in 'Unit1.pas' {Form1}; {$R *.res} var dwTemp: DWORD; procedure MainThread; stdcall; begin Form1 := TForm1.Create(nil); Form1.ShowModal; end; begin CreateThread(nil,dwTemp,@MainThread,nil, dwTemp,dwTemp); end. Для обращения к памяти используем
Ну а дальше, дело только за инжектом или прокси длл
0
|
||||||||||||||||||||||||||
| 31.08.2016, 17:38 | |
|
Помогаю со студенческими работами здесь
16
Трейнер для игры: использование статичного указателя Трейнер для Mount and Blade Warband USART2(RX+IDLE+DMA)+USART3(TX DMA) STM32F4Discovery - ADC DMA и FSMC DMA Сборка ПК "для себя" - игры, игры, игры! Киев, бюджет 8300 грн с монитором. Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . .
а удачный момент так и не приходит.
|
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица.
Задача: зафиксировать три левых колонки в отчете.
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
/ / . . .
|
Настройки VS Code
Loafer 13.04.2026
{
"cmake. configureOnOpen": false,
"diffEditor. ignoreTrimWhitespace": true,
"editor. guides. bracketPairs": "active",
"extensions. ignoreRecommendations": true,
. . .
|
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2.
Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива.
Было так:. . .
|
|
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: реализовать контроль корректности заполнения дат назначения. . .
|
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html
Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
|
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
|
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях.
Задача: при копировании документа очищать определенные реквизиты и табличную. . .
|