Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
#Круги добра
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Я хочу получать рассылки с лучшими постами за неделю
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
Создавая аккаунт, я соглашаюсь с правилами Пикабу и даю согласие на обработку персональных данных.
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр Монстрикс — это динамичная стратегия, где ты собираешь, улучшаешь и сражаешься с могучими монстрами.

Монстрикс

Мидкорные, Стратегии, Мультиплеер

Играть

Топ прошлой недели

  • SpongeGod SpongeGod 1 пост
  • Uncleyogurt007 Uncleyogurt007 9 постов
  • ZaTaS ZaTaS 3 поста
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

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

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
0 просмотренных постов скрыто
455
9937305
4 месяца назад
Лига Политики

Ответ на пост «Толстенькое депутатство в 21 год...»⁠⁠3

Уважаемый автор поста, кажется Вы не понимаете устройство состава государственной думы. Всегда в наличии должны быть:

- Певец/певичка, желательно еврей, который через 20 лет коньки откинет.

- Какое-то количество глупых баб недоактрис, чтобы просто были.

- Отбитый боксёр который знает только "ээээ" и "аааа". Мысли то у него огого, а вот язык - "пффщщщффпщ".

- Артист погорелого театра, желательно сбивающий людей когда бухой за руль садится.

- Сынок бизнесмена, который шёл в туалет, и случайно не в то помещение зашёл.

И дальше по списку.

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

Ну это вкратце.

Вот примерно так и должна выглядеть команда по спасению мира, а вы что думали?

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

Политика Студенты Армяне Госдума Абсурд Движок Ответ на пост Текст
90
2
KosmoKamikadze9
KosmoKamikadze9
6 месяцев назад
Лига Разработчиков Видеоигр

Легендарный 2D движок, о котором никто не знает⁠⁠

Поговорим об одном движке, который подарил нам инди-хиты уровня Hotline Miami, Undertale, Pizza Tower, или Katana Zero. А Loop hero? Hyper Light Drifter?  ZERO Sievert? Risk of Rain? О движке, находящемся в тени, но занимающем третье место в Steam. О движке с 25-летней историей. Но за пределами геймдеверской тусовки мало кто слышал о нём.

[моё] Gamedev Game maker Движок Игры Undertale Видео YouTube
0
12
0sadchi
0sadchi
7 месяцев назад
Лига Разработчиков Видеоигр

Похищаем CheatEngine на C++ с нуля. Часть 0 - Введение⁠⁠

🌐 Введение

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

Что именно будем делать? Попробуем без особых знаний залезть в исходники софта для отладки и модификации кода, под названием Cheat Engine. Он создавался годами, а наша задача — апроприировать эти знания за короткий промежуток времени!

👤 Что такое Cheat Engine?

Cheat Engine — это мощный инструмент для реверс-инжиниринга и модификации кода. Хотя он позиционируется как “Чит Движок”, он фактически способен конкурировать с любыми дебаггерами по ряду причин:

  • 🔒 Оснащён собственным драйвером, который даёт более высокий уровень прав и скрытность.

  • 🕹️ Обладает встроенным гипервизором, который можно загрузить прямо в рантайме ОС.

  • 🌟 Бесплатный и открытый исходный код делает его удобным для изучения.

💪 Зачем писать свой Cheat Engine?

Мы поняли, что это классная штука, она бесплатная, открытая и она работает. Так зачем же его писать самим?!
Главное - 🎓 Это сложная и интересная задача. Ну и я ни на что не намекаю, но …😉

Похищаем CheatEngine на C++ с нуля. Часть 0 - Введение C++, Читер, Движок, Windows, Игры, Длиннопост

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

🔄 План работы

Чтобы создать минимально рабочий прототип, нам нужно реализовать ключевые функции:

  1. 🔐 Подключение к процессу.

  2. 🤖 Чтение и сканирование памяти.

  3. 🛠️ Редактирование памяти.

  4. 🔄 Таблица с найденными адресами.

  5. 📝 Дизассемблирование кода.

  6. 🏢 Отображение списка загруженных библиотек.

  7. 🌧️ Отладка (брейки, стек вызовов, регистры).

🔍 Исследуем исходники Cheat Engine

Открываем репозиторий Cheat Engine и видим несколько важных директорий:

Похищаем CheatEngine на C++ с нуля. Часть 0 - Введение C++, Читер, Движок, Windows, Игры, Длиннопост
  • Cheat Engine — основной код.

  • DBKKernel — проект драйвера.

  • DBVM — гипервизор.

  • lua — движок для скриптов.

Так как драйвер и гипервизор мы пока трогать не будем, откроем основной проект.

😅 Тут нас ждёт сюрприз: Cheat Engine написан на Паскале!

  • .lfm — GUI формы.

  • .pas — исходники с функциями.️️ 🔖 (они-то нам и нужны)

🌟 Разбираемся с кодом

Заглянув в основной проект, можно заметить, что там ку-у-у-у-ча файлов, но пугаться не стоит, так как главных всего-то ничего! А именно…

🔄 ProcessList.pas
    Этот файл нужен для сбора и хранения информации о процессах.

procedure GetProcessList(ProcessList: TStrings; NoPID: boolean=false; noProcessInfo: boolean=false);

Перегрузка процедуры для управления выводом информации о процессах.

Похищаем CheatEngine на C++ с нуля. Часть 0 - Введение C++, Читер, Движок, Windows, Игры, Длиннопост
Похищаем CheatEngine на C++ с нуля. Часть 0 - Введение C++, Читер, Движок, Windows, Игры, Длиннопост
Похищаем CheatEngine на C++ с нуля. Часть 0 - Введение C++, Читер, Движок, Windows, Игры, Длиннопост

Чтобы продвинуться дальше, просто забиваем в поиск по файлам название функции GetProcessList, это приведет нас к следующему файлу и еще одной интересной функции…

Похищаем CheatEngine на C++ с нуля. Часть 0 - Введение C++, Читер, Движок, Windows, Игры, Длиннопост

🔄 MainUnit.pas (Это главный файл с логикой для GUI форм)
    Здесь вызывается Open_Process, который используется во всех интерфейсах дебаггера (Kernel, DBVM).

🔄 CEFuncProc.pas
    Тут находится реализация Open_Process.

🔄 NewKernelHandler.pas
     Содержит ключевые функции, такие как:

  function ReadProcessMemory(...);   function WriteProcessMemory(...);

🔄 Disassembler.pas
    Файл на 16 000 строк, отвечающий за дизассемблирование кода.

🚀 Итоги

Теперь мы знаем как:
  ✅ Получать список процессов.
  ✅ Открывать хендл к процессу.
  ✅ Читать и записывать память.

Следующий шаг — разобраться с отладчиком и дизассемблером! 💪

Функции отладчика находятся все в том же NewKernelHandler.pas, они так же представлены перегрузками для разных интейфейсов: winapi, driver, server и т.д. Но в данном случае мы пока обратим внимание на winapi и уже после будет шаг за шагом разбирать другие методы работы.

Ключевыми будут 👇

// Получение адреса функции GetThreadContext из библиотеки WindowsKernel и присваивание его переменной GetThreadContext GetThreadContext:=GetProcAddress(WindowsKernel,'GetThreadContext');

// Получение адреса функции SetThreadContext из библиотеки WindowsKernel и присваивание его переменной SetThreadContext SetThreadContext:=GetProcAddress(WindowsKernel,'SetThreadContext');

🤏 Именно через SetThreadContext мы и будем устанавливать аппаратные точки останова, изменяя регистр DRx (Debug Registers).

🔹 Как установить хардверный бряк через SetThreadContext?

  • 1️⃣ Использовать GetThreadContext, чтобы получить текущий контекст потока.

  • 2️⃣ Изменить один из DR0–DR3 (адрес бряка).

  • 3️⃣ Настроить DR7 для активации бряка.

  • 4️⃣ Применить изменения через SetThreadContext.

🔹 Пример кода

CONTEXT ctx; ctx.ContextFlags = CONTEXT_DEBUG_REGISTERS; GetThreadContext(hThread, &ctx);

ctx.Dr0 = targetAddress; // Адрес для бряка

ctx.Dr7 |= 1; // Включаем бряк

SetThreadContext(hThread, &ctx);

📌 Важно: бряк привязан к конкретному потоку, а не всему процессу.

👁️👁️👁️ Там же видим

// 🔍 Получение адреса функции Wow64GetThreadContext из библиотеки WindowsKernel и присваивание его переменной Wow64GetThreadContext

Wow64GetThreadContext:=GetProcAddress(WindowsKernel,'Wow64GetThreadContext');

// 🔍 Получение адреса функции Wow64SetThreadContext из библиотеки WindowsKernel и присваивание его переменной Wow64SetThreadContext

Wow64SetThreadContext:=GetProcAddress(WindowsKernel,'Wow64SetThreadContext');

SuspendThread:=GetProcAddress(WindowsKernel,'SuspendThread'); // ⏸️ Получение адреса функции SuspendThread из библиотеки WindowsKernel, которая используется для приостановки выполнения потока

ResumeThread:=GetProcAddress(WindowsKernel,'ResumeThread'); // ▶️ Получение адреса функции ResumeThread из библиотеки WindowsKernel, которая используется для возобновления выполнения ранее приостановленного потока

WaitForDebugEvent:=GetProcAddress(WindowsKernel,'WaitForDebugEvent'); // ⏳ Получение адреса функции WaitForDebugEvent из библиотеки WindowsKernel, которая используется для ожидания события отладки в процессе или потоке

ContinueDebugEvent:=GetProcAddress(WindowsKernel,'ContinueDebugEvent'); // 🔄 Получение адреса функции ContinueDebugEvent из библиотеки WindowsKernel, которая используется для продолжения выполнения после обработки события отладки

DebugActiveProcess:=GetProcAddress(WindowsKernel,'DebugActiveProcess'); // 🛠️ Получение адреса функции DebugActiveProcess из библиотеки WindowsKernel, которая используется для начала отладки процесса по его идентификатору

Здесь же видим непонятный WindowsKernel, пробуем поискать в файле и находим:

WindowsKernel: Thandle; // 🏗️ Переменная, хранящая дескриптор ядра операционной системы Windows

Но это только объявление, пробуем прощелкать далее и находим определение:

WindowsKernel:=LoadLibrary('Kernel32.dll'); // 📦 Попытка загрузить библиотеку ядра Windows (Kernel32.dll) и сохранение дескриптора в переменную WindowsKernel. // ❌ Если библиотека не найдена, то WindowsKernel будет равен 0.

Этого достаточно для базовой работы с процессами. Остается поглядеть, что там в Disassembler’е.
Как мы помним, там 16 000 строк кода, и все, что они делают, так это проверяют каждый байт на константное значение.
Если совпадает, то устанавливают строковую мнемонику (ADD, MOV и др.).

Рассмотрим поближе. У нас есть базовый объект дизассемблера, defaultDisassebler:

defaultDisassembler:=TDisassembler.create; // 🛠️ Создаем объект по умолчанию и присваиваем его глобальной переменной.

Который инициализируется методом create в классе TDisassembler,
далее на участок памяти вызывается функция disassemble, которая возвращает строку.
Начинается функция на 1624 строке, а заканчивается на 15710 строке.

Как уже выше упомянуто, почти все эти строки занимает switch,
который проверяет байты и отдает назад название инструкции.

case memory[0] of //opcode

$00 : begin

//🏹🏹

if (aggressivealignment and (((offset) and $f)=0) and (memory[1]<>0) ) or ((memory[1]=$55) and (memory[2]=$89) and (memory[3]=$e5)) then

begin

description:='Filler'; lastdisassembledata.opcode:='db'; LastDisassembleData.parameters:=inttohex(memory[0],2);

end

else

begin

description:='Add';

//🏹🏹

lastdisassembledata.opcode:='add';

lastdisassembledata.parameters:=modrm(memory,prefix2,1,2,last)+r8(memory[1]); inc(offset,last-1);

end;

end;

$01 : begin....

Думаю, на этом можно закончить введение, более подробно рассмотрим каждый из методов уже на практике, когда начнем писать свой mega-omega чит-движок с плюшками.

На этом откланяюсь, а все претензии и пожелания можно писать сюда 👉 https://t.me/osiechan/52, здесь же можно скачать исходные файлы с комментариями на каждой строке (да-да, даже на 16 000 строк) и pdf статьи.

А прокачать свой навыки чито-строителя можно на бесплатном, открытом курсе по созданию бота для мморпг 👉 https://t.me/osiechan/41.

Спасибо за внимание :з.

Показать полностью 6
[моё] C++ Читер Движок Windows Игры Длиннопост
1
Вопрос из ленты «Эксперты»
user6820754
8 месяцев назад

Чем движок Presto был раньше лучше движка Chromium?⁠⁠

Или же не было у него плюсов?

Движок Браузер Opera Спроси Пикабу Вопрос Текст
8
VUMIX98
VUMIX98
8 месяцев назад
Серия ?!Вопросы в жизни!?

Что лучше по вашему⁠⁠

[моё] Дебаты Технологии Движок Игровой Компьютер Телефон Планшет
3
15
Ershistaya
Ershistaya
11 месяцев назад

Памагити!⁠⁠

Памагити! Парейдолия, Минск, Движок
Показать полностью 1
Парейдолия Минск Движок
1
0
aks2dio
aks2dio
1 год назад

Рекомендация видео по анимированию костей⁠⁠

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

🔩 Примечательного в докладах Unigine то, что часто они про разработку непосредственно движка и его внутрянки, а не про разработку игр на этом движке. Информация полезная, порой крайне интересная и очень показательная к тому, для чего в технических ВУЗ'ах изучают математику и куда её прикладывают. Задачка на анимацию костей как раз про это.

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

👍 Хороший контент для того, чтобы освежить запылившиеся знания (или может получить новые). И подан доступно.

—————————————

#gamedev #development #engine #animation #unigine #bones #геймдев #разработка #движок #анимация #рекомендация #видео

Показать полностью
Разработка Gamedev Обучение Unigine Движок Анимация Рекомендации Доклад Блог Видео Видео ВК ВКонтакте (ссылка) YouTube (ссылка)
0
21
BloodyPy
BloodyPy
1 год назад
Серия Движок Материи

Лунная походка и скольжение⁠⁠

Несколько видео о лунной походке и "нереальности" скорости передвижения относительно силы трения.Количеству движений.Особенно видно при синхронном движении камеры.На одном видео(для сравнения) видно человека который шел задом медленнее, чем профессионал лунной походки.

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

Ну а в русском языке есть выражение. "Одна нога здесь, другая там". О пространственном перемещении.

В японской культуре или аниме есть такой шаг Сюнпо.В боевых исскуствах есть методики быстрого преодоления растояния около 2-3 метров до противника вне пределов восприятия.Противнику кажется что к нему приблизились мгновенно, а удар нанесли внезапно.

Пространственный домкрат.Лунная походка.Китаец

уличная лунная походка.Вращяющийся паттерн.Несоотвествие скольжения - рычагам(усилию) ног.Трению или весу человека.

Хороший пример.Китаец скользит по бетону без трения.Непрофессионал - цепляется носками за линолеум.

Лунные походки Джексона.Оказывается джексон учился у французкого великого Мима.

Marcel Marceau великий французкий мим.Родина мимов - франция :).Его исполнение.

Показать полностью 4
[моё] Наука Исследования Йога Мим Мимика Лунная походка Майкл Джексон Домкрат Скольжение Движок Магия Боевые искусства Матрица Сбой матрицы Видео Вертикальное видео Длиннопост
0
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии