Skip to content

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

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

47 Темы 80 Сообщения

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


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

    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 заметки
    Семантическое версионирование

  • 10 Темы
    16 Сообщения
    PitronicP

    Иногда код ассемблера необходимо с делать с условием пример фильтр свой чужой. Реализовать это можно сравнением двух адресов и задать условие. Сравнение задаётся командой cmp, после которой идёт условие прыжка , после которого выполняется ваш код. пример мы нашли смещение от адреса число которое равно 1 от начала структуры адреса игрока и нам надо если оно равно чтоб здоровье было больше. и так пишем наш код.
    cmp [eax+1234],1 // сравнили наш адрес фильтра с единицей
    jne code // если не равно прыжок на метку code
    mov [eax+40],#99999 // а если равно
    кроме метки code могут быть безымянные метки
    @F прыжок в перёд
    @B прыжок назад
    пример
    cmp [eax+1234],1 // сравнили наш адрес фильтра с еденицей
    jne @F // если не равно прыжок в перёд
    mov [eax+40],#99999 // а если равно
    также есть чистая безымянная метка которая позволит сделать два условия
    @@: безымянная метка
    пример с этим же кодом
    cmp [eax+1234],1 // сравнили наш адрес фильтра с единицей
    jne @F // если не равно прыжок в перёд
    mov [eax+40],#99999 // а если равно
    @@: // прыжок на безымянную метку
    mov [eax+40],0 // если [eax+1234],1 не равен это наш враг и с метки @@: не наш игрок умирает
    Теперь таблица условных прыжков и переходов:
    JA прыжок, если выше
    JAE прыжок, если выше или равно
    JB прыжок, если ниже
    JBE прыжок, если меньше или равно
    JC Прыгает, если перенос
    JCXZ прыжок, если равно нулю
    JE прыжок, если равно
    JG прыжок, если больше
    JGE прыжок, если больше или равно
    JL прыжок, если меньше
    JLE прыжок, если меньше или равно
    Прыжок JNA, если не выше
    JNAE прыжок, если не выше или не равно
    Прыжок JNB, если не ниже
    JNBE прыжок, если не ниже или не равно
    Переход JNC, если не выполняется перенос
    JNE прыжок, если не равно
    Переход JNG, если не больше
    JNL прыжок, если не меньше
    JNO переходит, если не переполнено
    JZ прыжок если равно нулю.

  • Cheat Engine и Lua. Старт

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

    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 Сообщения
    38 Просмотры
    Нет ответов
  • 0 Голоса
    1 Сообщения
    17 Просмотры
    Нет ответов
  • Visual Studio. Топ 10 часто используемых горячих клавиш

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