

partoftheworlD
Пользователи+-
Постов
2 687 -
Зарегистрирован
-
Посещение
-
Победитель дней
172
Тип контента
Профили
Форумы
Загрузки
Блоги
Весь контент partoftheworlD
-
Встраиваем C декомпилятор в CE 6.8.3
partoftheworlD прокомментировал MasterGH запись блога в Блог MasterGH
Вывод декомпилятора похож на снеговика в x64dbg. -
Отладчик выбирается до присоединения к процессу.
-
https://adblockplus.org/filters
-
Это ведь Frostbite, там все связано, просто найди координаты камеры и руками найди указатель, по ходу восстановления смещений найдешь все что нужно, только на одном из пунктов поиска будем несколько адресов, которые будут указывать на структуру игрока (Список игроков и локальная структура). Так же есть дампер классов, который для твоих целей подойдет идеально.
-
В этом ты прав. Сейчас бы хеш-функции пытаться найти в CE. Чтобы воспользоваться хешами надо хукнуть скриптовой движок, либо воспользоваться OpenVHook, в той же теме на которую ты кинул ссылку, про это написано.
-
В настройках профиля сбрось токен дискорда и заново зайди.
-
У функции есть пролог и эпилог.
-
Разобраться что ты подразумеваешь под вх, узнать принцип работы, сломать принцип работы. Любой какой нравится. Scylla, OllydumpEx
-
Просто переписываю статью с некоторыми правками, так как на данный момент она не рабочая, да и там черт ногу сломит. Сие действие будет проводить на Counter-Strike: Source, выбор игры не важен. Запускаем x64dbg, открываем файл hl2.exe, для корректного запуска стимовской версии необходимо указать аргументы командной строки: -steam -game cstrike -console -insecure Нажимаем F9, после прогрузки модуля d3d9.dll ставим бряки на: Direct3DCreate9, если игра инициализирует устройство в текущем модуле Direct3DCreate9Ex, если игра инициализирует устройство во внешнем модуле. После установки бряка перезапускаем игру, как только срабатывает бряк выходим из функции и видим откуда она вызывалась. *Немного комментов для лучшего восприятия* Теперь нам необходимо вызвать функцию CreateDevice по её индексу, для этого модифицируем: CALL DWORD PTR DS:[EAX+0x8] на CALL DWORD PTR DS:[EAX+0x40] Либо считаем руками.(Нет) После вызова [EAX+0x40] попадаем в тело функции, ставим на него бряк и перезапускаем игру. Как только сработает бряк, надо будет расширить количество аргументов до 7 в настройках соглашения о вызовах, так как нам нужен 7-й аргумент в прототипе функции CreateDeviceEx, а именно ppReturnedDeviceInterface: HRESULT CreateDeviceEx( UINT Adapter, D3DDEVTYPE DeviceType, HWND hFocusWindow, DWORD BehaviorFlags, D3DPRESENT_PARAMETERS *pPresentationParameters, D3DDISPLAYMODEEX *pFullscreenDisplayMode, IDirect3DDevice9Ex **ppReturnedDeviceInterface ); Хоба. Вот мы и нашли указатель на указатель на устройство с помощью которого можно рисовать внутри игры и которым рисует игра.
- 3 ответа
-
- 2
-
-
-
Так проверка направлена на фильтрацию статических адресов, которые реально используются, а не просто совпавший статический адрес указывающий на структуру в стеке. К примеру ищем статический адрес на 0xFEEDFACE, через сканер указателей, получаем статический адрес 0xDEADBEEF, теперь ищем этот 0xDEADBEEF, где он используется в коде. Находим такую инструкцию: mov eax, [0xDEADBEEF] Значит все хорошо, но так же, мы можем обнаружить какую-либо инструкцию, опкоды которой совпадают с указателем на 0xFEEDFACE, раз так, то отфильтровываем подобные результаты и получаем только реально работающие указатели. Вот к примеру: "mov eax, [0xDEADBE68]" A1 68BEADDE ========================== "push 0xDEADBE" 68 BEADDE00 Технически эти адреса одинаковые, но во втором случае указатель не будет работать после перезапуска, но сканер указателей покажет эти 2 случая. Да, это лечится новым сканированием после перезапуска, но не всегда перезапуск игры возможен. Хотя, возможно это уже не нужные костыли. Отлично.
-
Я думаю, можно сделать проверку, например, есть статичный адрес который был найден сканером указателей, какой-нибудь AAAAAA. Для проверки возьмем сканер сигнатур или просто поиском константы, найдем все инструкции, в которых есть адрес 0xAAAAAA и ограничим вывод результатов, фильтруя их по началу блоков, которые должны начинаться с определенных опкодов. Т.е основные, которые присваивают адреса и обычно работают со статичными адресами. По типу: B8 AAAAAA00 - mov eax, 0xAAAAAA C700 AAAAAA00 - mov [eax], 0xAAAAAA A1 AAAAAA00 - mov eax, [0xAAAAAA] ...