Мини-гайд:Глобальные буферы и немного рептилоидов!
122
32
Про рептилоидов прикол ну ладно!
Время рассказать о глобальных буферах.
Что это такое? Для начала вступление.
Заходим в Risen и идём к торговцу.
Спойлер
Жмём продать предмет, находим золото-отсеиваем.
И вот мы нашли:
Спойлер
Ищём что использует эти значения и...
Спойлер
Вот они, глобальные буферы! Это как торговые хабы или конвеер где постоянно читаются значения.
Кто их создал? Никто не знает но они существуют.
Знают ли о них разработчики? Вполне возможно их создал компилятор или кто-то ещё.
Но они всегда существуют, как и свободное место из int3.
Ладно, отошли от темы!
Ставить бряк нельзя(зависнет) обращаемся к DeepSeek за помощью:
Спойлерривет! Есть команда mov rax, qword ptr ds:[rax+0x58]! Как поставить на неё условный брейкпоинт чтобы она записавала значение rax? Я использую отладчик x64dbg
Привет! Для установки условного брейкпоинта на эту инструкцию в x64dbg, чтобы записать значение RAX, есть несколько способов:
Способ 1: Условный брейкпоинт с логгированием
Найдите инструкцию в дизассемблере
Установите брейкпоинт (F2)
Правый клик на брейкпоинте → "Edit breakpoint condition"
Введите условие:
textlog "RAX = {rax}" 1Или более подробно:
textlog "Instruction: mov rax, qword ptr ds:[rax+0x58]" log "RAX before = {rax}, Address accessed = {rax+0x58:#x}" 1Способ 2: Команда в условии брейкпоинта
textlog "RAX value: {rax}";1Способ 3: С использованием скриптового условия
Если нужно более сложное поведение:
textlog "RAX = {rax}, Memory at [RAX+0x58] = {rax+0x58:x}" log "Content: {ds:[rax+0x58]:x}" 1Способ 4: Многострочное условие
textlog "=== Memory Access Breakpoint ===" log "RAX register: {rax:x}" log "Accessing address: {rax+0x58:x}" log "Value at target: {ds:[rax+0x58]:x}" log "================================" 1Важные моменты:
{rax} - подставляет текущее значение RAX
{rax+0x58:x} - показывает адрес в hex формате
{ds:[rax+0x58]:x} - показывает значение по этому адресу
1 в конце - означает, что брейкпоинт всегда срабатывает
Логи можно посмотреть в Log окне (Alt+L)
После установки такого брейкпоинта при каждом его срабатывании в логе будет выводиться текущее значение RAX, и выполнение продолжится автоматически.
Захват5.jpgJPG 96.44KBПоясни что вписывать вот сюда? Именно в эти поля, других нету.
Отлично! Вижу окно редактирования брейкпоинта в x64dbg. Вот что нужно вписать в каждое поле:
Заполнение полей:
✅ Условие остановки: 0
*(оставляем 0 - брейкпоинт не будет останавливать выполнение)*✅ Текст журнала:
textRAX = {rax}, Address = {rax+0x58:x}, Value = {ds:[rax+0x58]:x}✅ Условие добавления в журнал: 1
(всегда добавлять запись в журнал)✅ Текст команды: (оставить пустым)
✅ Условие для команды: (оставить пустым)
✅ Имя: Log RAX access
(необязательно, для удобства)Альтернативные варианты текста журнала:
Простой вариант:
textRAX = {rax}Подробный вариант:
textMOV RAX,[RAX+58h] - RAX={rax}, TargetAddr={rax+0x58:x}, Value={ds:[rax+0x58]:x}Что получится:
После сохранения при каждом выполнении этой инструкции в Log окне (Alt+L) будут появляться записи вида:
textRAX = 00000000004A3B20, Address = 00000000004A3B78, Value = 0000000000000000При этом программа не будет останавливаться - выполнение продолжится автоматически, а ты сможешь наблюдать все значения RAX в логе.
Делаем и получаем:
Спойлер
Но что было в команде?rax+58 поэтому прибавляем к каждому значению 58 и получаем.
Спойлер
Всё получилось!
Теперь о буферах, они существуют всегда и везде! Они глобальные в них могут считаться сотни, тысячи или миллионы раз значения.
И все их значения можно отследить поставить условный брейкпоинт.
Но никогда не пытайтесь сделать типа всем значения +500, кто знает чему вы пытаетесь прибавить 500.
Глобальные буфера, это то вызывает большой интерес.
Именно в глобальных буферам спрятаны все скрытые значения и т.д
В них основная загадка и ключ ко многим тайнам как я считаю.
Все я ухожу из айти
Буду со своей сестрой развлекаться кувыркаться
Ладно пофиг обманул сейчас читы для 25-летней офлайн игры напишу
Так и недалеко годное портфолио для старта в айти в 40 лет собрать
Все пока я в сладкую смазку пошел кушать жирные булочки с жиром, чтобы жира больше было
основной аккаунт сказал(а):↑Все я ухожу из айти
Буду со своей сестрой развлекаться кувыркаться
Ладно пофиг обманул сейчас читы для 25-летней офлайн игры напишу
Так и недалеко годное портфолио для старта в айти в 40 лет собрать
Нажмите, чтобы раскрыть...Дело не в читах или чём-то ещё!
Глобальные буфера существуют везде, от браузеров до..предела нету.
И что в них читается и пишется секрет.
Скрытый от простых глаз.
AndreyName сказал(а):↑Дело не в читах или чём-то ещё!
Глобальные буфера существуют везде, от браузеров до..предела нету.
И что в них читается и пишется секрет.
Скрытый от простых глаз.
Нажмите, чтобы раскрыть...Какой продуктовый результат от этого скажи
Что ты научился, долбясь в сраку с этими буферами
Как ты это можешь монетизировать (т.е., оказать реальную пользу общества = заработать деньги)
Пока ты бесполезен абсолютно
AndreyName сказал(а):↑Про рептилоидов прикол ну ладно!
Время рассказать о глобальных буферах.
Что это такое? Для начала вступление.
Заходим в Risen и идём к торговцу.
Спойлер
Жмём продать предмет, находим золото-отсеиваем.
И вот мы нашли:
Спойлер
Ищём что использует эти значения и...
Спойлер
Вот они, глобальные буферы! Это как торговые хабы или конвеер где постоянно читаются значения.
Кто их создал? Никто не знает но они существуют.
Знают ли о них разработчики? Вполне возможно их создал компилятор или кто-то ещё.
Но они всегда существуют, как и свободное место из int3.
Ладно, отошли от темы!
Ставить бряк нельзя(зависнет) обращаемся к DeepSeek за помощью:
Спойлерривет! Есть команда mov rax, qword ptr ds:[rax+0x58]! Как поставить на неё условный брейкпоинт чтобы она записавала значение rax? Я использую отладчик x64dbg
Привет! Для установки условного брейкпоинта на эту инструкцию в x64dbg, чтобы записать значение RAX, есть несколько способов:
Способ 1: Условный брейкпоинт с логгированием
Найдите инструкцию в дизассемблере
Установите брейкпоинт (F2)
Правый клик на брейкпоинте → "Edit breakpoint condition"
Введите условие:
textlog "RAX = {rax}" 1Или более подробно:
textlog "Instruction: mov rax, qword ptr ds:[rax+0x58]" log "RAX before = {rax}, Address accessed = {rax+0x58:#x}" 1Способ 2: Команда в условии брейкпоинта
textlog "RAX value: {rax}";1Способ 3: С использованием скриптового условия
Если нужно более сложное поведение:
textlog "RAX = {rax}, Memory at [RAX+0x58] = {rax+0x58:x}" log "Content: {ds:[rax+0x58]:x}" 1Способ 4: Многострочное условие
textlog "=== Memory Access Breakpoint ===" log "RAX register: {rax:x}" log "Accessing address: {rax+0x58:x}" log "Value at target: {ds:[rax+0x58]:x}" log "================================" 1Важные моменты:
{rax} - подставляет текущее значение RAX
{rax+0x58:x} - показывает адрес в hex формате
{ds:[rax+0x58]:x} - показывает значение по этому адресу
1 в конце - означает, что брейкпоинт всегда срабатывает
Логи можно посмотреть в Log окне (Alt+L)
После установки такого брейкпоинта при каждом его срабатывании в логе будет выводиться текущее значение RAX, и выполнение продолжится автоматически.
Захват5.jpgJPG 96.44KBПоясни что вписывать вот сюда? Именно в эти поля, других нету.
Отлично! Вижу окно редактирования брейкпоинта в x64dbg. Вот что нужно вписать в каждое поле:
Заполнение полей:
✅ Условие остановки: 0
*(оставляем 0 - брейкпоинт не будет останавливать выполнение)*✅ Текст журнала:
textRAX = {rax}, Address = {rax+0x58:x}, Value = {ds:[rax+0x58]:x}✅ Условие добавления в журнал: 1
(всегда добавлять запись в журнал)✅ Текст команды: (оставить пустым)
✅ Условие для команды: (оставить пустым)
✅ Имя: Log RAX access
(необязательно, для удобства)Альтернативные варианты текста журнала:
Простой вариант:
textRAX = {rax}Подробный вариант:
textMOV RAX,[RAX+58h] - RAX={rax}, TargetAddr={rax+0x58:x}, Value={ds:[rax+0x58]:x}Что получится:
После сохранения при каждом выполнении этой инструкции в Log окне (Alt+L) будут появляться записи вида:
textRAX = 00000000004A3B20, Address = 00000000004A3B78, Value = 0000000000000000При этом программа не будет останавливаться - выполнение продолжится автоматически, а ты сможешь наблюдать все значения RAX в логе.
Делаем и получаем:
Спойлер
Но что было в команде?rax+58 поэтому прибавляем к каждому значению 58 и получаем.
Спойлер
Всё получилось!
Теперь о буферах, они существуют всегда и везде! Они глобальные в них могут считаться сотни, тысячи или миллионы раз значения.
И все их значения можно отследить поставить условный брейкпоинт.
Но никогда не пытайтесь сделать типа всем значения +500, кто знает чему вы пытаетесь прибавить 500.
Глобальные буфера, это то вызывает большой интерес.
Именно в глобальных буферам спрятаны все скрытые значения и т.д
В них основная загадка и ключ ко многим тайнам как я считаю.
Нажмите, чтобы раскрыть...Я то думал ты женщинами начал интересоваться, сиськи там, буфера, а ты тут с чит эндженом балуешься
AndreyName сказал(а):↑Вот они, глобальные буферы! Это как торговые хабы или конвеер где постоянно читаются значения.
Кто их создал? Никто не знает но они существуют.
Знают ли о них разработчики? Вполне возможно их создал компилятор или кто-то ещё.
Нажмите, чтобы раскрыть...
@Zuulkernein @0гурчик как думаете, кто создает буферы?
похоже на работу рептилойдов
не зря же там функция называется REX (как динозавр, а они ящерицы
)
Ммм щас бы глобальные буфера
Stae сказал(а):↑@Zuulkernein @0гурчик как думаете, кто создает буферы?
Нажмите, чтобы раскрыть...Мать-природа
Stae сказал(а):↑
@Zuulkernein @0гурчик как думаете, кто создает буферы?
похоже на работу рептилойдов
не зря же там функция называется REX (как динозавр, а они ящерицы
)
Нажмите, чтобы раскрыть...Я не знаю, это одно из основ.
Всегда есть буфера, свободное место и т.д
Даже в Firefox есть буфер.
Есть даже буфера сетевые, я однажды натыкался на такой.
Там писался request responce от сервера.
Stae сказал(а):↑Андрюх, канализация с говном тоже от простых глаз скрыта.
мб там покопаешься?
Нажмите, чтобы раскрыть...Не!
Я думаю написать глобальный логгер для онлайн-игры!
Найти буфер и написать "если значение xxx то увеличить на 5".
Записываю все xxx и если измениться на 5 я её нашёл.
Буфера крутая штука.
Zuulkernein сказал(а):↑О да, у меня подружка была с 5 размером ячейки
Считается ли это сетевыми? Хз
По мне так смысОл в 2-3, их удобнее отлаживать
Нажмите, чтобы раскрыть...наверняка рептилойд тоже
её с такими дойкамии должно было вперед кренить, а если нормально ходила, значит хвост балансировал
Посмотрит что ответит DeepSeek!
СпойлерПривет! Я рассказал о том что в программах и играх есть буфера, места куда постоянно считываются значения! Например количество предметов или что-то ещё! Я также рассказал что есть сетевые буфера которые содержат данные передаваемые по сети! Расскажи какие буфера бывают и откуда они берутся? Буфер=некая команда которая постоянно считывает какие-то значения, например количество предметовПривет! Отличный вопрос, и ты очень верно уловил суть! Ты прав, буферы — это фундаментальная концепция в программировании и компьютерных системах. Давай разберемся подробнее.
Ты немного неточно выразился, говоря, что буфер — это "команда". Буфер — это не команда, а область памяти (хранилище данных). А команды (инструкции в коде) уже работают с этим буфером: записывают в него данные, читают из него или очищают его.
Представь себе буфер как временный склад или конвейерную ленту.
На одном конце склада грузчики (процессы, которые производят данные) кладут товары (данные).
На другом конце другие грузчики (процессы, которые потребляют данные) забирают товары.
Склад (буфер) нужен, чтобы эти две группы грузчиков могли работать с разной скоростью и не ждали друг друга.
Откуда берутся буферы?
Буферы создаются программным кодом. Когда программист пишет программу, он указывает операционной системе: "Мне нужен кусок памяти такого-то размера для временного хранения данных". Система выделяет эту память, и программа начинает ей пользоваться.
Какие бывают буферы? (Классификация)
Буферы можно классифицировать по-разному. Вот основные виды, которые тебе будут интересны.
1. По способу организации данных
Кольцевой буфер (Circular Buffer)
Как работает: Представь себе круглую ленту, по которой ездят данные. Когда данные доходят до конца, они "перескакивают" на начало (если начало уже свободно). Это очень эффективная структура.
Где используется: Чаще всего — в аудио- и видеопроигрывателях. Пока ты слушаешь одну часть песни, программа в фоне подгружает следующую часть в буфер, чтобы воспроизведение не прерывалось.
Буфер кадров (Framebuffer)
Как работает: Это специальная область памяти, которая хранит текущее изображение, которое ты видишь на экране. Видеокарта постоянно считывает из него данные и преобразует их в сигнал для монитора.
Где используется: Вся компьютерная графика. В играх часто используется двойная буферизация (Double Buffering): одна часть буфера показывает кадр игроку, а в это время вторая часть формирует следующий кадр. Потом они мгновенно меняются местами. Это нужно, чтобы избежать "разрывов" изображения (артефактов, когда на экране видна часть старого и часть нового кадра).
2. По назначению и месту использования
Вводной/Выводной буфер (I/O Buffer)
Как работает: Когда ты печатаешь текст в консоли, символы сначала попадают в небольшой буфер, и только когда ты нажимаешь Enter, вся строка передается программе.
Где используется: Клавиатура, мышь, чтение/запись файлов на диск.
Сетевой буфер (Network Buffer)
Как работает: Это как раз то, о чем ты говорил. Данные, которые нужно отправить по сети, складываются в буфер. Сетевая карта забирает их оттуда и отправляет. Аналогично, приходящие из сети данные сначала накапливаются в буфере, пока программа не будет готова их прочитать.
Где используется: Все онлайн-игры, мессенджеры, браузеры. В играх это могут быть буферы с координатами игроков, их действиями, состоянием мира и т.д.
Игровые буферы (как в твоем примере)
Как работает: Это не какой-то особый тип, а применение всех вышеперечисленных идей в играх.
Где используется:
Буфер количества предметов: Обычно это просто переменная или массив в памяти, куда игра записывает, сколько у тебя зелий, патронов и т.д. Другая часть кода (например, отвечающая за отрисовку интерфейса) постоянно "считывает" это значение, чтобы показать его на экране.
Буфер ввода: Твои нажатия клавиш (W, A, S, D, пробел) сначала попадают в буфер, а потом обрабатываются игровым циклом, чтобы переместить персонажа.
Буфер анимаций: Очередь действий для проигрывания анимаций.
Буфер обмена (Clipboard)
Как работает: Это тоже буфер! Когда ты копируешь текст (Ctrl+C), он помещается в специальную область памяти, управляемую операционной системой. Когда ты вставляешь его (Ctrl+V), он оттуда извлекается.
Резюме для твоего примера:
Ты сказал: "Буфер = некая команда которая постоянно считывает какие-то значения, например количество предметов".
Более точное объяснение будет таким:
В памяти игры есть область (буфер), где хранится число, обозначающее количество предметов. Команды (инструкции кода) игры, отвечающие за отрисовку интерфейса, постоянно считывают значение из этой области памяти, чтобы отобразить его на экране. Другие команды (например, при использовании предмета) записывают в эту область новое значение.Надеюсь, теперь стало понятнее! Буферы — это невидимые, но абсолютно необходимые "рабочие лошадки", которые обеспечивают плавную и быструю работу всех программ.
AndreyName сказал(а):↑Кто их создал? Никто не знает но они существуют
Нажмите, чтобы раскрыть...AndreyName сказал(а):↑Буферы создаются программным кодом
Нажмите, чтобы раскрыть...AndreyName сказал(а):↑И что в них читается и пишется секрет
Нажмите, чтобы раскрыть...AndreyName сказал(а):↑В памяти игры есть область (буфер), где хранится число, обозначающее количество предметов
Нажмите, чтобы раскрыть...андрей ну вы чего
chokins сказал(а):↑андрей ну вы чего
Нажмите, чтобы раскрыть...Я имею ввиду кто их создал? Неужели авторы сидели и такие думали "а давайте создадим буфер, который будет сканировать айтемы,хп и много чего ещё".
Нет, их создал компилятор! Я спрашивал у разрабов-они не занимаются таким вообще.
Вопрос кто их создал открытый.
AndreyName сказал(а):↑Я имею ввиду кто их создал? Неужели авторы сидели и такие думали "а давайте создадим буфер, который будет сканировать айтемы,хп и много чего ещё".
Нет, их создал компилятор! Я спрашивал у разрабов-они не занимаются таким вообще.
Вопрос кто их создал открытый.
Нажмите, чтобы раскрыть...ну если их создал компилятор то очевидно что буферы создали люди которые создали компилятор, нет?
Тема закрыта
-
ЗаголовокРазделОтветов ПросмотровПоследнее сообщение
-
Сообщений:1
Просмотров:1
-
Сообщений:2
Просмотров:1
-
Сообщений:10
Просмотров:15
-
Sa1azar3 09 Nov 2025 в 18:21Сообщений: 9 09 Nov 2025 в 18:21
Сообщений:9
Просмотров:31
-
Nox305 09 Nov 2025 в 18:16Сообщений: 7 09 Nov 2025 в 18:16
Сообщений:7
Просмотров:23





