-
Постов
2 999 -
Зарегистрирован
-
Победитель дней
129
Тип контента
Профили
Форумы
Загрузки
Блоги
Весь контент MasterGH
-
Ultimap 2. Ничего не скажу. железо не подходит Ну, да в Ultimap есть такой баг. Можешь написать Дарк Байту Для вывода и сохранения данных из окна Ultimap можно использовать код из темы Работа с данными ultimap через lua.
-
Отличная работа
-
main.lua файл в директории CE остается самым приоритетным. Там самое интересное, а это руководство как общая информация по синтаксису. Наиболее интересные функции, которые можно использовать например для голосового оповещения, что по адресу X поменялось значение - Вывод сообщения - Чтение значения - Таймер После того как для задачи нашли все функции в main.lua , то можно написать код проверки изменения значения по адресу и вывода сообщений.
- 2 ответа
-
- 1
-
-
Lua 5.3 Руководство Это руководство является официальным описанием языка Lua. lua_5.3_manual_rus.rar Функции в CE Lua Engine: main.lua (в директории с программой) Константы CE Lua Engine: defines.lua (в директории с программой) Отрывок из руководства
- 2 ответа
-
- 2
-
-
Когда выйдет версия 1.0 плагина? Для версия 1.0 я хотел бы исправить следующие пункты. 1. Проблемы с визуальной частью. 2. Проблемы с тормозами, после прерывания на ветках (включение опций в плагине). Когда прерываешься на ветках, то включается снимание показания регистров и стека и добавляет очень сильно тормозов. До решения этих визуальных багов и тормозов не хотелось бы присваивать плагину версию 1.0. Тем не менее рисует он классно на не очень быстрых функциях. Я когда функцию просматриваю им, то получаю ценную инфу о том, сколько уникальный проходов было в этой функции, какой код выполнялся, какой не выполнялся. Еще эта ценная инфа умножается, когда действия в игре добавляют новые пути.
-
Обновление на репозитории. (качать оттуда) +Fix. Перемещение адресов в форму плагина. После выделения функции в дизаасемблере верхний и нижний адрес выбираются теперь правильно не зависимо от того в какой последовательности находятся.
-
Спасибо за предложение. Все-таки я остаюсь на битбакеде. Там хоть и тормозной сервис, но там уже все лежит и ссылки на разных форумах именно на битбакед. Напоминаю, если у кого-то затерялась сылка на репозиторий с плагинами к CE, то ref. Я подумал, что архивы обновлений плагинов не буду постить, кому надо сразу заходите на репозиторий и качайте обнову (после уведомления в этой теме) Возможно, сделаю автоматическое обновление плагинов с диалогом подтверждения "Есть обновление. Обновить?" и Кнопки "Да/Нет".
-
Я подумаю
-
Обновление +Поддержка 64-битного процесса. Lua Plugin CE Marked addresses.rar
-
Толковать могу так. Клип переходит плавно из одного в другой, например, по триггерам (проход по направлению со сбросом триггера) и условиям с переменными одного или нескольких типов (переменные меняются — ход анимации будет меняться). Переменные не сбрасываются сами и их надо сбрасывать кодом. Похоже в каком-то адресе не произошел сброс и анимация не идет дальше, а начинается заново. Или из anyState инициатора проходит очень часто клип вставания и ни чем не блокируется (ни триггерами (потому что циклично открываются), ни переменным (потому не меняются до значения выключения)).
-
Ну как? Как-нибудь бы и написали.
-
Исправлено. Обновлен репозиторий. Lua Plugin CE Marked addresses.rar Причина.
-
Плохая оптимизация.rar Есть такой массив temporaryRecordPath и он создавался много раз. Попытался его не создавать, а заполнять nil-ами и проверять их. Думал будет лучше по оптимизации, а стало хуже примерно три раза. upd1: В общем данные не точные. Если долго ждать, все значения по скорости падают в обоих случаях upd2: В оптимазации Lua я ничего не знаю. Надо будет погуглить примеры и решения.
-
Если этот плагин будет полезным, то будет перевод и поддержка в русской версии. Пока рано, сейчас только Eng бета версия.
-
Cheat Engine 6.6 Репозиторй обновлен вчера. Там был фикс. Когда остановили плагин, то пошаговую отладку нельзя было провести, т.к. Lua обработчик отпускал процесс по F9 при любом брейкпоинте. При экспериментах плагина. 1. Раскраска в циклах - не позволяет увидеть дорожки увидел 7-мь одинаковых путей раскрашенных разными цветами (на скриншоте их три, но потом стало 7). Оказалось попал на цикл и пути шли вверх вниз. Когда дорожка на дорожку попадает вертикально на саму себя, то её не отличить. Таким образом 7 дорожек одинаково прошли функцию 2. Тормоза, когда включается анализ стека и регистров Если просто запустить плагин, то мы не видим стек и не видим регистров. Но если мы врубаем пошаговую отладку, то теперь постоянно будет появляться анализ стека и регистров. Теоритически есть выход как это исправить. 3. Тормоза на быстро обращающихся функциях. Была у меня функция. Вызывается примерно 500-1000 раз в секунду, а длина ~200 адресов. Если 1000 *200 = 200 тысяч брейкпоинтов в секунду. Виснет жестко. Один кадр за секунд 20. Есть вариант оптимизировать Lua код при работе с таблицами адресов. Сейчас эта таблица разрушается и заполняется после прохождения функции. Есть предположение, что не очень ускорит, но сделать можно, т.к. это не очень сложно. Над другими вариантами надо думать.
-
Рад сообщить о выходе версии 0.9.2 (beta) Lua Plugin CE Marked addresses.rar * Распаковать архив в папку Autorun с заменой файлов в папке forms. Известные проблемы: 1. Окно памяти с hex мышкой не таскается 2. Debug режим (тот самый с регистрами и стеком в пошаговой отладке) включается, когда ставим галки. А когда появляется анализатор стека, то тормозит игра. Поэтому галки включаем тогда когда надо, потом Stop, потом галки не включаем. Анализатор стека пропадает и тормозов меньше 3. Раскраски-полоски заезжают за цифры. Напрягает. Поправить пока не могу Впечатления: Вот я вижу инструкцию на строк 1К с кучей условных джампов. Я попал на неё через снятие брейкпоинтов с трейслога CE. С помощью этого плагина я могу увидеть "дорожки-полосы", по которым код бегает ловко прыгая по джампам. В общем прикольно. Только пока я ни одной игры не сломал - код писал Что можно знать. Конечно, можно ломать игры без этого плагина, ломали и обходились. Теория. Ветки красятся от адресаА до адресаБ по уникальном путям. Всего возможно 8-мь путей. По цветам определяем куда код пошел и что в игре произошло. После того как увидели пути "хорошие" и "плохие", то думаем как воздействовать на них. Либо меняем условные прыги методом тыка, либо данные по адресам методом тыка. Можно все испортить. Либо на "плохой/хорошей ветке" ставим бряк и врубаем трейслог с выходом из функций, т.е. по ret-ам. Далее по логам, по call-ам ехать и смотреть на стек. Аргументы функций убираются из стека при выходе. Это мы трейсили из глубины вверх. Выключаем плагин. Определяем параметры условного бряка, ставим его и уже трейсим теперь вглубь до ветки. Так для плохой и хорошей ветки два трейслога в глубь. Остается сравнить их ближе к концу веток и понять когда и какая вызывается.
-
Сравнить дампы стека я могу и в CE без IDA. Сдампить два стека с брейкпоинта на начале функции с правильным и не правильным паролем. Дампы отправить в окно структур и там поискать отличия. Или можно попробовать стек глянуть поставив бряк на адресе текста... Я еще сделал ошибку с опцией прерваться на начале ветки по цвету. Нет возможности в плагине прерваться на начале ветки по её цвету не проверив её путь, который еще не был пройден. Я могу это сделать только на конечном адресе. Там можно стек вытянуть, последние регистры, а самое главное включить стандартный CE трейслог и по этой ветке (желаемого цвета) протрейстить продолжение.
-
Плагин раскрашивает адреса в любом случае и с разными значениями регистров, и с одинаковыми. Если код будет выполняться одинаковый, а регистры на нем будут разные, то в одном случае код пройдет по старому пути и это не изменит цвет, в другом случае код пройдет по новому пути. Новый путь будет закрашен новым маркером. Всего доступно для раскраски путей 8 цветов. 7 цветов радуги +1 цвет (радуги не хватило) Значения регистров определяют путь, а мы только следим за путем по адресам. Нам не нужны регистры. Хотя нужны и связь с цветом нужна, но пока не до них.
-
Пока перерв. На подходе UI с новыми функциями Обновления: Вызов плагина из Tools меню дизассемблера Перенос адресов и показ формы плагина из контекстного меню. Можно выделить вручную функцию, а можно сразу после Selection Function. Чекбокс "Break on new branch". Брейкпоинт с остановкой и показом отладчика, когда появляется новая ветка ( появляется новый цвет прохождения или новая логика) Чекбокс "Break on start branch". Брейкпоинт с остановкой и показом отладчика на начальном адресе любой ветки Чекбокс "Break on end branch". Брейкпоинт с остановкой и показом отладчика на конечном адресе любой ветки Отдельные чекбоксы для каждой из веток - будет срабатывать на начале исполнения ветки. Хиты для веток "HitsN" - работаю всегда, пока запущен плагин Branches. Количестве ветвей All hits: счетчик вызовов стартового адреса. Там сейчас 180, а по идеи должно быть не меньше 183, т.к. ветка 1 вызывалась 183 раза. Надо будет поправить. Кнопка "Run/Stop" будет запускать или останавливать Подсказки в виде сообщений во время работы Выключение и включение различных компонентов во время работы плагина или когда он выключен На данный момент идет стадия тестирования. Если успею, то сегодня выложу. Если нет, то... не сегодня
-
Теория, теорией. Хорошо бы показать на практике. Проба сапера. 1. Нашел адрес мин 2. Вышел на инструкцию. Выделил функцию 3. Скопипастил и вставил код. Ввел начальный и конечный адрес 4. Кликаю на поле и не попадаю на мину, затем кликаю и попадаю GameOver 5. Смотрю раскраску Все цвета идут по последовательности радуги. Это чтобы запомнить было проще. Первый - красный. Второй - оранжевый. Ну, ты знаешь считалку "каждый охотник желает знать где сидит фазан". Если дойдешь до фазана, то дальше отладка остановится. Смотри, там где красный и оранжевый расходятся, то какая-то интересная штука. Давай занопим и безусловный прыг поставим 6. Нопим и прыг 4. Рестарт игры (ну не игры, а уровень начался заного) 5. Кликаем на поле и "бам", появлся желтый путь. Следующий цвет радуги - желтый Что вижу. Сколько не кликаю, никакие мины не ставятся. Конечно, интересно. В игре шутере, вы например стреляете, а выстрела не происходит. Тоже самое. Это значит, что мы находимся в самом сердце логики игры. Связываем происходящие действия в игре с маркерами, пытаемся найти что-то чего такого хотим. Например, никогда не проигрывать. 6. Оранжевый путь привел к GameOver, а красный нет. Значит меняем прыги на красный путь. 7. Покликал чтобы проиграть и к сожалению проиграл опять. Ну теперь смотрим на путь, куда он ведет. Зеленый - ничего не было - миимо мины. А вот голубой - ведет к GameOver и оранжевый вел. Т.е. надо смотреть эти два пути, они должны отличаться от других! К сожалению, я не вижу здесь где красный и оранжевый ведут однозначно к проигрышу. Либо надо пересмотреть код, либо подняться выше на уровень, либо залезть в call-ы. Если вы найдете решение, то можно его сюда запостить. Задача - при клике на клетку с бомбой не умирать (ничего не происходит)
-
Рад сообщить об обновлении до 0.9.1 beta. Код в репозитории обновлен 1. Исправления ошибок 2. Проходы рисуются полосами 3. Выводится информация над стартовым адресом о количестве проходов и количестве хитов стартого адреса (т.е. прерываний) 4. При запуске Lua кода открывается отладчик на стартовом адресе Известные проблемы: 1. Стартовый и конечные адреса вводятся из кода 2. Запуск, остановка из кода 3. Остановку и затем запуск. Не тестил. Если баги, то перезапустить CE. 4. Выравнивание элеметов UI. Например, полоски могут заезжать на адреса. Нажмите, Ctrl+M и в настройках что-то поменять. Чтобы адреса были числовые в hex Впечатления: Запарился )
-
Продолжение исследования той же функции. Функция срабатывает, когда персонаж падает. С помощью маркеров я увидел 1) не больше двух вариантов прохождения кода (только два маркера, только два пути) 2) есть код, который вообще не выполнялся Очень интересно, что маркеры появлялись в рантайм на мои действия в игре. Можно включать и выключать маркеры через Lua консоль visibleColorTable[1] = false visibleColorTable[2] = false Проблемы: 1. Прозрачное наложение цветов не удалось добиться. Маркеры сейчас могут перекрашивать друг друга. 2. Не хватает UI инфы. Сколько сейчас цветов всего может быть, идет ли отладка. 3. Не изучена ситуация, если функция будет выполняться очень часто. Сейчас подлагивает на глазок до 4-6 fps. 4. Нет кнопки, чтобы остановить отладку. Отладка не останавливается пока не будет зарегистрировано больше 8-ми отличающихся логик в функции (т.е. путей обозначенных цветами) 5. Включение и выключение плагина 6. Нужен UI ввода адресов старта и конца исследования Пока решил не красить маркерами адреса во внутренних call-ах, т.к. надо решить проблемы выше. Но забегая вперед скажу, я в предвкушении изучить вложенные функции, которые работают и для ГГ и для NPS (вражеских, дружественных). Хочу увидеть как раскрашивается код для каждой группы. Там где отличие, там можно попробовать поставить фильтр. Завел репозиторий "Lua Plugin CE Marked addresses", последний коммит там. Но код еще сырой.
-
Закраска адресов одним цветом Данные: 1. Адрес 1 - начало 2. Адрес 2 - конец 3. Цвет - красный Подключаемся к процессу. Вставляем скрипт. Меняем данные на свои. Запускаем скрипт и смотрим как прошли маркеры Пример На скриншоте видим, что прошли путь до 0056EB13 - 0F8A AB000000 - jp 0056EBC4 Дальше выполняется прыжок и опять маркеры - выход из функции Код закраски одним цветом. Что у нас есть 1. Закраска маркером одного цвета пути, который проходит поток игры от адреса1 до адреса2 2. Если запустить скрипт снова, то прошлые данные стираются. Не сохраняются 3. Нельзя видеть несколько цветов
-
Я не буду спорить. ИМХО проще выделить адреса тем способом, о котором я уже писал. Сейчас цель в пошаговой отладке закрасить адреса и наглядно увидеть, где прыжки не выполняются. Потом Следующий проход уже с другим цветами: цвет, который проходит по месту где не было прохода и другой цвет - по месту где был проход. Или же не трогать цвета, по которым проход уже был раньше.
-
Я думаю, для видеороликов это затратно по времени и энергии (в плане сил и ресурсов человека делающего видеоурок). Например, если надо показать области, то можно выделить блок инструкций используя мышку и shift. Тем не менее молодец, что предложил. Далее, я сделал костыль пока как черновой вариант. Рис.2 Обозначение инструкций цветным маркером Это почти то, чего я хотел добиться. 1. Когда инструкцию я хочу выделить определенным цветом (маркер адреса) 2. В перспективе, когда я хочу в динамике добавлять и удалять маркеры с адресов (например, при пошаговой отладке, когда прошел по адресам, то они выделяются маркером) 3. В перспективе использовать разные цвета маркеров для разных прохождений по коду в отладке (в ручном или автоматическом режиме). Можно увидеть наглядно, какие прыжки выполнялись, а какие еще нет. В общем идей много...