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

partoftheworlD

Пользователи+
  • Постов

    2 687
  • Зарегистрирован

  • Посещение

  • Победитель дней

    172

Весь контент partoftheworlD

  1. ? Конечно он ничего не найдет, ты ведь делаешь поиск сигнатур в ntdll модуле, а нужно выбрать модуль игры. Это во вкладке отладочные символы выбирается.
  2. Если картинка в буфере - CTRL+V, если в файле - то куда-нибудь на imgur и вставлять ссылку. Если картинок больше 1, то под спойлер.
  3. Многие игры распаковывают различные данные только после запуска, а взлом не запуская игру сравним с гаданием по солнцу с закрытыми глазами.
  4. Поиск по сигнатуре делай. ПКМ по листингу Поиск в текущем модуле -> Шаблон. Ах, да шаблон надо исправить, вместо "?" должно быть "??" Если с нуля, то ПКМ по листингу Поиск в текущем модуле -> поиск ссылок на строки
  5. Нет, это адрес указывающий на индекс команды с которой функция работает в настоящее время.
  6. Бинарное умножение на 16 В общем-то тут все достаточно просто. Начнем с того, что все игры основанные на движке квейка и имеющие мультиплеер, для одиночной игры так же поднимают локальный сервер. Но в подобной архитектуре, чтобы построить игру надо прописывать игровые команды(DVAR) задавая физику, гравитацию и много-много чего еще. С этого я и начал, нашел текстовую строку "g_speed", а дальше реверс, по ходу дела нашел функцию регистрирующую команды в памяти игры. Эти вычисления как раз регистрируют блок памяти всех значений связанных с g_speed. 0x4D1 это индекс команды g_speed. if [0x01968FE8] == 0x4D1: (0x4D1 + 0x4D1 * 4 << 4) = 0x0018150 00018150 + 0x196E010 + 10 = speed
  7. 53 55 8B 6C 24 0C 56 68 ? ? ? ? E8 ? ? ? ? A1 ? ? ? ? 8B ? ? ? ? ? 83 C4 04 3D ? ? ? ? 7C 2B 68 ? ? ? ? FF D3 68 ? ? ? ? E8 ? ? ? ? 68 ? ? ? ? 55 68 ? ? ? ? 6A 00 E8 ? ? ? ? A1 ? ? ? ? 83 C4 14 8D 34 80 C1 E6 04 81 C6 ? ? ? ? 89 ? ? ? ? ? ? 83 C0 01 F7 44 if [0x01968FE8] == 0x4D1: (0x4D1 + 0x4D1 * 4 << 4) = 0x0018150 00018150 + 0x196E010 + 10 = speed
  8. Пора про неё забыть, это инструмент наших предков, есть современная альтернатива - x64dbg
  9. Со стеком надо немного по другому работать, обычным получением значения по инструкции ничего не выйдет. В зависимости от размера кадра стека для текущей функции твое значение может быть локальной переменной. К примеру возьмем кадр стека размером 78 байт(в прологе функции можно посмотреть, сколько "выделяется" памяти под кадр инструкцией sub esp, <размер>, тогда получается так. esp = ebp - 78 является верхушкой стека ... ... ... ... esp+70 = ebp-8 = 1337 ... ... ebp = esp+78 указатель на базовый адрес стека. если же смещение превышает размер выделенного кадра, тогда это переменная из другой функции, можно даже высчитать из какой посчитав размер всех выделенных кадров.
  10. Нет, только те которые чаще всех срабатывают. Логично же, что не может инструкция рассчитывающая скорость движения срабатывать 1 раз в секунду.
  11. Желательно иметь более точную формулировку. А то не понятно, тебе нужно быстрое перемещение или быстрая скорость передвижения? Если особо не разбираешься во всяких трассировках, работе со стеком вызовов, то будет проще найти скорость передвижения. Если шаришь, то бери координаты, ставь бряк на пишущую инструкцию и смотри откуда и как рассчитывается новое значение, по ходу реверса найдешь и множители и формулы, которые рассчитывают новое значение(используя скорость передвижения) Делается за счет отключения записи координат и горячими клавишами создается перемещение по новым значениям с использованием оригинальных. Отключай коллизию. Берешь координаты, ставишь бряк на доступ и при столкновении с объектом смотришь какие новые инструкции появились.
  12. 0x40 смещение на функцию CreateDevice, в принципе подойдет любая функция принимающая в себя указатель на указатель на устройство(ppReturnedDeviceInterface)
  13. Ммм..Ты хочешь снова это обсудить? Без проблем, пиши в личку и вспомним с чего все началось и как ты размазав сопли убежал. Вспомним твое неадекватное поведение, истерики и срывы. Лучше бы ты не начинал, ведь исход уже ясен. Ты слишком много на себя берешь. Со временем прибавилась паранойя? Представляешь существует конструктивная критика с аргументами и предложениями и это действительно работает, если не устраивать срач(спор без аргументов переходящий на личности). Разбил мне сердце Никак форум не развивается, как будто обе ноги форуму отрезало после твоего ухода.
  14. А если переписать код, для того, чтобы все вычисления производились на видеокарте? Код не сложный, пара математических операций. В итоге вычисление будут быстрее раз в 20 производиться. Опять же, в этом есть смысл, если проект собирается быть долгоживущим, иначе , результат не окупит затраты на написание кода. Так же можно сделать минибазу, чтобы разбить поиск на блоки, а не перебирать все значения. Я подобное делал в GTA 5, для поиска значений работающих со скриптами и этот способ показал отличную эффективность и производительность. Задача была похожая. newGlobalPageBase = this->read<DWORD64, PBYTE*>(Global_struct + ((index >> 18 & 0x3F) << 3)) if (newGlobalPageBase != 0) { return (newGlobalPageBase + ((index & 0x3FFFF) << 3)); }
  15. 4 байта, просто занопить пишущую инструкцию.
  16. Языки с динамической типизацией сразу надо отбросить, на Python это занимало около 1-2 минут.
  17. Не, просто копипаста? tmp == 0x10000000, потому что значения никогда не бывают меньше, так что смысла от 0 до 0x10000000 перебирать нет.
  18. Предложу вот такой вариант, если кто-то сможет попробовать, то отпишитесь, что там по скорости. Tutorial-i386.CT
  19. У них может быть свой инструмент с определенной формулой, который при сброке самостоятельно константы шифрует.
  20. Можно сделать 2 скрипта, для быстрого и для точного сканирования. В первом пожертвовав точностью увеличиться скорость, достаточно сделать итератор i+=4/i+=8, скорость увеличиться в 2-4 раза. Ну, а второй точный, это то, что сейчас у тебя есть.
×
×
  • Создать...

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

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