Редактор пам'яті локальних процесів на Linux. Знайдіть у грі число (гроші, життя, набої), відсійте зайві адреси, підставте своє значення і за потреби заморозьте його.
GameX — локальний редактор значень у пам'яті (читання/запис через process_vm_readv / process_vm_writev, заморозка, .gxt). Для своїх однокористувацьких ігор і навчальних програм.
Не плануються і не додаються:
| Немає | Пояснення |
|---|---|
| Обхід античиту | Немає приховування GameX, драйверів ядра, патчів захисту |
| Мережевий / онлайн-чит | Немає клієнт–серверних хаків, пакетів, спільних читів для матчів |
| Приховування процесу | GameX видно в системі як звичайна програма |
| NOP / підміна коду / inject | Немає патчу інструкцій у грі (у «Хто пише…» NOP теж не ставиться) |
| Speedhack | Немає прискорення/уповільнення таймерів і часу гри |
Онлайн-матчі, чужі сервіси й захищені ігри — не ціль. Якщо порушите правила сервісу чи закон — відповідальність на вас.
Мова — C++20. Інтерфейс — Qt Widgets. Ядро (gamex_core) від Qt не залежить.
sudo apt install g++ cmake ninja-build
# системний Qt (один із варіантів):
sudo apt install qt6-base-dev
# опційно — мнемоніка в «Хто пише…»:
sudo apt install libcapstone-devПовідомлення cmake Capstone not found — не помилка: без Capstone збірка йде нормально, лише без тексту інструкцій у watchpoint.
cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release
cmake --build build
./build/gamex_core_tests # має надрукувати ok
./build/gamex # запуск без встановленняЯкщо Qt стоїть з офіційного інсталера в ~/Qt/… (наприклад 6.12), вкажіть шлях до нього. Інакше після install може підвантажитись системний Qt іншої версії — і буде помилка version Qt_6.12 not found:
cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX="$HOME/.local" \
-DGAMEX_QT_ROOT="$HOME/Qt/6.12.0/gcc_64"
cmake --build build
cmake --install buildШлях до бібліотек Qt ($GAMEX_QT_ROOT/lib) потрапляє в RUNPATH бінарника — окремий LD_LIBRARY_PATH не потрібен.
У домашній каталог (без root; переконайтесь, що $HOME/.local/bin у PATH):
cmake -S . -B build -G Ninja \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX="$HOME/.local"
# за потреби додайте -DGAMEX_QT_ROOT=...
cmake --build build
cmake --install build
gamexВстановлюється: bin/gamex, ярлик share/applications/gamex.desktop, іконки share/icons/hicolor/…, документація share/doc/gamex/ (LICENSE, NOTICE, README.md).
З $HOME/.local:
rm -f "$HOME/.local/bin/gamex" \
"$HOME/.local/share/applications/gamex.desktop" \
"$HOME/.local/share/icons/hicolor/"*/apps/gamex.png \
"$HOME/.local/share/icons/hicolor/scalable/apps/gamex.svg"
rm -rf "$HOME/.local/share/doc/gamex"На Ubuntu з kernel.yama.ptrace_scope = 1 (так зазвичай і є):
| Як запускаєте GameX | Що працює |
|---|---|
| Звичайний користувач | Краще кнопка Запустити (гра — дочірній процес). Обрати процес до вже відкритої гри ядро часто блокує. |
| З правами root | Кнопка / меню З правами root або sudo -E gamex. Окреме вікно; зазвичай можна підключатись і до чужих (не дочірніх) процесів. |
Не тримайте GameX під root без потреби. Деякі захищені процеси (snap, dumpable=0, ptrace_scope=3) можуть лишатись недоступними навіть для root.
Кнопка З правами root питає пароль у zenity і передає його в sudo -S (не через аргументи командного рядка). На своїй машині цього зазвичай досить; пароль на мить є в пам'яті GameX. Якщо хочете без цього — просто sudo -E gamex у терміналі.
- Запустити гру (файл + аргументи; наступні рази — Процес → Недавні запуски) або Обрати процес, якщо права дозволяють.
- Ввести значення з екрана (або вираз
100*10, або шаблонDE ?? AD) → Шукати. - Змінити параметр у грі → Відсіяти. Помилково звузили список — Скасувати відсів (Ctrl+Z, один крок). Поки сесія активна, Шукати вимкнено (спочатку Скинути пошук).
- У верхньому списку можна фільтрувати адреси/значення і Ctrl+C (або ПКМ) — копіювати адреси.
- Додати обране (або подвійне клацання) вниз → правити «Значення → у гру».
Меню: Файл, Процес, Пошук, Таблиця, Інструменти, Довідка (F1 — кейси людською мовою; Що це? / Shift+F1 — підказка по кнопці). Частина дій лише в меню (наприклад Від'єднати, F5–F8, Недавні запуски).
Розмір вікна, остання команда запуску й галочки фільтрів у діалозі процесів зберігаються між сесіями.
| Що | Коротко |
|---|---|
| Пошук | Рівність, порівняння, діапазон, «зросло/зменшилось на N», невідомий знімок, відсів у фоні + Стоп; undo відсіву |
| Збіги | Фільтр за адресою/значенням, копіювання адрес (Ctrl+C); прев’ю до 5000 рядків |
| Типи | 1–8 байтів (є i24), float, UTF-8, байти; LE/BE |
| Таблиця | Заморозка (4 режими; під час пошуку пауза), групи, F5–F8, файл .gxt |
| ASLR | module+зсув, пошук статичних вказівників |
| Формули | Вирази в полі пошуку; блок Знімки M1–M4 + шаблони; під час пошуку M/формула вимкнені |
| Структура | Кілька полів зі зсувами, пошук у фоновому потоці |
| Послідовність | Кнопка Послідовність…: кілька чисел одного типу підряд (1000 555 333 5555) |
| Hex | Перегляд і запис байтів навколо адреси |
| Watchpoint | «Хто пише…» через ptrace; RIP — інструкція після запису; TRACECLONE |
| Емулятори | Профілі NES/SNES/GBA/…; при кількох кандидатах RAM — вибір зі списком pathname |
src/core пам'ять, сканер, таблиця, заморозка, watchpoint, профілі емуляторів
src/ui вікно Qt
tests перевірки ядра без Qt
cmake/ шаблон номера/часу збірки
Збірка для розробки, архітектура, тести, стиль коду й що не приймаємо у патчах — у CONTRIBUTING.md. Коротко також у довідці програми (F1 → «Для розробників»).
GameX розповсюджується на умовах GNU GPL версії 3 (або пізнішої, на ваш вибір). Текст — у LICENSE.
Сторонні залежності (Qt, опційний Capstone тощо) описані в NOTICE.