MasterGH

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

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

  • Посещение

Репутация

253 NOPer

О MasterGH

Информация

  • Пол Мужчина

Посетители профиля

57170 просмотров профиля
  1. error in CE Access violation

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

      На скриншоте 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 Скорость трассеровки должна в несколько раз увеличиться. К сожалению, смогу это узнать, когда перепишу текущий плагин. Там были уже сделаны изменения (все еще сырое для публикации плагина, пока не публикую)    
  4.   Если очень и очень требуется. Можно написать стороннюю программу, которая будет отслеживать ввод и дописывать в этом поле строку. Чтобы найти поле можно поискать всякие исследователи иерархии окон. Типа WinScanner.  Навести прицел, увидеть hwnd окна и с ним по циклу работать. Можно попробовать пропатчить сам браузер.
  5.   Без понятия, т.к .не с чем сравнивать. На практике не делал ни того и ни другого. На Unity в теории можно сделать универсальный вариант. Любой шутер бери и тебе esp и wh.   Поискать только компоненты, которые всегда будут на игроках (капсулы, чарконтроллер, аниматор, или еще другие). Или же еще проще, если gameObject двигается по карте, то сразу валхачим его, забираем ссылку на метариал и меняем шейдер. Материал меняешь — изменения на всех сразу.
  6.   ESP или WH на Unity около 50 строк кода на C# в dll .net модуле, который надо внедрить в игру своим или чужим .net dll загрузчиком. API Найти все корневые GameoObject Найти все дочерние компоненты SkinMeshRenderer. Собрать Dictonary  словарь из материалов Создать через строку шейдер. Подменить в материалах из словаря шейдер. В Update() фукнции прописать сканер объектов, если появился новый и в нем не заменен материал, которого не было в словаре материалов, то заменить. Как-то так.  
  7. CE Lua рисование отдельным потоком

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

           
  10. От всего форума, от всех пользователей большой респект за видео. Супер 
  11. Открываем Lua консоль из дизассемблера Пишем Lua скрипт Дальше по шагам как на картинке   Сколько я не пользовался CE я никогда не знал об этом отладчике. Когда я случайно узнал, то был приятно удивлен. Если мы пишем какую-то функцию и она дает сбой, то её можно отладить как на скриншоте. Это может быть и не функция. Например, код прочитал какой-то файл с текстом сохраненных параметров и подсмотрели в пошаговой Lua отладке что происходит дальше.   *Действуют горячие клавиши. Например, F7— шаг, F9 — запуск без остановки.
  12. Взлом 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, в конце расчета
  13. Опубликованная в веб формате книга на официальном сайте. Язык английский   Перейти   Оглавление книги   Книга о приемах программирования больших проектов, в которых огромное количество строк кода. Основная проблема, когда ты уже что-то написал и надо добавить в уже существующий проект внушительный функционал или же наборот его поменять, или убрать. Хватаешься за галову и думаешь, что проще написать проект заного. Автор из числа тех программистов, которые оставляют свой опыт и знания (есть донат). Порой бывает информация более полезной в блогах чем где-либо, редко бывает в виде книг.   Про автора книги знаю очень мало, кому надо можете погуглить.
  14. Ветвления кода связанные с адресом

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

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