D2
Администратор
- Регистрация
- 19 Фев 2025
- Сообщения
- 4,380
- Реакции
- 0
Автор: UNSEEN
Источник: https://xss.is
Хо-хо-хо Форумчане! До Нового года остается совсем немного и планировал как можно скорее написать вторую нашу часть про мир геймхакинга! Если статья вышла до НГ, значит я выполнил свою поставленную задачу! А вам пожелаю хорошего чтива
Немного предыстории…
В прошлой части мы разобрали, что из себя представляет специальный софт(Читы) для игр, и какие бывают способы заработка с этого направления. Рынок очень хорошо развивается в последние годы и умельцы делают на написании этого софта огромные состояния!
Из технической части вспомним, что мы базово прошлись по основам, а именно что из себя представляет оперативная память(ячейки памяти с уникальными адресами для доступа к ним) и что происходит после загрузки туда исполняемой программы операционной системой. Немного разобрались, как и в каком виде хранится информация в современных компьютерных системах(8бит = 1байт).
Коснулись верхушки типов данных, а именно разобрали 1 и 4 байтовые данные. Далее рассмотрим подробно.
Поговорили немного про сканеры памяти и как ими пользоваться. И поэкспериментировали с нашей написанной самими игрой. Произвели поиск и замену значения по найденному адресу в памяти процесса нашей игры при помощи инструмента Cheat Engine.
Начало…
Давайте углубимся в немного в программирование и разберемся с типами данных.
В программировании типы данных являются фундаментальными понятиями, которые определяют, какие виды данных могут быть использованы в программе и как они могут быть обработаны.
Типы данных – это способ хранить данные в памяти. Тип определяет диапазон его возможных значение, список допустимых операций. Как было продемонстрировано в нашей игре, мы хранили значение жизни в 4байтах . Обычно мы можем группировать числа в 1, 2, 4, 8 байтов. То есть, чем больше байтов = тем больше число можем хранить в ячейке(ах). Зная тип данных искомого значения, мы можем легко и правильно сканировать память. Типы данных в программировании определяются с помощью языка программирования. Думаю для примера возьмем язык Си.
В языке программирования C стандартно используются следующие типы данных:
char (символьный тип):
Пример: Игрок находится на земле? Если значение >(больше) 0 то истинна, иначе ложь. Это используется при проверки на различные варианты обработки событий. Допустим есть переменная onGround, которая служит как флаг истинности, которая подразумевает, находится ли игрок на земле или в воздухе? В игре вы делаете прыжок и не можете прыгать до тех пор, пока ваш персонаж не приземлился на землю. Как раз в этот момент игра обрабатывает это все с помощью переменной onGround.
Подробнее можете почитать про типы данных и их модификаторах Здесь
Системы счисления...
При работе с памятью больше всего нам нужно иметь дело с большими числами и для решения этой проблемы была придумана шестнадцатеричная система счисления(HEX).
Шестнадцатеричная система счисления широко используется в программировании и отображении байт кода по нескольким причинам:
Краткость и удобство:
Байт, в основном, представляет собой 8 бит. Шестнадцатеричная система прекрасно сочетается с байтами, так как каждая цифра шестнадцатеричной системы представляет 4 бита (16 возможных значений).
Пример:
В двоичной системе:
Байт 10101010 может быть представлен в шестнадцатеричной системе как AA.
Таким образом, шестнадцатеричная система обеспечивает компромисс между компактностью представления данных и удобочитаемостью, что делает ее удобной для использования в программировании и анализе байтового кода.
Более подробно можете прочитать Здесь
Шестнадцатеричная начинается с 0x, чтобы сообщить компилятору что это hex формат.
Например: 0x123456 0xABCDEF 0x123ABC
Разновидность...
Теперь когда разобрались с базовыми моментами из программирования, думаю стоит поговорить про виды софта.
Их в основном два вида, а именно External и Internal. Различия у этих читов:
External – в переводе на русский, означает “Внешний”. Extrenal чит являясь исполняемой программой, может из вне читать/изменять память игры при помощи запросов(WinApi) к ОС. Данный тип читов труднее обнаружить из-за своего нахождения вне процесса игры. Тут очень важно, записываете ли вы что то в память игры? Если да, то плохо, если нет, то такой чит гораздо труднее обнаружить. Из-за того, что чит находится вне процесса игры , он будет ограничен по своему функционалу. Ведь мы не можем всегда напрямую перезаписывать данные в памяти игры или вызывать какие либо функции в самой игре, что сказывается на скорости чита.
Internal — в переводится, как “Внутренний”. Это код, чаще всего в виде динамической библиотеки – dll. С помощью инжектора внедряется/загружается в адресное пространство процесса игры. И может напрямую читать и редактировать данные в памяти процесса, обращаться к переменным и функциям. Реализовать чуть сложнее, чем External. В связи со своей активностью внутри памяти процесса игры, относительно легко обнаруживать. Из плюсов чит работает намного быстрее и в плане функций имеет широкий выбор.
Практическая часть…
В этой статье мы сегодня базово разберем первый вид читов - External.
Поработаем с запросами(WinApi) к ОС для доступа к процессу и далее чтение данных/запись в память процесса.
Языком программирования нашего софта будет С++.
Подготовка среды…
Для начала вам нужно Скачать
Источник: https://xss.is
Хо-хо-хо Форумчане! До Нового года остается совсем немного и планировал как можно скорее написать вторую нашу часть про мир геймхакинга! Если статья вышла до НГ, значит я выполнил свою поставленную задачу! А вам пожелаю хорошего чтива

Немного предыстории…
В прошлой части мы разобрали, что из себя представляет специальный софт(Читы) для игр, и какие бывают способы заработка с этого направления. Рынок очень хорошо развивается в последние годы и умельцы делают на написании этого софта огромные состояния!
Из технической части вспомним, что мы базово прошлись по основам, а именно что из себя представляет оперативная память(ячейки памяти с уникальными адресами для доступа к ним) и что происходит после загрузки туда исполняемой программы операционной системой. Немного разобрались, как и в каком виде хранится информация в современных компьютерных системах(8бит = 1байт).
Коснулись верхушки типов данных, а именно разобрали 1 и 4 байтовые данные. Далее рассмотрим подробно.
Поговорили немного про сканеры памяти и как ими пользоваться. И поэкспериментировали с нашей написанной самими игрой. Произвели поиск и замену значения по найденному адресу в памяти процесса нашей игры при помощи инструмента Cheat Engine.
Начало…
Давайте углубимся в немного в программирование и разберемся с типами данных.
В программировании типы данных являются фундаментальными понятиями, которые определяют, какие виды данных могут быть использованы в программе и как они могут быть обработаны.
Типы данных – это способ хранить данные в памяти. Тип определяет диапазон его возможных значение, список допустимых операций. Как было продемонстрировано в нашей игре, мы хранили значение жизни в 4байтах . Обычно мы можем группировать числа в 1, 2, 4, 8 байтов. То есть, чем больше байтов = тем больше число можем хранить в ячейке(ах). Зная тип данных искомого значения, мы можем легко и правильно сканировать память. Типы данных в программировании определяются с помощью языка программирования. Думаю для примера возьмем язык Си.
В языке программирования C стандартно используются следующие типы данных:
char (символьный тип):
- Числовой диапазон: -128 до 127 или 0 до 255 (если без знака).
- Размер: 1 байт.
- Числовой диапазон: зависит от компилятора, обычно -32,768 до 32,767 или 0 до 65,535 (если без знака).
- Размер: обычно 4 байта, но может варьироваться в зависимости от платформы.
- Пример: Может хранить количество монет/жизней/патронов
- Числовой диапазон: примерно от -3.4E38 до 3.4E38.
- Размер: 4 байта.
- Пример: Может хранить координаты игрока/врага/предметов и т.д.
- Числовой диапазон: примерно от -1.7E308 до 1.7E308.
- Размер: 8 байт.
- Пример: В большинстве случаев нужен для более точных расчетов.
Пример: Игрок находится на земле? Если значение >(больше) 0 то истинна, иначе ложь. Это используется при проверки на различные варианты обработки событий. Допустим есть переменная onGround, которая служит как флаг истинности, которая подразумевает, находится ли игрок на земле или в воздухе? В игре вы делаете прыжок и не можете прыгать до тех пор, пока ваш персонаж не приземлился на землю. Как раз в этот момент игра обрабатывает это все с помощью переменной onGround.
Подробнее можете почитать про типы данных и их модификаторах Здесь
Системы счисления...
При работе с памятью больше всего нам нужно иметь дело с большими числами и для решения этой проблемы была придумана шестнадцатеричная система счисления(HEX).
Шестнадцатеричная система счисления широко используется в программировании и отображении байт кода по нескольким причинам:
Краткость и удобство:
- Позволяет представлять большие значения байтовой информации (например, адреса памяти) более компактно, чем в двоичной или десятичной системе.
- Уменьшает количество цифр для представления тех же данных.
- Шестнадцатеричные числа более легко читать и записывать в сравнении с длинными последовательностями двоичных цифр.
- Переход между двоичной и шестнадцатеричной системами более интуитивен.
Байт, в основном, представляет собой 8 бит. Шестнадцатеричная система прекрасно сочетается с байтами, так как каждая цифра шестнадцатеричной системы представляет 4 бита (16 возможных значений).
Пример:
В двоичной системе:
Байт 10101010 может быть представлен в шестнадцатеричной системе как AA.
Таким образом, шестнадцатеричная система обеспечивает компромисс между компактностью представления данных и удобочитаемостью, что делает ее удобной для использования в программировании и анализе байтового кода.
Более подробно можете прочитать Здесь
Шестнадцатеричная начинается с 0x, чтобы сообщить компилятору что это hex формат.
Например: 0x123456 0xABCDEF 0x123ABC
Разновидность...
Теперь когда разобрались с базовыми моментами из программирования, думаю стоит поговорить про виды софта.
Их в основном два вида, а именно External и Internal. Различия у этих читов:
External – в переводе на русский, означает “Внешний”. Extrenal чит являясь исполняемой программой, может из вне читать/изменять память игры при помощи запросов(WinApi) к ОС. Данный тип читов труднее обнаружить из-за своего нахождения вне процесса игры. Тут очень важно, записываете ли вы что то в память игры? Если да, то плохо, если нет, то такой чит гораздо труднее обнаружить. Из-за того, что чит находится вне процесса игры , он будет ограничен по своему функционалу. Ведь мы не можем всегда напрямую перезаписывать данные в памяти игры или вызывать какие либо функции в самой игре, что сказывается на скорости чита.
Internal — в переводится, как “Внутренний”. Это код, чаще всего в виде динамической библиотеки – dll. С помощью инжектора внедряется/загружается в адресное пространство процесса игры. И может напрямую читать и редактировать данные в памяти процесса, обращаться к переменным и функциям. Реализовать чуть сложнее, чем External. В связи со своей активностью внутри памяти процесса игры, относительно легко обнаруживать. Из плюсов чит работает намного быстрее и в плане функций имеет широкий выбор.
Практическая часть…
В этой статье мы сегодня базово разберем первый вид читов - External.
Поработаем с запросами(WinApi) к ОС для доступа к процессу и далее чтение данных/запись в память процесса.
Языком программирования нашего софта будет С++.
Подготовка среды…
Для начала вам нужно Скачать
View hidden content is available for registered users!