MasterGH

Администраторы
  • Публикации

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

  • Посещение

Все публикации пользователя MasterGH

  1. Может быть этот пример может   Посмотрел API. К сожалению, не смог быстро разобраться. Надо Хром ставить и проверять. Может быть, посмотрю позже.
  2.   Вот эти строки можно исправить На эти Я забыл "else" написать )
  3. 3. В принципе можно включать и выключать АА скрипт по id или по его уникальному имени, тогда не будет проблемы с пунктом 2. Возвращаясь, к пункт1 я бы упростил.
  4. error in CE Access violation

    Ошибка может быть из-за того, что в пути сохранения трейнера могут быть русские символы.
  5. Возможно так будет работать: LUA_TEST.CT    
  6. Трассеровка по ретам. Скриншот

      На скриншоте 22 ветви трассеровки от адреса патронов не входя в call-ы до корневого цикла. Корневой цикл определяется, когда поиск происходит более трех секунд и не находит ничего. Вполне хватает этого времени. Буду еще повторно тестить и проверять доходит ли он цикла или надо еще что-то придумывать. Желтым выделяется точка, вертикальная полоса ветви и связи с такими же узлами. Узел это адрес выхода из ret Внизу ряд счетчиков от 00 до 99. Если более 99 то отсчет заного. Показывает дианамику обращения к ветвям после нахождения корневого цикла Есть еще несколько функций, которых не видно на скриншоте — в контекстном меню. Анализ можно запустить из окна CE из главной таблицы, выделив адрес и опцию либо на чтение, либо на доступ.   При тестах увидел, что логи неполные. Например, первый кружок это инструкция читающая патроны очень часто. От этой инструкции идут вверх множество вариантов ветвей,а  у меня один вариант — вертикальная полоска с кружками. От первого круга надо сделать ветвление влево и вправо.   Занялся модернизацией этого рисования и оптимизацией. Например, чтобы определить является ли проход по ret, то не нужен дизассемблер. Залез в доки и посмотрел опкоды   function IsRet(address) local value = readBytes(address,1, false) return value == 0xC3 or value == 0xCB or value == 0xC2 or value == 0xCA end Скорость трассеровки должна в несколько раз увеличиться. К сожалению, смогу это узнать, когда перепишу текущий плагин. Там были уже сделаны изменения (все еще сырое для публикации плагина, пока не публикую)    
  7.   Если очень и очень требуется. Можно написать стороннюю программу, которая будет отслеживать ввод и дописывать в этом поле строку. Чтобы найти поле можно поискать всякие исследователи иерархии окон. Типа WinScanner.  Навести прицел, увидеть hwnd окна и с ним по циклу работать. Можно попробовать пропатчить сам браузер.
  8.   Без понятия, т.к .не с чем сравнивать. На практике не делал ни того и ни другого. На Unity в теории можно сделать универсальный вариант. Любой шутер бери и тебе esp и wh.   Поискать только компоненты, которые всегда будут на игроках (капсулы, чарконтроллер, аниматор, или еще другие). Или же еще проще, если gameObject двигается по карте, то сразу валхачим его, забираем ссылку на метариал и меняем шейдер. Материал меняешь — изменения на всех сразу.
  9.   ESP или WH на Unity около 50 строк кода на C# в dll .net модуле, который надо внедрить в игру своим или чужим .net dll загрузчиком. API Найти все корневые GameoObject Найти все дочерние компоненты SkinMeshRenderer. Собрать Dictonary  словарь из материалов Создать через строку шейдер. Подменить в материалах из словаря шейдер. В Update() фукнции прописать сканер объектов, если появился новый и в нем не заменен материал, которого не было в словаре материалов, то заменить. Как-то так.  
  10. CE Lua рисование отдельным потоком

    На видео показано рисование через поток и рисование без потока Когда происходит рисование без потока, то окно нельзя подвинуть, не работает кнопка и даже не возможно работать с Cheat Engine           Код:        
  11.         Репозиторий   1. На адрес устанавливается брейкпоинт. 2. Идем в игру делаем или не делаем что-то 3. Начинают срабатывать инструкции на брейкпоинте 4. От каждой инструкции начинается трейслог, подобный тому, который есть у CE, но менее тормозной 5. Заканчивается трейслог на инструкции, на 100-ом счетчике после ret-а (об этом пункте будет уточнение). Здесь выходим на коневой цикл 6. Трейслог останавливается и ожидание следующей инструкции, которая сработает на брейкпоинте, она должна быть отличной   В итоге мы имеем кучу трейслогов начинающихся с адреса работающего с параметром (например, кол-во патронов в обойме) и заканчивающихся на корневом цикле. Также мы собираем данные об адресах с рет-ами и счетчиками. По этим данным можно нарисовать схему, где ret-ы меняют направление пути прохождения потоком дизассемблерного кода   На скриншотах ниже Вертикальные линии со кружками -— это ветвь трейслога Белый кружок — адрес ret-a, который не повторялся Пунктирный кружок — адрес ret-а, который повторялся. Стрелка от такого пунктирного круга будет указывать на белый круг.   По схеме видим, где ret-ы меняют свое направление поднимаясь по рутине в корневом цикле         По плану по визуальной части: 1. Клик на кружок — переход на код 2. Придумать что-то, чтобы стрелки не накладывались друг на друга 3. Установка брейкпоинтов на кружках — становиться красными 4. Легенда. Номер ветви, связанная инструкция, состояние брейкпоинтов. Комментарий к ветви 5. Загрузка/сохранение легенды   Для чего нужно. Для поиска условий, которые включают и выключают ветви кода. Т.е. чтобы можно было это условие быстро найти и изменив его, повторить выполнение кода ветви, которая "пробьётся" из корневого цикла. Таким образом попытаться повторить действие в игре, а если не получаться повторить, то определить дополнительные условия.
  12. Ветвления кода связанные с адресом

    В этой записи блога не будет чего-то, что показало бы "вау, это что-то новое и есть результат". Все сырое и результат пока мне только снится — быстрый поиск условий и включение, и выключение ветвей по этим условиям. Мыслю я не инструкциями, не группой инструкций, а ветвлениями кода и условиями, которые их запускают. Проще 20 ветвлений по 5 окон, чем тонна инструкций... Жаль пока теория, практики с результатом нет.   Рисунок. На нем слева прототип, справа текущий сырой вариант   1) ставим брейкпоинт на адрес патронов 2) от него расплетаются ветви кода от каждого хита, от каждой инструкции, и по ретам ветвление выходит из рутины   Кружи означают ret-ы. Клик на круг будет переходлм в дизассемблер Стрелки будут показывать входы и выход связанные с соседними рутинами (поиск общих адресов будет стрелками)     На экране справа вариант без стрелок, т.к. не успел еще их отладить. 4 ветки трассера по ретам из рутины связанные с адресом патронов, выстрелами. Потом я продолжал стрелять, перезаряжаться, выкидывать и поднимать оружие. В итоге собрал 20 ветвлений по ретам от инструкций связанные с патронами       Как видно, довольно все еще сырое, но видно, что все 20 ветвлений по ретам сформировались до корневого цикла.   Потом можно будет, я надеюсь, увидеть связи между этим ветвлениями, когда я прикручу стрелки. По кружкам кликать и переходить в дизассемблер и смотреть условия выше. На условии искать другие адреса, которое запускает ветвь кода. На адресах опять делать ветвления (новое окно с ветвлениями о ретам)... На практике будет получаться более двух таких окон (для патронов). Нужно будет искать адреса связанные с условиями в новом окне.    
  13. Рисование стрелок

           
  14. Открываем Lua консоль из дизассемблера Пишем Lua скрипт Дальше по шагам как на картинке   Сколько я не пользовался CE я никогда не знал об этом отладчике. Когда я случайно узнал, то был приятно удивлен. Если мы пишем какую-то функцию и она дает сбой, то её можно отладить как на скриншоте. Это может быть и не функция. Например, код прочитал какой-то файл с текстом сохраненных параметров и подсмотрели в пошаговой Lua отладке что происходит дальше.   *Действуют горячие клавиши. Например, F7— шаг, F9 — запуск без остановки.
  15. От всего форума, от всех пользователей большой респект за видео. Супер 
  16. Взлом Diablo The Hell v1 209

    Если интересно, набросал инфу 1. Для увеличения скорости записи в файл можно использовать спидхак (тем же Lua) speedhack_setSpeed(speed) : Enables the speedhack if needed and sets the specific speed speedhack_getSpeed(): Returns the last set speed 2. Таймер может проскочить адрес, в этом случае можно вызывать функцию Lua из AA кода. На форуме где-то была тема. Может быть сложно. 3. Вывод в файл может быть с одинаковыми id-шникиами. Возможно, надо исправить 4. Можно использоваться функцию print('запись') для проверки происходящих действий в скрипте Lua. Т.е. пишет в файл ли, выполняются ли условия, что записал в файл и так далее... 5. Можно использовать звуковое оповещение из Lua, в конце расчета
  17. Опубликованная в веб формате книга на официальном сайте. Язык английский   Перейти   Оглавление книги   Книга о приемах программирования больших проектов, в которых огромное количество строк кода. Основная проблема, когда ты уже что-то написал и надо добавить в уже существующий проект внушительный функционал или же наборот его поменять, или убрать. Хватаешься за галову и думаешь, что проще написать проект заного. Автор из числа тех программистов, которые оставляют свой опыт и знания (есть донат). Порой бывает информация более полезной в блогах чем где-либо, редко бывает в виде книг.   Про автора книги знаю очень мало, кому надо можете погуглить.
  18. Подписка на youtube канал

    Что вы думаете о канале GameHackLab[RU] на youtube и являетесь ли подписчиком?   Недавно было два он-лайн стрима. Я присутствовал на них, но вообще не был зарегистрирован на youtube. Теперь зарегистрирован и являюсь подписчиком. Довольно интересно получилось в режиме он-лайн что-то обсуждать. Поэтому я за то, чтобы продолжать и стримы, и более того я за то, чтобы увеличилось количество людей, которые хотят стримы. Поэтому я предлагаю подписываться всем на канал и даем знать о том, что хотим новый стрим в этой теме. Что там будет на стриме можно узнать во время стрима или предложить свои пожелания.   Я бы хотел чтобы доломали телепорт на Dead Rising 3. Сканировать кстати можно попробовать по горячим клавишам не выходя из окна игры.
  19. Флудилка

    Часть 2. Наброски поиска корневого цикла через трассер не заходя по call-ам   Задача снять ветви с брейкпоинта на адресе памяти   Когда поставили брейкпоинт и начинают прерываться адреса инструкций и с них начинают собираться данные.   1) Сработал адрес инструкции1. Брейкпоинт на адресе памяти снимается. Начинает лог. Лог заканчивается на корневом цикле. Ставится брейкпоинт на адресе памяти 2) Сработал адрес инструкции2. Брейкпоинт на адресе памяти снимается. Начинает лог. Лог заканчивается на корневом цикле. Ставится брейкпоинт на адресе памяти   и так далее   Затем вызываем managerBranches:Stop() и смотрим что получилось.     После выхода на корневые циклы вызов managerBranches:Stop() Логи  
  20. Флудилка

    1. Узнал случайно, что уволили наших соседей по офисам (интеловцев) пол года назад из-за 11% сокращения штата по всем миру. В Академ городке закрылись 31 декабря 2016. Штат рабочих занимался разработкой компиляторов. Средняя выручка на рабочего 2 ляма рублей в год несколько сотен человек. Все у них было хорошо по зарплате, только сократили, и здание наше не очень. Еще тесные два лифта. Толкаешься как в бочкке. 2. Выходные работал. Поэтому сегодня мой любимый CE Lua-дизассемблер лежал без улучшения. В субботу еще успел набросать Lua код по двигающимся столбцам у таблицы с помощью мышки, но там еще не все закончено.
  21. Флудилка

    Наброски поиска корневого цикла через трассер не заходя по call-ам      
  22. Флудилка

    Скрипт трейса по ret-ам до первого повторения адресов     Лог   Наброски иерархии кода, чтобы найти идею как выйти до главного цикла и остановиться там.  
  23. Флудилка

    Dereference Addreses — значение в квадратных скобках  
  24. Флудилка

    Обновилась страница справочной информации по Ассемблеру на сайте Cheat Engine. Кому интересно: ссылка   Как я узнал что она обновилась? Не знаю, повезло. Искал инфу по "breakpointmethod OPTIONAL" из main.lua и вышел на хелп и увидел, что страница обновилась. debug_setBreakpoint(address, size OPTIONAL, trigger OPTIONAL, breakpointmethod OPTIONAL, functiontocall() OPTIONAL) : sets a breakpoint of a specific size at the given address. if trigger is bptExecute then size is ignored. If trigger is ignored then it will be of type bptExecute, which obviously also ignores the size then as well debug_setBreakpoint(address, size OPTIONAL, trigger OPTIONAL, functiontocall() OPTIONAL) breakpointmethod OPTIONAL может быть трех типов     Первый и второй я понял, третий — не понял.
  25. Здесь можно задавать общие вопросы по Cheat Engine в том числе и русской. Если ваш вопрос заслуживает особого внимания, то вы можете создать отдельную тему. Старайтесь задавать вопросы, которые больше относятся к специфике Cheat Engine, а не по играм которые ей можно обмануть. К этим вопросам можно отнести применение той или иной функции, общие настройки Cheat Engine, настройки отдельных функций, ошибки и т.д. Вопрос должен быть привязан к специфике cheat engine, а уже в последнюю очередь к игре. В противном случае лучше задать вопрос в форуме по взлому игр.