Меню Рубрики

Как написать свою программу для взлома

Это читерство! Учимся взламывать игры и писать читы на простом примере

Содержание статьи

Виды читов и применяемые тактики

Существуют разные виды читов. Можно разделить их на несколько групп.

External — внешние читы, которые работают в отдельном процессе. Если же мы скроем наш external-чит, загрузив его в память другого процесса, он превратится в hidden external.

Internal — внутренние читы, которые встраиваются в процесс самой игры при помощи инжектора. После загрузки в память игры в отдельном потоке вызывается точка входа чита.

Pixelscan — вид читов, который использует картинку с экрана и паттерны расположения пикселей, чтобы получить необходимую информацию от игры.

Network proxy — читы, которые используют сетевые прокси, те, в свою очередь, перехватывают трафик клиента и сервера, получая или изменяя необходимую информацию.

Есть три основные тактики модификации поведения игры.

  1. Изменение памяти игры. API операционной системы используется для поиска и изменения участков памяти, содержащих нужную нам информацию (например, жизни, патроны).
  2. Симуляция действий игрока: приложение повторяет действия игрока, нажимая мышкой в заранее указанных местах.
  3. Перехват трафика игры. Между игрой и сервером встает чит. Он перехватывает данные, собирая или изменяя информацию, чтобы обмануть клиент или сервер.

Большинство современных игр написаны для Windows, поэтому и примеры мы будем делать для нее же.

Пишем игру на C

Про читы лучше всего рассказывать на практике. Мы напишем свою небольшую игру, на которой сможем потренироваться. Я буду писать игру на C#, но постараюсь максимально приблизить структуру данных к игре на C++. По моему опыту читерить в играх на C# очень просто.

Принцип игры прост: нажимаешь Enter и проигрываешь. Не особо честные правила, да? Попробуем их изменить.

Приступим к реверс-инжинирингу

У нас есть файл игры. Но вместо исходного кода мы будем изучать память и поведение приложения.

При каждом нажатии Enter жизни игрока уменьшаются на 15. Начальное количество жизней — 100.

Изучать память мы будем при помощи Cheat Engine. Это приложение для поиска переменных внутри памяти приложения, а еще хороший дебаггер. Перезапустим игру и подключим к ней Cheat Engine.

Первым делом мы получаем список всех значений 85 в памяти.

Все значения, которые нашел CE

Нажмем Enter, и показатель жизней будет равен 70 . Отсеем все значения.

Вот и нужное значение! Изменим его и нажмем Enter для проверки результата.

Значение изменено
Скрин игры, после того как мы нажали Enter

Проблема в том, что после перезапуска игры значение будет уже по другому адресу. Каждый раз отсеивать его нет никакого смысла. Необходимо прибегнуть к сканированию AOB (Array Of Bytes — массив байтов).

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

После нескольких нажатий на Enter количество жизней изменилось на 55 . Снова найдем нужное значение в памяти и откроем регион, в котором оно находится.

Выделенный байт и есть начало нашего int32 -числа. 37 00 00 00 — число 55 в десятичной форме.

Я скопирую небольшой регион памяти и вставлю в блокнот для дальнейшего изучения. Теперь перезапустим приложение и снова найдем значение в памяти. Снова скопируем такой же регион памяти и вставим в блокнот. Начнем сравнение. Цель — найти байты рядом с этой сигнатурой, которые не будут меняться.

Начинаем сравнивать байты

Проверим байты перед структурой.

Как видишь, выделенные байты не изменились, значит, можно попробовать использовать их как сигнатуру. Чем меньше сигнатура, тем быстрее пройдет сканирование. Сигнатура 01 00 00 00 явно будет слишком часто встречаться в памяти. Лучше взять 03 00 00 01 00 00 00 . Для начала найдем ее в памяти.

Сигнатура найдена, но она повторяется. Необходима более уникальная последовательность. Попробуем ED 03 00 00 01 00 00 00 .

В подтверждение уникальности получим такой результат:

Нам необходимо найти отступ от сигнатуры, чтобы получить ее стартовый адрес, а не адрес жизней. Пока сохраним найденную сигнатуру и отложим на некоторое время. Не беспокойся, мы к ней еще вернемся.

Жизненный цикл external

Используя функцию OpenProcess , внешние читы получают дескриптор для нужного процесса и вносят необходимые изменения в код (патчинг) или считывают и изменяют переменные внутри памяти игры. Для модификации памяти используются функции ReadProcessMemory и WriteProcessMemory .

Так как динамическое размещение данных в памяти мешает записать нужные адреса и постоянно к ним обращаться, можно использовать технику поиска AOB. Жизненный цикл external-чита выглядит так:

  1. Найти ID процесса.
  2. Получить дескриптор к этому процессу с нужными правами.
  3. Найти адреса в памяти.
  4. Пропатчить что-то, если нужно.
  5. Отрисовать GUI, если он имеется.
  6. Считывать или изменять память по мере надобности.

Продолжение доступно только участникам

Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее

Источник статьи: http://xakep.ru/2019/04/11/games-hacking/

FAQ для начинающих кракеров. Взлом программ.

Материал для статьи
был взят с сайта http://cr0ck.da.ru
за что ему огромная благодарность.Все копирайты
принадлежат cr0ck`у

>Q:Какими
программками посоветуешь пользоваться?

A:Отладчики:
DOS: Soft-Ice, DeGlucker, CUP /d, TD(только для
начинающих),386(тоже),
Еще есть: AFDPro, GameTools, AxeHack, но это только для
частных случаев.
WIN: Soft-Ice, TD , встроенный в WDASM32 отладчик
Вьюеры/редакторы:
DOS/WIN: HiEW, BIEW, QVIEW
WIN:WDASM32
И самая рульная вещь — IDA. Это наикрутейший
дизасемблер со многими фичами и отлично
продуманной идеологией.
Унпакеры:
DOS:unp, cup386, unpack
WIN:procdump

>Q: Хм! Думаешь мне что нибудь говорят слова
`отладчик’, `унпакер’, `дизасемблер’.

A: Хм! Очень плохо 🙁
_Отладчики_(они же дебагеры) были придуманы для
поиска ошибок в программах.Но вскоре были
приспособлены хакерами для своих нужд. А вскоре
появились специальный хакерские
отладчики.Отладчики посволяют пройти программу
по шагам, останавливаться толко в определенных
местах программы и т.д. При этом хакер полностью
контролирует трассируемую(так называется
выполнение по шагам) программу. _Унпакеры_.
Производители программ часто упаковывают свои
программы(чтобы они занимали меньше места) или
криптуют(зашифровывают) их (чтобы хакеры или
конкуренты не могли взломать/посмотреть ее).
Первое и второе усложняет взлом. Чтобы
избавиться от проблем хорошие люди делают
унпакеры/ункрипторы, которые позволяют
распаковать/раскриптовать эти программы.
_Дизасемблер_ позволяет из исполняемого файла (com,
exe, . ) получить листинг этой программы на языке
ассемблера. Ассемблер это эквивалент машинного
кода, только записаный более-менее понятными
словами и обозначениями.

>Q:Что мне нужно знать для того чтобы стать
хакером?

A:Просто знать что-то конечно недостаточно, но вот
несколько советов:
Во-первых не обойтись без знания ассемблера.
Учить его можно по-разному. Сначала нужно
почитать книжки или доки по ассемблеру, вникнуть
в устройство компьютера (прерывания,организация
памяти,ввод/вывод на уровне портов). Неплохо
написать
несколько небольших программ на асме или хотя бы
посмотреть как это делают другие. Хорошо бы
выучить какой-нить язык высокого уровня. Лично
мне кажется что для
этого идеально подходит С. Ведь С некоторые даже
называют языком среднего уровня, т.к. он наиболее
близок к ассемблеру и одновременно обладает
огромной мощью.
Потом начинайте ломать всякие кракмисы. Они ведь
для этого и сделаны 😉 Переходите
к взлому программ. Вначале посмотрите примеры, а
затем ломайте сами. Учитесь пользоваться
различными программами. Например, IDA очень трудно
освоить одним наскоком, но сколько возможностей
она дает! Soft-Ice тоже имеет много фич которые вы
можете никогда и не узнать, но при их применении
жизнь может сильно облегчиться.

>Q:Полного знания паскаля хватит, чтобы
заниматься хакингом?

A: Повторюсь что ты должны знать в первую очередь
асм. Конечно, если ты знаешь паскаль очень хорошо,
то тебе его надолго хватит одного. Но в идеале
нужно знать _несколько_ языков.
Например: ASM, C, C++,PAS, Perl и т.д.

>Q:Вот ты говоришь что IDA крутая вешь? А для чего я
ее могу применять? Ясно конечно что для
дизасемблирования, но ты говорил про всякие
крутые фичи.

A: Самое простое: поиск ссылок на строки
регистрации. Например, программа пишет тебе на
экран «Unregistered». Ты ищещь эту строку в
программе, а затем ссылки на нее. Т.е. определяешь
в каких местах программы идет обращение к этой
строке. А где-то рядом будет проверка
пароля/рег.номера. Еще такая замечательная вещь.
IDA использует технологию FLIRT. При помощи нее можно
обнаруживать в программах
вызовы функций стандартных библиотек и вместо call
12345678h
ты увидишь: call _strcpy
А что делает strcpy ты уже должен знать 😉 Еще в IDA
есть встроенный язык, очень похожий на С. С
помощью него можно вытворять с программой что
угодно: например, расшифровать зашифрованную
часть программы.

>Q:Что такое Soft-Ice и как этой прогой
пользоваться?

A:Как было сказано вначале это отладчик. Кстати,
очень крутой отладчик. По фичности он опережает
всех. А насчет пользования, то софт-айз имеет кучу
команд, и нужно знать что какая из них делает. Об
этом можно прочитать в различных ФАКах о
софтайзе.

>Q:А если нету у меня такого ФАКа? Что делать?

A:Искать! Может быть в следующей версии этого ФАКа
я добавлю команды софтайза, но пока придется
довольствоваться командой `H’. Без
параметров она выдает список всех команд с
кратким описанием, а если в качестве параметра
указать название какой-нить команды софтайза, то
получишь немного более подробную справку.

>Q:Я уже приготовился ломать, но понял что не
знаю как запускать софтайз 🙁

A:Кстати если я теперь говорю про софтайз, то я
имею ввиду виндовую версию. Софтайз запускается
из режима эмуляции ДОСа по виндами. Нужно просто
запустить файл winice.exe. Когда загрузятся винды
запускаете Symbol Loader. А в нем в File->Open. Выбираете
ломаемую прогу и Module->Load.

>Q: Все о каких-то бряках говорят. Что это?

A: Бряк, брякпоинт, брекпоинт, breakpoint — точка
останова. Отладчики позволяют поставить бряк в
каком-нить месте программы и запустить ее. Когда
программа дойдет до этого места — она
остановиться и ты окажешься в дебагере, а там
делай чего хочешь.

>Q: Один мой друг хвастался что все программы
битхаком каким-то ломает. Что это такое?

A: Битхак (bithack) — это метод взлома при котором в
программе меняются несколько бит или байт.
Например если известно что по такому-то адресу
происходит переход, если программа не
зарегестрирована, то можно команду перехода,
которая находится по
этому адресу, заменить, например, на команду NOP.
Если ты не знаешь что это за команда, то серьезнее
отнесись к изучению асма 😉

>Q: Ясно. А что такое метод Бруте Форсе?

A: Во-первых пишется с маленькой буквы — бруте
форсе(brute force) ;)) А во вторых дословно переводиться
как метод `грубой силы’, т.е., например, простой
перебор всех возможных паролей.

>Q:Почему софтайз не дает поставить брякпоинт на
некоторые функции, например на GetDlgItemTextA?

A:Все функции храняться в библиотеках. Например
GetDlgItemTextA находится в USER32.DLL К тому же функции
грузятся в память по определенным адресам. И
брякпоинты ставятся не на функции а на адреса
соответсвующие им. А что бы софтайз знал где — что,
нужно экспортировать в софтайз нужные
библиотеки. Делается это в winice.dat

Обычно эти строки уже есть, но закомментированы и
нужно просто убрать `;’

>Q:Все сделал, загрузил. Теперь хочу начать
ломать программу. Она спрашивает
регистрационный номер(РН). Что делать?

A:Нужно отыскать место где сравнивается
введенный номер с нужным и подправить его
чуть-чуть

A: Можно несколькими путями.
1. Отлавливаем место где вводится РН. Затем
трассируем по шагам пока не найдем сравнение.
Здесь обчно делают так bpx GetDlgItemTextA ставят бряк на
функцию, при помощи которой обычно считывается
строка из окна ввода. Можно ставить бряки на
другие функции GetDlgItem*, GetWindowText*, hmemcpy. Хочу
обратить внимание на последнюю. Она просто
выполняет копирование участка памяти, но она
применяется поголовно всеми функциями ввода
данных. Поэтому бряк можно ставить и на нее. Но
нужно помнить, что она может вызывается и при
простом копировании данных, поэтому бряк на нее
нужно ставить только перед нажатием кнопки `OK’.
Ввод РН можно отловить и так: Ввели РН. И не
нажимая ОК жмете Ctrl+D. Теперь вы в софт ксора к
данным дает исходные данные.

Источник статьи: http://xakep.ru/2000/07/03/10063/

Как хакеры взламывают пароли? Максимально просто!

Сегодня мы поговорим о том, как технически происходит взлом любых паролей.

Итак, пароль не сохраняется в виде обычного текста. Большинство сайтов используют алгоритм хеширования для шифрования и управления паролями.

MD5 hash: 827ccb0eea8a706c4c34a16891f84e7b

Существует огромное количество алгоритмов хеширования, включая sha1, md5, md6, sha256, tiger и так далее.

В качестве примера возьмем Facebook. Для того, чтобы зайти в свой аккаунт на Facebook, нужно ввести свою электронную почту и пароль, после чего «войти». При создании нового аккаунта в Facebook нужно заполнить анкету с вашим именем, адресом электронной почты, датой рождения и полом. Также в этой анкете Facebook попросит вас придумать пароль.

После того, как вы нажали «зарегистрироваться», ваши данные уходят в серверную базу данных Facebook, в которой ваше имя, пол, адрес электронной почты или номер телефона сохраняются в первоначальном виде.

А как же пароль? Как я уже говорил, в базе данных сайта пароль никогда не хранится в виде открытого текста. Ваш пароль представляет собой исходные данные для алгоритма хеширования, на выходе которого мы получаем пароль в зашифрованном виде.

Зашифрованный пароль может показаться набором случайных букв и цифр, но это не так. Хеш пароля хранится в базе данных Facebook. Это означает, что введенный вами пароль будет хранится в базе данных не в открытой, а в зашифрованной форме. В базе данных хранится именно хеш пароля.

Итак, предположим, что в Facebook произошла утечка данных и хакеры получили доступ к данным о пользователях, включая имя, возраст, пол, электронную почту и пароль.

Но не смотря на то, что хакеры будут обладать всей этой информацией, они не смогут зайти в аккаунты пользователей, так как полученным ими пароль зашифрован. Если хакер попробует зайти в аккаунт пользователя с помощью хеша пароля, доступ в аккаунт открыт не будет. Для доступа необходима ввести пароль в форме текста. Итак, что будет делать хакер теперь?

Логичнее всего перевести хеш назад в текстовый формат.

Но это практически невозможно, так как хеширование является односторонней функцией, а текстовый пароль из хеша получить нельзя. Именно так работают алгоритмы хеширования. Что теперь?

И тут на первое место выходит сложность пароля. Если вы используете простой пароль, например, test123456, хакер сможет без проблем узнать ваш пароль из хеша. Существуют так называемые «Радужные таблицы», в которых содержатся хеши самых популярных паролей и их текстовая форма.

Хакеру останется только запустить поиск пароля по хешу. Если в Радужной таблице есть этот хеш, хакер получит текстовую форму пароля, а пароль будет моментально взломан. Но напомню: в Радужных таблицах содержатся только самые распространенные пароли. Изучите сайт crackstation.net .

Но что если ваш пароль уникален?

В этом случае Радужные таблицы вам не пригодятся. Тут на помощь хакеру приходит метод так называемого брутфорса. Это перебор по словарю и метод полного перебора всех возможных комбинаций.

В методе брутфорса используется, грубо говоря, список слов, который представляет собой текстовый документ с огромным количеством паролей. Хакер пишет код, сравнивающий хеш полученного в результате атаки пароля с хешем каждого пароля в файле. Если хеши совпали, то взлом пароля прошел успешно, а хакер расшифровал пароль.

Эта атака может быть и целенаправленной. То есть хакер может составить собственный список слов для конкретного человека, если хакер что-то знает о владельце аккаунта, а владелец аккаунта, в свою очередь, опирался на эти данные при создании своего пароля.

Успех данного метода зависит напрямую от качества применяемого списка слов.

В методе полного перебора хешируются все возможные комбинации символов, букв и цифр, а затем хакер сравнивает получившиеся хеши с первоначальным хешем. Иными словами, вы берете список всех возможных паролей, хешируете его, и проверяете хеши на соответствие.

На взлом сложного пароля с помощью этого метода может уйти целая вечность. Однако, если у вас достаточно мощный компьютер, с помощью этого метода можно взломать простой пароль достаточно легко.

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

Предположим, что Facebook вставляет данный набор символов f&2p в начале, после третьего знака и в конце незашифрованного пароля.

После добавления соль-модификатора происходит хеширование пароля.

В результате, использование соль-модификатора делает Радужные таблицы бесполезными, даже в случае со слабым и распространенным паролем.

Хеш пароля с соль-модификатором не соответствует хешу исходного пароля. Поэтому метод брутфорса нельзя назвать оптимальным для взлома пароля с соль-модификатором, если, разумеется, хакер не знает алгоритм этой соли, применяемой компанией.

Поэтому, народ, составляйте сложные пароли, не забывайте про лайк если понравилась статья и мы увидимся с вами уже очень скоро, всем удачи

Источник статьи: http://zen.yandex.ru/media/ger/kak-hakery-vzlamyvaiut-paroli-maksimalno-prosto-5d666e6e0ef8e700adde3d10


0 0 голоса
Article Rating
Подписаться
Уведомить о
guest

0 Комментарий
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии