Skip to content

Программирование

Программирование и отладка

49 Темы 82 Сообщения

Подкатегории


  • Программирование и отладка

    9 Темы
    9 Сообщения
    MasterGHM

    API

  • Программирование плагинов, примеров, инфо

    17 Темы
    43 Сообщения
    MasterGHM

    Для работы с репозиторием скачиваем SourceTree (или любой другой git клиент)

    Руководство как ей пользоваться ищем на yotube или статьи.
    Что такое git аналогично.
    Как работать с git hub сервисом тоже можно найти.

  • Среды разработки, программы, утилиты и т.п.

    2 Темы
    2 Сообщения
    MasterGHM
    Программа Cheat Engine 7.5

    ---
    Назначение:

    для создания читов (поиска и изменения игровых значений в памяти и др.) для обучения программированию.

    Ссылка на сайт для скачивания.
    Ссылка на официально руководство (только для опытных)

    Для тех, кто только начал обучаться программированию с помощью Cheat Engine рекомендуется читать темы на этом форуме или искать простые примеры и руководства. Также можно задать вопросы по Cheat Engine здесь на форуме

  • Конспекты, заметки, руководства, описания, faq

    3 Темы
    3 Сообщения
    MasterGHM

    Инфа по совместной работе с гитом. Может быть пригодится кому, а может и нет. Такую систему я использую на работе недавно.

    Можно совместно работать над одним большим проектом через git-flow. Возможно, кто-то из форумчан тоже использует git flow на работе.

    git-flow — это набор расширений git предоставляющий высокоуровневые операции над репозиторием для поддержки модели ветвления Vincent Driessen.

    Кратко. Модель контроля версии построена на 4 ветках

    master - релизы
    develop - разработка
    feature - фичи
    hotfix - исравления

    С develop начинается разработка через копирования в ветку feature.
    Над фичей идет работа, а после завершения feature мержится с develop и feature сразу удаляется.
    После запланированных изменений develop мержится с master уходя в релиз.
    Если возникли баги, то от master создается ветвь на hotfix . После фиксов hotfix мержится с master.

    Доступ к мастер ветки может иметь один человек или его доверенные лица. Ветка Develop открыта для разработчиков. Это значит, что множество разработчиков колдуют в Develop ветке, а мержит изменения с master уже главный разработчик или несколько главных разработчиков.

    В мастере создаются теги с обозначением версии.

    Учитывая номер версии МАЖОРНАЯ.МИНОРНАЯ.ПАТЧ, следует увеличивать:

    МАЖОРНУЮ версию, когда сделаны обратно несовместимые изменения API.
    МИНОРНУЮ версию, когда вы добавляете новый функционал, не нарушая обратной совместимости.
    ПАТЧ-версию, когда вы делаете обратно совместимые исправления.
    Дополнительные обозначения для предрелизных и билд-метаданных возможны как дополнения к МАЖОРНАЯ.МИНОРНАЯ.ПАТЧ формату.

    git-flow заметки
    Семантическое версионирование

  • 12 Темы
    18 Сообщения
    MasterGHM

    В этом разделе находятся темы связанные с игровым движком Unity3d.
    В основном я буду писать темы по работе с этим движком.

  • Cheat Engine и Lua. Старт

    Прикреплена Перенесена
    1
    0 Голоса
    1 Сообщения
    109 Просмотры
    Нет ответов
  • Создать структуру программно

    2
    0 Голоса
    2 Сообщения
    10 Просмотры
    MasterGHM

    Решил попробовать написать CE Lua скрипт, который прочесывает структуру и в Dissect data/structures окне создавал бы структуру только со смещениями, с которыми код работает, т.е. читает или пишет.

    Например, мой персонаж прогуливается по городу, а каждые 200 мс ставится брейкпоинт на смещение +1 до гипотетической N границы структуры (например до 4096).

    Я не успел сделать определение типа, но смещения внутри структуры получить я успел.

    Итак, находим начало структуры любой. Запускаем Lua скрипт и просто что-то делаем в игре. Потом вылазит текст с дизассемблированными инструкциями и смещениями. Уже по этим логам можно определить вручную

    к каким смещением было обращение (адреса по ним мы и будем менять или сравнивать структуры между собой позже)

    по виду инструкции и соседнему смещению уже примерно можно определить тип данных и их размер
    a3ea23e7-54e8-46c5-82a5-f3d2a73cc540-изображение.png
    Осталось сделать определение типа, а это не так уж долго сделать и осталось взять код из предыдущих записей в блоге формирования структуры в окне dessect data. Так мы получим структуру только с активными смещениями, (а зачем нам пассивные?) и определим в них тип, я надеюсь определим правильно

    Пример кода, который я использовал

    addressStructure1 = 0x412E0200 --> адрес начала структуры в любой игре sizeStructure = 100 --> гипототический размер структуры 100 для быстрых поисков, по умолчанию 4096 indexStructure = 0 --> индекс внутри структуры, который будет перемещаться вместе с breakPointAddress breakPointAddress = 0 --> адрес, на который сейчас постален брейкпоинт waitTimeTillBreak = 300 --> частота активности смещеиня resultText = '' --> конкатенация частей текста в этой переменной \-- Функция пытается поставить брейкпоинт на следующий байт в структуре function TryNextSetBreakPointToAddress() debug_removeBreakpoint(breakPointAddress) indexStructure = indexStructure + 1 if indexStructure > sizeStructure then debugTimer.Interval = 1000 debugTimer.Enabled = false debugTimer.destroy() debug_continueFromBreakpoint(co_run) print(resultText) --> вывод результата с завершением отладки return end breakPointAddress = addressStructure1 + indexStructure debug_setBreakpoint(breakPointAddress, 1, bptAccess, bpmDebugRegister) debug_continueFromBreakpoint(co_run) end \-- Любимая функция снятия отладочных данных function debugger_onBreakpoint() -- проверить обращение к структуре prevAddress = getPreviousOpcode(RIP) resultText = resultText..string.format('Offset: + %X : %s', indexStructure, disassemble(prevAddress)) .. '\r\n' TryNextSetBreakPointToAddress() return 1 end \-- Простой таймер debugTimer = createTimer(nil, false) debugTimer.OnTimer = function(timer) TryNextSetBreakPointToAddress() end debugTimer.Interval = waitTimeTillBreak debugTimer.Enabled = true breakPointAddress = addressStructure1 + indexStructure debug_setBreakpoint(breakPointAddress, 1, bptAccess, bpmDebugRegister)
  • Часть2. Lua простые регулярные выражения

    1
    0 Голоса
    1 Сообщения
    12 Просмотры
    Нет ответов
  • Часть1. Lua простые регулярные выражения

    1
    0 Голоса
    1 Сообщения
    39 Просмотры
    Нет ответов
  • 0 Голоса
    1 Сообщения
    19 Просмотры
    Нет ответов
  • Visual Studio. Топ 10 часто используемых горячих клавиш

    1
    0 Голоса
    1 Сообщения
    1k Просмотры
    Нет ответов