Написание cheat-программ для online игр

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by LooseURmind, 22 Jul 2011.

  1. LooseURmind

    LooseURmind New Member

    Joined:
    20 Jul 2011
    Messages:
    4
    Likes Received:
    3
    Reputations:
    0
    Изучение будет производиться на примере Online Free MM0RPG RF Online.

    Сию статью я представляю вашему вниманию для ознакомительных целей, так как большинство людей пользуются чит-программами(алсо - читы, трейнеры, патчи), но подавляющие большинство не понимают как это устроено и почему оно работает...

    Руководство не рассчитано на школоту и паразитов, по-этому вам понадобятся некоторые знания, а именно:

    • Знания языков программирования, а именно Delphi (т.к. писать такие программы на C++ - верх извращения) или активное использование g00gl'a (если есть голова на плечах)
    • Знать, что такое редактирование памяти игр через ArtMoney/CE (или курить мануалы на RU для первого и на ENG для второго)
    • Знать, что такое 16-ричная система и уметь переводить между системами

    Немного теории:


    Чит-программы/трейнеры – это программы, которые позволяют использовать баг более адекватно и быстро(те же хоткеи). В природе известны таких видов как:
    • Пакетные(использование TCP/IP пакетов для отправки на сервер или клиент модифицированных данных(Wpe pro, WPF)
    • Memory-edit баги(модификация значений в памяти клиента),
    • Файловые баги(модификация файлов клиента)
    • Текстурные баги(в нашей подопытной игре их более чем тонны)
    • Баги игрового клиента
    Читающие, надеюсь, люди не глупые и разжевывать ничего не надо.
    Нас интересуют только Memory баги. Точнее я бы сказал это не баги, это тупо изменение памяти клиента в корыстных целях :)

    Копипаста:

    На этом, пожалуй, закончим теорию... теории в интернете тьма... пользуйтесь на здоровье :)

    Практика:

    Рассмотрим написание чит программы на примере всем известного “SpeedHack”.

    Как использовать “SpeedHack” через ArtMoney я расскажу вкратце так это руководство не по поиску багов а по написанию программ с их применением. Дам несколько советов по поиску значения скорости, так как в игре скорость является дробью, то тип значения выбираем с точкой. Размерность выбираем 4 байта, так как большинство значений в современных играх 4-х байтные (за некоторым исключением). Указав такие условия поиска, мы значительно его сократим. Затем устанавливаем значение поиска равное значению в игре, выполняем поиск. Заходим в игру, одеваем оружие на бег и отсеиваем новое значение. И так пока не останется одно значение. Добавляем его в таблицу и видим адрес этого значения в памяти (для использования “SpeedHack’а”, нужно установить желаемое значение и “заморозить” его). Допустим оно у нас равно 0134EA80. Но так ига использует DMA, просто адрес нас не устроит, так как при следующем входе в игру он изменится. Поэтому мы будем искать указатель на этот адрес, который как говорилось выше не изменяется. Как искать указатели я тут рассказывать тоже не буду, так как статья не об этом (читайте руководство пользователя ArtMoney). После поиска указателя он оказался равным 00D1B4F0 а смешение адреса в котором находится значение скорости равно 2356. Важно отметить, что указатель в ArtMoney указывается в шестнадцатеричной системе счисления, а смещение в десятичной. Ну да ладно, что же нам теперь делать с найденными значениями. А вот теперь-то мы и будем писать программу, которая по этим значениям будет модифицировать память игрового клиента.

    Создадим новый проект в Delphi и разместим на форме элементы: Label, SpinEdit, Button, Timer всех по одному. Label будет содержать просто информацию, в SpinEdit будем задавать желаемое значение скорости, Timer будет осуществлять функцию “заморозки” (каждые 100 миллисекунд он будет обновлять наше значение), Button будет активировать/деактивировать Timer(“SpeedHack”).
    Для работы с памятью игры мы будем использовать следующие API функции Windows:
    Подробное описание функций и значения их параметров я приводить не буду, кого заинтересует, могут посмотреть MSDN.
    Основными функциями записи и чтения из памяти являются: ReadProcessMemory и WriteProcessMemory.
    Ну вот собственно исходный код таймера который изменяет значение по найденному выше указателю:
    Code:
    procedure TForm1.Timer1Timer(Sender: TObject);
    var
       speed : single;      //Это значение скорости 
       hWin: hWnd; 
       ProcId: Cardinal; 
       hProc: THandle; 
       NBW: Cardinal; 
       Adress: dword;       //сюда прочитаем адрес из указателя.  
       readwrite: cardinal;
    begin
       hWin := FindWindow(nil, WindowTitle);
            if hWin = 0 then begin
               Timer1.Enabled := False;
               Button1.Caption := 'Включить SpeedHack';
               exit;
               end;   //Проверяем запущена ли игра если нет то выключаем "SpeedHack"
    
       speed := SpinEdit1.Value;
    
       GetWindowThreadProcessId(hWin, @ProcId);
       hProc := OpenProcess(Process_All_Access, False, ProcId);
       ReadProcessMemory(hProc, ptr($00D1B4F0), @Adress, 4, readwrite); //Читаем адрес из указателя
       Adress := Adress + 2356; //Прибавляем к адресу смещение нашего значения
        WriteProcessMemory(hProc, ptr(Adress), @speed, 4, NBW); //Записываем желаемое значение по полученному адресу
       CloseHandle(hProc);
     end;
    Как оказалось все те так уж страшно, как было на первый взгляд. И если вдумчиво прочитать статью, думаю практически любой, хоть немного разбирающийся в программировании человек сможет написать подобную программу.

    Руководство было написано моим другом "Тигрь"
    Я лишь немного переработал :)

    И от себя еще добавлю, что любой memory чит выполняется в таком же духе. Я писал под эту игру Wallhack, FlyHack, ChatHAck и прочие интересные вещи.

    Если потом будет время, дополню руководство реализацией FlyHack(там немного подругому надо обращаться к памяти)

    Всем успехов в начинаниях
     
    #1 LooseURmind, 22 Jul 2011
    Last edited: 22 Jul 2011
    3 people like this.
  2. TikTik

    TikTik Member

    Joined:
    20 Feb 2009
    Messages:
    241
    Likes Received:
    12
    Reputations:
    2
  3. LooseURmind

    LooseURmind New Member

    Joined:
    20 Jul 2011
    Messages:
    4
    Likes Received:
    3
    Reputations:
    0
    TikTik, та статья про модифицирование пакетов в играх :)
    В моих планах есть пункт - написать руководство по кодингу программы, которая будет отсылать произвольные пакеты указанные юзером :)
     
  4. FQziT

    FQziT Elder - Старейшина

    Joined:
    3 Nov 2005
    Messages:
    543
    Likes Received:
    156
    Reputations:
    206
    Лучше напиши про обход защит типа lame/gameguard'a, фроста; пакетхак в условиях шифрования трафика клиент<->сервер и т.д. Что-нибудь по-интереснее)
     
    #4 FQziT, 24 Jul 2011
    Last edited: 24 Jul 2011
  5. Derec

    Derec Elder - Старейшина

    Joined:
    8 Nov 2007
    Messages:
    74
    Likes Received:
    4
    Reputations:
    0
    В таймер нужно вносить непосредственно только WriteProcessMemory, дабы не совершать дальшейших бесмысленных попыток открыть процесс. Трейнеры построенные на данном примере - очередной шлак, который в некоторых случаях будет все время фатально завершаться. Это критика в адрес того, что это писал. Лучше учите оптимицию ПО, полезней будет.
     
  6. LooseURmind

    LooseURmind New Member

    Joined:
    20 Jul 2011
    Messages:
    4
    Likes Received:
    3
    Reputations:
    0
    FQziT, чем вам так не нравится фрост?) делаете процесс игры видимым(фрост его скрывает) и выполняете любые операции над памятью клиента. Обход пакетной шифрации фроста пока никому не удался. Да и если получится, то иннова и прочие проекты тут же обновятся.
    Derec, в этой статье лишь описан пример. Как именно вы будете его реализовывать - это ваше дело :) Тут таймер используется для "заморозки" значения, хотя да, признаюсь, я бы использовал в таймере только запись.
     
    #6 LooseURmind, 24 Jul 2011
    Last edited: 24 Jul 2011
  7. FQziT

    FQziT Elder - Старейшина

    Joined:
    3 Nov 2005
    Messages:
    543
    Likes Received:
    156
    Reputations:
    206
    И получаете бан..
    Неа, есть умельцы.

    Да не обязательно об этом. Просто примеры привел
     
  8. warkk

    warkk Member

    Joined:
    20 Feb 2009
    Messages:
    139
    Likes Received:
    23
    Reputations:
    0
    Ахах, ну конечно.
     
  9. AGIMgal

    AGIMgal New Member

    Joined:
    9 Jun 2010
    Messages:
    66
    Likes Received:
    0
    Reputations:
    0
    что такое второй пунк в требованиях, там где памяти, нислова не внял. С остальным получше.
     
  10. Эрос

    Эрос New Member

    Joined:
    5 Dec 2011
    Messages:
    17
    Likes Received:
    1
    Reputations:
    -3
    про Warface напиши статью хотел бы почитать реально на неё намутить чит или нет...
     
  11. Spot

    Spot Elder - Старейшина

    Joined:
    1 Mar 2007
    Messages:
    461
    Likes Received:
    38
    Reputations:
    1
    Мало того, что ошибся разделом форума - так ещё и выложил то ли недостатью, то ли мини-туториум.
     
  12. justonline

    justonline network ninja

    Joined:
    27 Jul 2011
    Messages:
    499
    Likes Received:
    60
    Reputations:
    53
    товарищи некрофильчики? :D статья 2011 года еще.
     
  13. sn0w

    sn0w Статус пользователя:

    Joined:
    26 Jul 2005
    Messages:
    1,023
    Likes Received:
    1,301
    Reputations:
    327
    бггг, взаимоисключающие параграфы, спасибо, посмеялсо
     
Loading...
Similar Threads - Написание cheat программ
  1. Peja
    Replies:
    0
    Views:
    2,540