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

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

本贴由 int 32020-11-13 发布. 版块名称: C/C++

  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
    Последнее редактирование: 2024-05-12
    已获得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 Пользователи

    帖子:
    9
    支持:
    1
    性别:
    Репутация:
    0
    Команда:
    Сталкерыс
    Страна:
    Ukraine Ukraine
    Один разве такой? По моему еще парочка есть аналогичных
  8. un712 Пользователи

    帖子:
    53
    支持:
    13
    Репутация:
    0
    Один.
  9. hoangkim Пользователи

    帖子:
    1
    支持:
    0
    性别:
    Репутация:
    0
    Страна:
    Taiwan, Province Of China Taiwan, Province Of China
    does it still work, can someone give me a d174 test project?
Черновик сохранён Черновик удалён

分享此页面