1. Гость, мы просим Вас ознакомиться с Правилами Форума и Отказом от ответственности!

rcmp - библиотека для хуков и работы с памятью

Тема в разделе 'C/C++', создана пользователем int 3, 13 ноя 2020.

  1. TopicStarter Overlay

    int 3 Программист Пользователи Open Source Contributor

    Сообщения:
    342
    Лайки:
    531
    Пол:
    Мужской
    Репутация:
    10
    Страна:
    Russian Federation Russian Federation
    rcmp — библиотека для хуков и работы с памятью

    Создана с целью упростить жизнь C++ разработчика, который пишет читы/библиотеки/моды/плагины. Для её использования нужно:
    1. Знать современный C++ и уметь на нём писать (хеллоу-ворлды и код на "C с классами" не считаются)
    2. Иметь опыт написания библиотек, которые внедряются в чужой процесс (через инжект, LD_PRELOAD или какую-либо другую технику)
    Причины создания библиотеки при наличии множества альтернатив подробно описаны в README. Если кратко — перемешивание ассемблера и C++ чревато багами, ухудшает качество кодовой базы и распыляет внимание разработчика, в то время как библиотека избавляет от низкоуровневой каши. Благодаря rcmp, за последние несколько лет я не написал ни строчки на ассемблере, что не может не радовать. На этом вступление окончено, перейдём к практике.

    Подключение к проекту
    Предполагая, что CMake проект вашей библиотеки my-cool-library уже создан и rcmp лежит в external/rcmp:
    Код:
    add_subdirectory(external/rcmp)
    target_link_libraries(my-cool-library PRIVATE rcmp)
    Примеры использования
    Так как единственная полуживая игра на этом форуме - это PW, то и примеры будут по ней. В примерах используется ядро версии 1.5.5. С тем же успехом можно работать с любым другим сервисом или клиентской частью. Сами примеры немного надуманы, потому что серьезные вещи не реализуются в несколько строк кода, но суть уловить можно.
    Из примеров видно, что можно перехватывать вообще любые функции, прописывать произвольную свою логику вместо оригинальной или в дополнение к ней. Всё ограничивается лишь фантазией разработчика. Напишите в комментариях, каких примеров не хватает — допишу.
    • Ссылка на библиотеку: [​IMG]
    • Требования: C++17, Windows/Linux, x86/x86-64.
    P.S. "Боевой" пример использования библиотеки — Replay Mod для ныне популярной игры Among Us
    Последнее редактирование: 13 ноя 2020
    deadraky, salitypw, SkyDev и 4 другим нравится это.
  2. ser_VICE Пользователи

    Сообщения:
    49
    Лайки:
    16
    Пол:
    Мужской
    Репутация:
    0
    Страна:
    Russian Federation Russian Federation
    спасибо. название темы надо бы расписать немного, а то такое не понятное. так еще вопрос, как с ней работать с сервисом glinkd , ведь там нет дебаг инфы, можно пример?
  3. TopicStarter Overlay

    int 3 Программист Пользователи Open Source Contributor

    Сообщения:
    342
    Лайки:
    531
    Пол:
    Мужской
    Репутация:
    10
    Страна:
    Russian Federation Russian Federation
    Дополнил

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

    Если отладочной информации нет, то найти функцию — это лишь верхушка айсберга. Даже когда функция найдена, сигнатура восстановлена (хотя бы частично, с точностью до "эквивалентных" типов) и хук активирован, ты всё ещё не знаешь, что значат её аргументы. Так что хукать нужно в тот момент, когда ты понимаешь, что и зачем ты делаешь. Впрочем, можно хукать и случайные функции, логгировать их аргументы и таким образом анализировать поведение — это удобно.
    ser_VICE нравится это.
  4. un712 Пользователи

    Сообщения:
    53
    Лайки:
    13
    Репутация:
    0
    В случае с глинком всё намного проще. Различие в версиях 1.5.3 и 1.5.5 только в домах. Достаточно дописать десяток пакетов в rpcalls.xml и скомпилировать линк.
    ser_VICE нравится это.
  5. deadraky Пользователи

    Сообщения:
    257
    Лайки:
    191
    Пол:
    Мужской
    Репутация:
    1
    Команда:
    HackPW
    Страна:
    China China
    Там есть multicast пакеты связанные с домами ещё, которые надо дописывать. Из-за них при входе в дома может начаться что-то страшное...
  6. un712 Пользователи

    Сообщения:
    53
    Лайки:
    13
    Репутация:
    0
    Он такой один, HomeSceneElements и с ним не было замечено проблем.
    ser_VICE нравится это.
  7. Kred24 Пользователи

    Сообщения:
    8
    Лайки:
    1
    Пол:
    Мужской
    Репутация:
    0
    Команда:
    Сталкерыс
    Страна:
    Ukraine Ukraine
    Один разве такой? По моему еще парочка есть аналогичных
  8. un712 Пользователи

    Сообщения:
    53
    Лайки:
    13
    Репутация:
    0
    Один.
Черновик сохранён Черновик удалён
Similar Threads
  1. FeniX
    Ответов:
    1
    Просмотров:
    2.560
  2. Violent
    Ответов:
    2
    Просмотров:
    1.846
  3. Wicked
    Ответов:
    2
    Просмотров:
    981
  4. Nightray
    Ответов:
    18
    Просмотров:
    4.232
  5. Paradise
    Ответов:
    0
    Просмотров:
    700
Загрузка...

Поделиться этой страницей