• Как писать читы: №3 переходим в отладчик OllyDBG

    cheaton  - уроки читинга

    В этой теме мы перейдем к рассмотрению более мощного отладчика, т.к. дальнейшие уроки, будут уже проходить с ним. Итак, азы OllyDBG (мы используем версию 1.10 т.к. под нее можно найти достаточно много плагинов да и 2.0 сыровата).

    В первых двух уроках мы уже нашли ячейку памяти в которой игра записывает сумму набранных балов, нашли потом инструкцию в игре которая непосредственно отвечает за запись в эту ячейку памяти, в отладчике утилиты Cheat Engine увидели относительный адрес (или смещение) инструкции относительно модуля. Теперь для практики научимся зная относительное смещение, получать фактическое место нахождения инструкции в процессе который является нашей игрой. Можно конечно работать с относительным дальше и в OllyDbg, но все же посмотрим как получать фактический адрес инструкции.

    Включаем Косынку и потом запускаем OLLYDBG, затем в OLLYDBG нажимаем File -> Attach для того чтобы "подцепиться", у нас появляется новое окно в котором мы ищем наш процесс (sol.exe), кликаем на нем один раз, и второй клик на кнопке "Attach", расположенную ниже, и сразу как только желтенькая полоска внизу пробежала (это значит анализ байт-кода закончился, это делается чтоб в отладчике вы видели инструкции ассемблера а не только байт-код) нажимаем F9, для продолжения выполнения процесса, т.к. когда OllyDBG цепляется к процессу она его приостанавливает.

    скриншот из игры Касынка сриншот OllyDBG Чепляем процесс игры. OllyDGG остановка процесса игры.

    Вспомним - когда в Cheat Engine мы видели относительный адрес, Мы знаем что интересующая нас инструкция была написана так "sol.exe+30b8", sol.exe, это один из модулей внутри процесса.мы видели строку вида "sol.exe+30b8", что значит адрес инструкции "mov [esi+30],eax" находится на 30b8-м байте от точки начала модуля "sol.exe". Точка начала модуля sol.exe, называется базовым адресом.

    Так, мы знаем, что нам нужна инструкция "mov [esi+30],eax", в модуле "sol.exe" которая внутри него находится на 30b8-м байте. Адрес начала самого модуля, может отличаться от каждого запуска игры, загрузки системы и так далее, например в S.T.A.L.K.E.R. основной модуль который интересен, это xrEngine.dll, который очень часто меняет свой базовый адрес (точку от которой он загружается в память).

    Найдем в OllyDBG где же находится базовый адрес модуля. Для этого открываем меню View -> Executable Modules , появится окошко. Теперь находим в этом окне нужный на модуль. Вот здесь то и указан в первой колонке (Base) базовый адрес каждого модуля. Смотрим. У sol.exe он 01000000, и кликнем по нему два раза.

    Снимок экрана OllyDbg

    Появляется у нас еще одно новое окно с байт-кодом и программным кодом на языке ассемблера этого модуля:

    OllyDGG снимок экрана байт код

    Запускаем обычный Windows калькулятор, и переключаем у него вид в "Вид -> Инженерный" (Windows XP), на Windows 7
    это вид называется "Вид -> Программист" Ставим там отметку на "Hex"

    калькулятор процесс сложения базавых адресов

    Теперь плюсуем наш базовый адрес с тем относительным адресом, который мы нашли в Cheat Engine. Адрес был sol.exe+30b8, значит 1000000 + 30b8 = 10030b8
    Можем это вспомнить в уроке №2 по Cheat Engine где мы узнали как находить что же собственно изменяет значение в памяти (или посмотреть оттуда там картинку)

    И так в OLLYDBG нажимаем комбинацию клавиш Ctrl+G, и в появившемся
    окошке пишем "10030B8" (без кавычек) и жмем ОК.

    OllyDGG enter exprission to fallow

    Перед тем как кликнуть по нему два раза, нажимаем клавишу F12: Это приостановит выполнение самого процесса, чтоб не произошло моментального сбоя. Дальше два раза кликаем по строке на которую стал курсор и у нас появляется окошко. В этом окошке мы так же как и в предыдущем уроке пишем "nop" (без кавычек) т.е. ничего не делать (в Cheat Engine мы так же делали Replace with code that does nothing) и не забываем поставить галочку на Fill with NOP's (это нужно сделать потому, что инструкция mov [esi+30],eax, в байт-коде, занимает 3 байта, а инструкция nop - 1 байт, таким образом, если заменить только 1 байт, то получится неправильная инструкция, удалить "лишний" код, тоже нельзя, но можно сделать чтобы он ничего не делал, таким образом мы это и делаем), жмем кнопку Assemble.

    OllyDGG снимок экрана.

    Заходим в Косынку и пробуем прибавить себе очков...... Если не получается набить там очки, значит мы все правильно сделали. Если бы сделали неправильно, то в ячейку запись по-пержнему бы производилась, а если бы накосячили с правкой ассемблерного кода, скорее всего процесс (игра) завалилась бы с ошибкой.

    P.S. Спасибо за полученные знания Андрею ( ShadowAGT ).

    Если что не правильно написал, по правьте. Или если вам непонятно что-то, можете тут и спросить. Будем рады пообщаться, и обменяться опытом! Желающие научиться и стать разработчиками - присоединяйтесь!!!

    Весь этот урок я делал и на Windows 7 и Windows XP.Все отлично работало.
    Эта статья изначально была опубликована в теме форума: Как писать читы: №3 переходим в отладчик OllyDBG автор темы GTX7 Посмотреть оригинальное сообщение
    Комментарии 3 Комментарии
    1. Аватар для misha72008
      а как же интересно все это сохронять, в exe файлы превращать или dll я в этом ни бум бум но мне интересно очень стало и очень хочется узнать об этом больше!спасибо за статью такого еще не видел)++++++++++
    1. Аватар для Macaemy
      Код HTML:
      Включаем Косынку и потом запускаем OLLYDBG, затем в OLLYDBG нажимаем File -> Attach для того чтобы "подцепиться", у нас появляется новое окно в котором мы ищем наш процесс (sol.exe)
      В OLLYDBG у меня нет процесса косынки что делать?
      Работаю на windows 7
    1. Аватар для igorxramcov
      Цитата Сообщение от Macaemy Посмотреть сообщение
      Код HTML:
      Включаем Косынку и потом запускаем OLLYDBG, затем в OLLYDBG нажимаем File -> Attach для того чтобы "подцепиться", у нас появляется новое окно в котором мы ищем наш процесс (sol.exe)
      В OLLYDBG у меня нет процесса косынки что делать?
      Работаю на windows 7
      Запусти ollyDBG от имени администратора
  • Архив

    Май   2019
    Вс Пн Вт Ср Чт Пт Сб
    1 2 3 4
    5 6 7 8 9 10 11
    12 13 14 15 16 17 18
    19 20 21 22 23 24 25
    26 27 28 29 30 31