Перейти к содержанию

MasterGH

Ветераны
  • Постов

    2 999
  • Зарегистрирован

  • Победитель дней

    129

Весь контент MasterGH

  1. Этап 1. Наблюдать за выполнением готового ассемблреного кода Вариант1. Берем игру. Ищем инструкцию на брейкпоинте и в пошаговой отладке смотрим инструкции. Лезем в описание инструкций Вариант2. Берем VS C++ на 30 дней беслатно. Пишем на C++ простые программки и смотрим отладочный код. Лезем в описание инструкций в пошаговой отладке.. Этап 2. Делать ассемблерные вставки в OllyDbg или в Cheat Engine в игре или в своей программе. Этап 3. Открывать интеловские доки. Искать в них и по поисковику конкретные ответы на вопросы. Этап 4. Читать книжки. В большинстве случаев они составлены не как справочник, а как занимательная история программирования на ассеблере. Когда есть время, можно почитать или полистать.
  2. Не знаю, не пробовал переносить из Лазаря в CE. Вообще я имел ввиду, что много уроков есть по рисованию на Дальфи и Лазаре. Тогда на CE Lua можно понять какие функции вызывать
  3. Пожалуй, это сделать не просто. Скорее всего, через ассемблерные инструкции в процессе самого CE и создание потока, чтобы выполнить их. Можно дизассемблировать этот пример с Дельфи7 и посмотреть как API вызывается в отладочном коде и попытаться сделать тоже самое ассемблерными вставками. Можно поискать примеры на Лазаре, на нем написан последний CE. Можно поискать пример просто по WinAPI. Если очень нужен визуальный стиль, то всегда есть последний вариант, о котором я писал — рисовать свою таблицу через "Canvas Class", Brush, Pen, Font, line, lineTo, rect, fillRect, textOut... Все как в стандартном рисовании на Дельфи, или Лазаре. Можно будет сделать практически любую таблицу. У меня есть пример рисования в репозитории (искать строки с "Canvas")
  4. Кстати, да "eax" я просмотрел. Там нужно код поменять. В прочем вариант @Garik66 уже предложил, он проще
  5. @SergBrNord, рекомендации 1) что ожидается от скрипта? адрес рабочий (замораживается в памяти и работает)? Вообще никакой реакции, не вылетов? ; 2) попробуй выложить полный скрипт. С адресом, нопами, если они есть; 3) попробуй убедиться что инъекция проходит по нужном адресу; 4) попробуй проверить выполнение кода в пошаговой отладке перед активацией Cheat Engine;
  6. Скорее всего, по трем адресам записать одно и то же значение. Для этого нужно сохранить оригинальный код как есть с прыжком в новую память . И прописать
  7. MasterGH

    Регулярки на Lua

    Добавлен файл [Cheate Engine] Lua Regular expression.CETRAINER. Файл можно скачать в теме по ссылке. Исходники в приватном разделе.
  8. Версия 1.1

    49 раз скачали

    Назначение В помощь по составлению регулярных выражений на Lua Установка Запустить файл "Lua Regular expression.CETRAINER" с помощью Cheat Engine После чего откроется окно, в котором можно составлять регулярные выражения. Даются простые примеры. Исходники Исходники зашифрованы, но будут исходники без шифрования в скрытом разделе форума
  9. Появилась такая опция асинхронного выполнения скриптов Если эту опцию поставить на скрипты, то появляются вот такие часики АА-шные скрипты могут искать в этот момент сигнатуру. Lua скрипты потестить было интересно, узнать действительно ли асинхронно выполняется. Например, один скрипт выполняет счет, второй выполняет счет. По выполнении выводится результат. Во время выполнения включаем первую галку. Тут CE подвисает. Затем успеваем нажать на вторую галку. Видим как две иконки часов работают. После выполнения Если продублировать 4 скрипта, то видим, что нельзя запустить асинхронно более двух скриптов Возможно, я Lua код где-то не правильно написал. Вот такой вариант еще делал Asynchronous testing.CT
  10. Забавно) Эйлеровы углы x,y,z, а кватернион x,y,,z,w. В ассетах Unity есть проект с готовыми персонажами и скриптами. Если NPC двигается вперед со скоростью X к примеру, просто надо развернуть к цели. Разворот к цели через эйлеровы углы = дальняя точка - точка npc. Потом сделать нормализацию направления, т.е. масштабировать углы относительно единицы. Вот и получили направление. При этом надо персонажа выровнять. Ейлеровы углы поправить, чтобы npc вертикально стоял. В Unity движке очевидно проще движения отработать. Можно тут же запустить и проверить. В примере выше уважаемых форумчан расчеты как при взгляде сверху в ортографической проекции. Я только поддерживаю. Просто я так ковырялся для 2д игр с аркатнгенсами, часа два наверно и опух. А когда в Unity работаешь с её функциями, чувство интуиции включается на все движения и углы. Это не объяснить. Уже функции готовые даны, их можно развернуть в декомпиляторе. Только вот, блин, незадача. В новой Unity тело функции стали прятать в InteralCall. Так что тут мой вариант не подходит для новой версиии Unity 2017.xx. Это кому интересно нужно будет более раннюю версию скачивать.
  11. На форуму перекинуть с edit-a не получилось через SetFocus() . Если пустая форма и Edit на ней, то у меня вышло убрать фокус так. Скрыть и показать Edit, что практически не заметно глазу. Убрать выделение текста Можно искать пути решения и выбрать подходящий. В самом крайнем случае это ассемблерные правки в самом CE, когда Lua код не работает как надо. В этот момент у многих может быть желание отказаться от Cheat Engine.
  12. Намутить автобегалку/леталку можно на игровом движке Unity. Посмотреть как сделать движение и повороты. Можно сделать очень много экспериментов по движениям, эйлеровым углам, кватернионам, матрицам, шейдерам и прочее. По навигации можно наделать алгоритмов на C# сколько угодно. Есть также стандартный агент навигации, который поможет сравнить свой и его алгоритм. Также можно декомплировать .net библиотеки и в них посмотреть формулы, если они вдруг пригодятся в чужой игре.
  13. Если Cheat Engine не важен, можно быстрее сделать такие таблицы в готовой среде разработки. Такие штуки можно сначала на Дельфи7 (или бесплатном Lazarus) сделать, потом на CE Lua переходить. А если на Дельфи понравится, то на нем можно делать трейнеры. Между прочим там есть готовые компоненты таблицы. 1. В окне Lua можно ставить брейкпоинты. Провести отладку и узнать как и что работает не так. Т.е. окно Lua консоли, которое вызывается из окна отладчика CE. Там CE код можно написать, поставить бряки и выполнить. Также можно через print() логать любые участки кода. 2. Событие выхода из поля Edit есть. Его можно использовать для записи. Потом в функции тика таймера ждешь, пока значение не запишется (1 секунды к примеру), потом там же в функции таймера читаешь из памяти в визуальный компонент. 3. Если бы я делал эту задачу я бы попробовал все способы начиная от 150-ти эдитов выставленных программно, или 150 label-ов и 1-го Edita- который подставлять в место label, до радикального способа —рисования таблицы Lua скриптами.
  14. Визуальными стилями, цветами пожалуй возможно сделать подобие таблицы, если ровненько все поставить. Если очень надо, то радикальный способ. Можно таблицу сделать программно отрисовывая линии, текст и ставя EditBox в нужную позицию. Надо знать обработчики событий и доки по Lua смотреть. Можно попробовать такой способ как работу с событиями CEEdit. Получили фокус — заблокировали чтение из памяти в EditBox (по таймеру). Потеряли фокус — разрешили чтение из памяти в EditBox (по таймеру). Что-то вводим — пишем в память из EditBox. Рекомендую полистать книжки по Дельфи7 для работы с компонентами похожими на те, что есть в Cheat Engine. Например, про EditBox
  15. Я задался вопросом, что такое pointermap. Вообще о нем не слышал и речь пойдет о нем. Я узнал о нём и прикинул, что возможно круто, а возможно и не круто иметь готовую цепочку указателей перед тем, как что-то делать в отладке. Цепочки можно раскрыть в окне структур и прикинуть, что там в них и "около" каких адресов будет происходить отладка. Во время отладки можно смотреть на окна структур. Может быть, а может быть и нет что-то интересное связать в отладке и с данными об указателях... На видео сравниваются два способа поиска указателей в Cheat Engine 6.7: классический и используя pointermap. Судя по видео последний эффективнее по времени, действиям и результатам поиска. Конкретно для этого случая с помощью pointermap сканирования нашлось несколько цепочек указателей. Можно предположить, что на других играх стоит попробовать этот способ. Способ с pointermap начинается со времени 9:21.
  16. Написал готовый код. Там есть названия процессов и "нужных" скриптов. Объяснять как поправить и как въехать в Lua скрипт у меня времени не будет. Ну и еще кое что. Можешь задуматься. Возможно у тебя возникнет желание оказать поддержку форуму в виде пожертвования. Сделать это можно в ближайшее время и получить чувство радости за нас, потому что у отвечающих есть умения и знания, которыми мы делимся с тобой.
  17. Старые исходники на Дельфи 7. Новые на Лазаре ( тема) Тему все-таки открепил, переименовал. На мой взгляд не стоит внимания, чтобы быть закрепленной. По поводу вопроса Ничем помочь не могу. Некогда этим заниматься
  18. Может работать, не проверял на 6.4 Для скрипта1 добавить под [Enable] [ENABLE] {$lua} getAddressList().getMemoryRecordByDescription("Auto Assemble script 2").Active = false getAddressList().getMemoryRecordByDescription("Auto Assemble script 3").Active = false {$asm} // тут АА код [DISABLE] Похоже решение проще чем выше )
  19. function onMemRecPreExecute(memoryrecord, newstate) if newstate then if (memoryrecord.Description == "Auto Assemble script 1") then getAddressList().getMemoryRecordByDescription("Auto Assemble script 2").Active = false getAddressList().getMemoryRecordByDescription("Auto Assemble script 3").Active = false end end end
  20. Ты можешь создать тему в заказах и ждать решения https://gamehacklab.ru/forum/38-запросы-без-оплаты-труда/ Устное предупреждение за флуд (уже во второй теме).
  21. MasterGH

    [dnSpy + Unity ] Пошаговая отладка

    Пошаговая отладка в dnSpy позволяет ставить брейкпоинты на C# код во время работы игры, перемещаться по коду, просматривать значения переменных. Сэкономит кучу времени при поиске и отладке игрового кода, 1. Страница загрузки dnSpy 2. Скачиваем dnSpy и все архивы с mono.dll файлами Unity-debugging-4.x-win32.zip Unity-debugging-4.x-win64.zip Unity-debugging-win32.zip Unity-debugging-win64.zip 3. Смотрим свойства exe файла игры и определяем по нему версию Unity. Например, "Версия продукта 5.5.0.3120186" или версия "файла 5.50.39994" может указывать на версию Unity 5.5. 4. Определяем разрядность приложения через Process Explorer 5. Т.к. версия Unity 5.5 и приложение 32 разрядное, то открываем Unity-debugging-win32.zip ищем там версию Unity и заменяем mono.dll в директории игры 6. Запускаем игру и dnSpy x86 (игра 32 разрядная поэтому x86). Открываем файл "\...\Managed\Assembly-CSharp.dll" Запускаем отладку нажав F5 или кноgку Play 7. Настраиваем соединение и жмем ок 8. Ставим брейкпоинты, смотрим перемененные, перемещаемся по коду, пишем свой код и так далее 9. После изменения кода, нужно перезаписать модуль предварительно сохранив его О других способах подключения пошаговой отладки есть на английском руководство. ---------------------- Как работать в пошаговой отладке Работать можно почти также как и в Cheat Engine в пошаговой отладке или в среде разработки программ. Начать стоит с обзора названия пространств имен, названия классов, методов и полей, Названия могут подсказать логическую связь с читом, который хотим сделать. Стоит обратить внимание на такие названия как "IsPlayer, Player, Character, CharacterController, MainCharacter, Health, Inventory, Craft" и другие. Чтобы не искать вручную можно задействовать поиск сборкам. Поиск стандартного тега "Player" в виде в строки кода (в Unity выше версии 5.0) или свойства "IsPlayer" может помочь найти игрока или отличить от чужих. Важно представлять иерархию игровых объектов, которую мы не видим в dnSpy. Программист работая в Unity видит это окошко много лет и эту иерархию всегда представляет смотря на скрипты в dnSpy Скрипты наследники от MonoBehavior могут находиться на игровом объекте и могут работать как с ним так и с другими объектами. Получается такая штука, что игровой объект всегда имеет Transform компонент с полями позиций, углами и scale. Классы Transform и GameObject самые основные. Методами этих классов можно разместить объект в мире, создать или удалить его. В идеале удалив объект со сцены не должно быть никаких ошибок связанных с пустыми ссылками, потерей объекта. Также и клонировав объект, тоже не должно быть ошибок. Но не всегда так просто отспавнить игровой объект. Если это сделать методами UnityEngine, то другие классы ничего не будут знать о появлении игрового объекта. Нужно ставить брейкпоинт в функции Start или Awake в классе и трейсить по Shift+11 чтобы выйти на функцию разработчиков спавна этого GameObject. Функции Start или Awake (в классе наследника от MonoBehavior) срабатывают один раз при включении скрипта и инициализации. По ним можно выйти на строку кода, которая создает объекты в мире. Отдельно стоит сказать про количество скриптов. Практически в любой игре, которая мне попадалась в dnSpy много скриптов или очень много. Иногда и не будет понятных названий у типов (из-за обфускации). В любом случае при пошаговой отладке можно найти требующиеся участки кода для создания чита и использовать их по другой логике. Основные приемы В Update можно обновлять параметры только своего игрока. Например, в Character классе сделать сравнения в Update по IsPlayer свойству (если оно там есть) и у тебя за каждый кадр рендеринга будет максимум характеристик. В Update с классом Input можно считывать хоткеи. В Start и Awake можно подгружать свои ассеты с внутриигровым user interface. Код скриптов перед загрузкой ассетов должен быть внедрен через dnSpy Иерархию игровых объектов и инспектор, если очень нужно, то можно отрисовать в user interface. Обычно не требуется. (поищите по форуму в игрострое) В заключении Пока нет времени делать трейнер или таблицу на CE для включения опций в играх Unity. Для меня пока подходит способ через перезапись модуля в dnSpy вручную. Вместо трейнера можно сделать программу патчер, который будет проверять версию игры и перезаписывать модуль с возможностью вернуть оригинальный модуль
  22. Спавн итемов удалось сделать через dnSpy. При клике на любой предмет на меню крафта он создается в инвентаре, а если там занято, то выкидывается на карту. Я переписал метод клика на рецепт, вот он оригинальный На этот Для спавна заменить Assembly-CSharp.dll из архива, сделав копию предварительно Assembly-CSharp.rar
  23. MasterGH

    CE Lua чистка памяти от утечек

    Я тоже не говорю, что стоит отказываться от Lua в CE. Тоже могу сказать, что достаточно полезный. Хотя ничего не писал месяца 4. Размер свободной ОЗУ уменьшался в плагинах на событии движения мышки по окну Lua-шного дизассемблера. Больше гигабайта за минут 30 и дальше - больше. Вариант выше эту проблему исправил. Потом вышел fix и это дело поправили.
  24. MasterGH

    CE Lua чистка памяти от утечек

    ИМХО отказываться от CE Lua скриптов из-за утечек памяти не стоит. Можно чистить память следующим образом function startCollectgarbageProcess(interval, showStatus) local timer1 = createTimer(true) timer1.Interval = interval timer1.onTimer = function () if (showStatus) then print(string.format('Lua memory usage %.1f MiB',collectgarbage('count')/1024)) end collectgarbage("restart") collectgarbage("collect") if (showStatus) then print(string.format('Lua memory usage %.1f MiB',collectgarbage('count')/1024)) end end end -- Собирать каждую 1 минуту и показать результат startCollectgarbageProcess(60000, true)
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.