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

MasterGH

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

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

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

    129

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

  1. OnExtraLineRender: function(sender, Address, AboveInstruction, Selected): RasterImage OPTIONAL, x OPTIONAL, y OPTIONAL Такой обработчик, который позволяет рисовать прямоугольную область над инструкцией или под ней в окне дизассемблера. Где sender - объект класса DisassemblerviewLine AboveInstruction - bool, рисовать перед инструкцией? (в противном случае после). Если не учитвать, то будет рисовать и до и после x,y - позиционирование. Если ставить по нулям, то смещение будет как на скриншоте ниже. Если смещать, то область над адресом будет увеличена и зеленая рамка будет смещена в этой области Описание (eng): Рис.1 Применение OnExtraLineRender. Фраза "Any Coment" поставлена из контекстного меню дизассемлера как пример. p.s. Разочарование. Не придумал, где это можно применить. Вместо зеленой рамки можно рисовать все что угодно и текст в том числе. Но текст не нужен, т.к. это Header текст и ставится из дизассемблера или функцией setHeader(address, text). Вообще цель была пометить адреса цветом, которые были пройдены или не были пройдены после отладки. Но такой способ "добавляет строки" с цветной областью совсем не то, что хотелось. Попробую добавить колонку после колонки адресов и там цветной прямоугольник.
  2. Интересно. В CE есть еще поиск строк. По строке можно найти что-то типа game over, поставить брейкпоинт на чтение и найти откуда вызывается.
  3. Я еле-еле вспомнил. Я включал курсор двумя способами. Первый способ очень костыльный вспомнил, а второй не помню. Была у меня такая платная программа для снятия скриншотов Snagit. Если её умудришься запустить без мышки, с помощью клавиатуры из меню "Пуск", то после запуска и нажатия на кнопку "Prt Scr" на клавиатуре курсор появится. Если Snagit запускать при старте системы, то просто нажимаешь на клаве "Prt Scr" и курсор появляется. Есть какие-то функции из API, которые работают с курсором. Если поковыряться, то я думаю, можно найти решение через Cheat Engine.
  4. Помню у меня тоже было пропадание курсора мышки. Точнее мышка работает, но ты не видишь курсора. Это было на играх про Сталкера, то ли в пошаговой отладке, то ли при брейкпоинтах с остановкой процесса. Вот только я не помню способ как я курсор включал.
  5. Надо гуглить. Либо shellExecute(command, parameters OPTIONAL, folder OPTIONAL, showcommand OPTIONAL): Executes a given command Либо сторонняя программа. Либо инжект в саму CE и исполнение. Я всегда игры ставлю в оконный режим и у меня никогда таких проблем не бывает. Если что-то подвисает очень редко и намертво, то "Process Explorer" убивает игру спокойно.
  6. Обновление 1. FindMasterAddress.lua 2. Репозиторий Для установки плагина перетащить lua файл в папку autorun. Подсказка как пользоваться. Ищем адреса как обычно, кроме типов: "строк", "цепочки байт", "всех типов", "группа поиска" и "бинарный". Если настал момент, что адреса ну никак не отсеиваются до одного, то на области адресов вызываем всплывающее меню правой кнопкой мыши и активируем опцию Потом начнут появляться последовательно окна: 1. Ввод стартового значения. По умолчанию 2, можно брать другое. 2. Ввод максимального значения. Оставить по умолчанию или написать свое. Если адресов будет больше чем максимальное значения, то запись по адресам будет продолжаться со стартового значения 3. Диалог с информацией. Заходим в игру, выходим. В игре ничего не делали, т.е. не изменяли значение рабочего адреса. Жмем ок и рабочий адрес добавляется в таблицу. Тестил с типом integer. Остальные типы еще на проверке. P.S. Что интересного в скрипте. 1. Пример того как писать и читать тип word и byte через Lua. 2. Встраивание меню и подписка на событие показа меню. В функции-обработчике делаем меню активным или не активным, когда можно или нельзя пользоваться 3. Узнать тип поиска из формы Cheat Engine. 4. Чтение данных адресов, которые были найдены при поиске 5. Ну, и добавление записи в таблицу адресов
  7. Да, с порядком может быть проблема, когда значение должно быть 0, 1 или вещественные 0,0-1,0. Пока идеи такие 1. Делать заморозку процесса перед записью всех значений, чтобы не успели поменяться. Есть игры, которые работаю в фоном режиме. 2. Сделать как плагин и пункт в контекстное меню. Еще подумать над этим как удобнее. Окон новых не хочется и не хочется чтобы в таблице CE находилось много адресов. Скорее всего, будет контекстное меню над областью найденных адресов (там где адреса отображаются после отсева) 3. Подумать над порядком значений и типами. Скачать игры, где много рабочих и не рабочих адресов и на них потестить. Помню HalfLife здоровье. Конечно, Doom как на видео.
  8. Бывает отсеиваем адрес, а адресов бывает 10, 20, 100 и более. Значения одинаковые и не хотят отсеиваться. Чтобы вручную не искать рабочий адрес (заморозками, изменениями значений) можно попробовать воспользоваться скриптом Lua, который я написал. Я тестил этот скрипт на игре TimeShift при поиске патронов на пистолете. Рабочий адрес определился верно после захода в игру, возврата и нажатия на кнопку Ок. Логика работы Значения и имена адресов заполняются порядковыми номерами. Идем в игру. Игра перезаписывает значения "по рабочему адресу". Скриптом сравниваем рабочий адрес и значение, и красим в красный цвет эту запись. Недостатки: 1. Таблица CE должна хранить адреса среди которых ищем, без других записей (без АА скриптов, без читов и т.п.) 2. Типы данных целые, что будет с float или другими не тестил 3. Копировать/вставлять Lua скрипт и выполнят его, вместо клика по контекстному меню Вот когда не отсеиваемых адресов этак за 100 штук, то наверно этот скрипт бы пригодился, чтобы вручную не искать. Сделал пока так, а дальше посмотрим.
  9. Заметил новые изменения - При переходе на http://gamehacklab.ru перехожу на форум, а раньше был сайт. - Появился раздел видеоуроки. Раньше видео публиковалось на сайте, но форум "не знал" об этом. Раздел видео появился из-за возможного закрытия сайта? - Более 1500 подписчиков. Поздравляю всех
  10. Ты можешь написать АА скрипт как обычно. Активировать и деактивировать по уникальному названию
  11. AA maker предназначен для другой цели. Он делает индивидуальные, уникальные АА скрипты по текстовым шаблонам в пару кликов. Шаблоны находятся в lua скрипте как дефолтные. Когда же CE генерит скрипты, то делает это без шаблонной разметки. Это главное назначение плагина. Под другие задачи плагин естественно не делался. Все равно, что называть бесполезной голову, чтобы забивать ей гвозди.
  12. Russian AI Cup — соревнование по программированию искусственного интеллекта
  13. Теперь можно не писать метки типа label(returnHere) в AA скриптах, но иногда, когда меток очень много и нам нужно увидеть, какие метки нами используются, но не назначены, то можно применить директиву {$STRICT} Пример без строго оформления Пример со строгим оформлением
  14. Как писал Дарк Байт ему часто задавали вопросы по защите исходников. Ссылка будет в конце сообщения. Для чего это можно применять: Выполняем функцию, а описание этой функции скрыто. Шифровать можно все, что хранится в функциях, в том числе и сигнатуры и логику кода. Получение шифрованной функции: После того как получили шифрованную строчку, то выполнение её Пример диалога, попробуйте сами запустить Может быть, будет такой случай, когда вам нужно будет скрыть какие-нибудь мега-супер-пупер функции, окна, читы и прочее. Можно скрывать hex код картинок, звуков или других данных. Хотя я не пробовал.
  15. В CE 6.6 появились функции озвучивания текста Пример 1. Для CE Lua консоли Где Параметр text - текст. Параметр waittilldone - озвучивание помещается в очередь. Если параметр не писать, то будет false Теперь в игре можно слышать, что включилась определенная опция или была выключена. Пример 2. Для CE Autoassembler
  16. Это можно сделать на Lua. 1. Создать контекстное меню под другим (класс MenuItem class) 2. Настройка диалога FileDialog Class 3. Загрузка таблицы loadTable Или же поменять обработчик MenuItem на свой.
  17. Возможно. Сканер указателей или поиск по дампам. Без отладчика, брейкпоинтов, трассировки проблематично. Инструкций обычно очень много и в них можно найти обращения к статическим адресам из найденных указателей. По статическим адресам можно просмотреть обращения по смещениям, но куда следовать по коду и по каким смещениям надо изучать более детально в IDA, смотреть структуры одновременно. Можешь использовать декомпилятор плагин в IDA, тоже может помочь.
  18. main.lua TrackBar Class Подписаться на OnChange функцию из IDE или из Lua кода. Дальше читать позицию и по ней менять сигнатуру.
  19. Это действительно настолько неудобно, что требует исправления? Насколько я знаю, можно использовать другой браузер или посмотреть настройки Оперы (например, открытые, скрытие, ввести в адрес opera:config). Судя по ответу Xipho исправить - трудоемкая задача.
  20. Ой, я перепутал. Я думаю, что так будет работать. script = tamplate.gsub(tamplate, "$Process", Process) script = script.gsub(script, "$Signatura", Signatura) script = script.gsub(script, "$Register1", Register1) script = script.gsub(script, "$Register2", Register2) script = script.gsub(script, "$Register3", Register3) script = script.gsub(script, "$a", a) script = script.gsub(script, "$OriginalCode", OriginalCode) memoryRecord.Script = script Вот еще простой пример tamplate = [[ aaabbbaaaa ]] script = tamplate.gsub(tamplate, "bbb", "aaa") print(script) >> А вопрос - важно ли что в самом скрипте с названием "Cheat" будет находиться, хотя по идее не должно быть важным. Я просто сделал поиск по имени записи в таблице CE. Если оно уникальное, то будет найдена нужная запись. Если имя не уникальное, то тогда по другим условиям нужен поиск.
  21. Сначала я сделал так script = tamplate.gsub(tamplate, "$Process", Process) script = script.gsub(tamplate, "$Signatura", Signatura) script = script.gsub(tamplate, "$Register1", Register1) script = script.gsub(tamplate, "$Register2", Register2) script = script.gsub(tamplate, "$Register3", Register3) script = script.gsub(tamplate, "$a", a) script = script.gsub(tamplate, "$OriginalCode", OriginalCode) memoryRecord.Script = script У меня повылезали ошибки. Потом я сделал так и ошибки пропали. Кстати я получал Memory Record по имени, не по айдишнику. Я думаю, удобнее получать по имени. Короче ошибка в gsub заменах. А у меня еще ошибки в пустых переменных. Поэтому я написал (возможно это не нужно писать)
  22. Ниже перевод статьи о зарядке аккумулятора смартфона. Заранее напишу. Я не призываю делиться этой статьёй со всеми. В статье такой перевод Ниже ссылки на источники. Там же графики.
×
×
  • Создать...

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

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