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

MasterGH

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

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

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

    129

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

  1. Так эта ошибка была вообще? Или придумана?
  2. Эта тема для тех кто, часто пишет Lua скрипты на Cheat Engine. Слежение на main.lua (репозиторий на сайте) Также способы: 1. Поставить клиент git репозитория и настроить его 2. На официальном сайте найти (не полную) документацию из Wiki Зачем это это надо? Когда выходит новая версия любого программного продукта, то нужно узнать, что в этой версии поменялось и полезно ли нам это. Будут ли наши lua скрипты работать с этим. История версий, это очень подробный способ, который словами никто не будет описывать после выпуска новой версии Cheat Engine. * Файл main.lua для CE 6.5 это почти 2500 строк кода и количество строк увеличивается. * Содержание файла "main.lua" заменяет документацию, когда пишем скрипты или поддерживаем работу старых скриптов. * Слежение за историей поможет лучше ориентироваться в таком большом количестве строк для поддержания работы lua скриптов. * Не стоит забывать и про defines.lua, если потребуется
  3. Это ошибка. CE должна работать из любой директории. Опиши все действия, которые приводят к ошибке, чтобы я мог её повторить. Просто достаточно поставить в другую директорию? Диск системный? Русские буквы в пути были? Что-то другое?
  4. Делаешь атлас, таблицу положения и размеров символов, ну и выводишь программно. Или просто делаешь картинку с фразой на ней.
  5. Пиши подробнее, что именно не работает иначе я не смогу ни чем помочь.
  6. Есть и такой вариант, но он разовый getAutoAttachList().add('Tutorial-i386.exe')
  7. if (bIsAttached == 0 and dwPID ~= 0) or (bIsAttached ~= 0 and dwPID ~= bIsAttached) ЕСЛИ (текущий процесс закрыт И найден другой) ИЛИ (текущий процесс открыт И найден другой) можно переделать на ЕСЛИ (текущий процесс НЕ является найденным другим) if (getOpenedProcessID() ~= getProcessIDFromProcessName("Tutorial-i386.exe")) Тоже самое local timerAutorun = createTimer(nil, true) timerAutorun.Interval = 1000 timerAutorun.OnTimer = function () if (getOpenedProcessID() ~= getProcessIDFromProcessName("Tutorial-i386.exe")) then OpenProcess("Tutorial-i386.exe") end end
  8. Ребята, обновление будет на следующей недели, если не поменяются планы. Все пожелания учту. По вопросам сейчас не могу помочь.
  9. Обновление: 2.4.2 Скачать: перейти Репозиторий: перейти Описание: 1. Исправления ошибок 2. Изменены шаблоны, старый aobscan удален. 3. Изменен формат директив в шаблоны. Добавлены новые директивы. Привожу вместе со старыми {$AddressInjection} {$OriginalCode} {$CheatCode} {$Nops} {$ArrayOfbyte} {$ProcessName} {$Date} {$PrintLog} Посмотрите шаблон, разберетесь что к чему. 4. Шаблоны теперь похожи на те, что генерит последняя версия CE 5. Наконец штука, которая не работала - отступы перед дизассемблерным кодом под метками. stringSpaceBeforeinstruction . Поставьте столько отступов сколько хотим и код в шаблоне будет смещен на эти отступы. Другие отступы правятся в шаблонах. Неудобно то, что свои шаблоны придется вручную вставлять в новые версии файла плагина. Точно не знаю, все ли правильно работает ))
  10. Bugs: 1. We know nothing about AOBScanModule function. AOBScanModule is null. 2. Every time, over and over again compare (result == nil) result = AOBScanModule(str.._str, '+X-C-W') if result == nil then print(' ' ..'Sorry. Not find signature with AOBScanModule! :(') break end -------------------- alloc(someMem, 1000) registersymbol(someMem) someMem: mov edx,[eax+0C] // go to point here and call Aobscan from aamaker mov [esi+08],edx pop esi ret mov cl,[esi+01] and cl,01 or cl,1A DebugCode 2 Every time, over and over again 1. print('some label') 2. compare (result == nil) Log: Maybe I'll fix it soon enough
  11. mov edi,[edi] где edi перезаписывается. Надо узнать edi, до записи. Для этого в настройках поставить брейкпоинт на память, а не аппаратный
  12. С большим количеством адресов работают в окне Structure disscet. Там можно установить адрес структуры данных, размер, тип каждого или всех выделенные адресов. Все выделенные адреса можно через контекстное меню перенести в таблицу CE. Нашли адрес. Перешли в окно структуры Задали структуру адрес-50 и размера 100 (цифры взяты из примера, из первого поста) Тип данных либо автоматически оставить, либо выделить все адреса и поставить byte (раз в примере был adjust address by 1). Выделить все адреса и перенести в таблицу CE. Таким образом 100 адресов типа 1байт можно очень быстро оформить и перенести в таблицу.
  13. Подставь свои числа по метками, чтобы подсчитать что-то другое. Но только не в таблице CE, а в скрипте. В таблице перезаписывает на дефолтные указанные в скрипте. Также под отладкой можешь пройтись и посмотреть
  14. fisttp инструкция была добавлена позже других из x86. Многие ассемблеры и дизассемблеры не могут её понять. Тем не менее процессор знает её )) Поэтому можешь попробовать вписывая опкоды. Опкоды Encoding Description DF 08 Store as a truncated WORD DB 08 Store as a truncated DWORD DD 08 Store as a truncated QWORD Пример Examples of using the hand-coding to store the value of ST(0) as a truncated DWORD could be as follows, assuming that int_var would be used as a DWORD integer variable (or [edi+ecx*4] is pointing into an integer DWORD array): lea eax,int_var db 0DBh,8 or lea eax,[edi+ecx*4] dw 8DBh Источник
  15. А что ты хотел на видео? Я уже ничего не помню
  16. Garik66, я думаю, будет лучшим объяснением видео того как появляется эта ошибка и на английской версии CE. Вообще видео - это наиболее подробный способ объяснить баг. Все действия, которые ты делал видно.
  17. Garik66, пиши на форум Cheat Engine в тему аамейкера. METHOS намного чаще бывает там чем здесь. Мы там в личке переписываемся. Он там был вчера вроде.
  18. Good! I will use AOBScanModule and AOBScanModuleStealth templates. К сожалению, руководства до сих пор нет, я вряд ли предвидится. Даже если оно будет, то представляете надо еще объяснить для чего каждый шаблон нужен. Это для вас оно может понятно, а для других это будет как куча ангийских непонятных слов. На форуме CE я оставил тему по плагину. Там уже две страницы постов набежало только за воскресение и около 200 скачек плагина за сутки было. Сейчас уже поменьше активность.
  19. We are waiting for you! )) Very nice. I like it and I've updated the repository. Это актуально, когда имеем дело с опкодами jmp, je,jne и другими прыжками, а также call опкодами. После опкода команды по base relocation могут меняться смещения. Я точно не знаю, меняются ли они в exe (т.е. в регионах памяти Image типа). Я попробовал запускать приложения, не менялись. А вот в dll-ках ступудов будут меняться (хотя надо проверить, может я путаю). Но, если сигну делать подальше от этих прыжков и вызово, то все Ok. Вообще я такую фишку задумывал для продвинутой инъекции, когда мы не знаем регистров после опкода. Но я так это дело и не довел до конца. Я на работе ничего не успеваю, начальник делает замечания. У меня нет времени не то, что на хобби, даже на отдых. Пост пишу, а хотел вообще спать лечь. Так, что я вас покидаю, до того как разгребу свой план на работе.
  20. К скрипту выше тоже самое, но покороче {$LUA}memoryrecord1 = getAddressList().getMemoryRecordByDescription('No description')[ENABLE]memoryrecord1.Active = true[DISABLE]memoryrecord1.Active = falseЯ вообще не понимаю, зачем нужно симулировать нажатие клавиш изнутри скриптов или изнутри игры. Всегда обходились без этого
  21. Для того чтобы заморозить какой-то адрес в таблице или активировать, или деактивировать достаточно в CE назначить комбинацию горячих клавиш. Бывает случай, когда нужен скрипт, в котором несколько условий. Например, одно из них "cmp [адрес метки1], 1", где метка1 зарегистрирована и видна во всех скриптах. Тогда в другом скрипте надо написать запись в эту метку 1 или 0 по горячим клавишам. Эти два приема достаточны для большинства читов в играх.
  22. Цель - сделать генерацию АА надежной, простой, легкой и гибкой с любой своей разметкой отступов, положением меток, наличием/отсутствием заголовка, наличием/отсутствием "INJECTION POINT". Те кто заинтересован, пишите о других ошибках (например появляющихся на 32-х разрадядном процессе) и пишите о предложениях. По плану SnedS91, если ты еще заинтересован в улучшении плагина и хочешь его улучшить, пиши в личку.Если будешь пользоваться репозиторием, то зарегся на БитБакед для контроля версии исходника.
  23. Версия 2.4.2

    179 раз скачали

    [En] Repository https://bitbucket.org/MasterGH/lua-plugin-ce-aa-maker This is CE Lua plugin for Cheat Engine 6.5 or heighter. AAmaker will help you to create autoassembler scripts. 1. Paste the aamaker.lua in "Autorun" directory 2. Run the Cheat Engine. 3. Attach game Process 4. Go to "Memory View" window 5. Select address of code 6. Right-click to bring up the context menu 7. Use the "AA Maker" instructions in the context menu [Ru] Репозиторий https://bitbucket.org/MasterGH/lua-plugin-ce-aa-maker Это плагин CE Lua plugin для Cheat Engine 6.5 или выше AAmaker предназначен для содания создания autoassembler скриптов. 1. Установите aamaker.lua в "Autorun" директорию 2. Запустите Cheat Engine. 3. Присоедините процесс 4. Перейдите в "Memory View" окно 5. Выделите адрес кода 6. Правой кнопки мышки вызовите контекстное меню 7. Используйте функции "AA Maker" в контекстном меню
  24. Я думаю, это не сложно. Но мне кажется это не даст ощутимой пользы даже с расширением обзора. Другое дело если создать компонент, который позволяет объединять в группы найденные адреса по определенным правилам 1) одинаковые значения 2) близко стоящие адреса 3) адреса, к которым обращается одна и та же инструкция 4) адреса, к которым не обращается ни одна инструкция игры в данный момент 5) адреса, к которым одинаковое количество раз происходило обращение кода игры ну и т.п. Т.е. помимо обычной информации "адрес-значение-тип" выводить, сортировать и группировать по другим правилам и другим данным. Возможно даже что-то рисовать чтобы видеть общую картину. Наши глаза распознают отличие мгновенно, когда мы видим всю картину, а в ней что-то разным цветом. Например, участки (области привязанные к адресам) рисовать разным цветом, но для определенной руппы, когда к адресам этой группы обращаются инструкции игры синхронно. Таким образом можно выявлять группы разным цветом.
  25. Обращаться к записям в таблице CE можно разными способами. 1. По индексу 2. По имени 3. По связанным функциям горячих клавиш 4. Из новых глобальных функций onMemRecPreExecute и onMemRecPostExecute Например, если что-то активировать, а перед этим выполнить Lua скрипт function onMemRecPreExecute(memoryrecord, newstate)print(memoryrecord.Description)endТо в консоли будет вывод надписи чита, который был активирован. Этот memoryrecord можно проверить на уникальное название, на номер индекса... Короче, по задаче в этой темы лучше по индексам, а не по именам... Ниже выделил жирным, что может подойти при написании скрипта, когда один скрипт вырубает другие. Но надо учитывать нюансы. 1) надо сначала запустить Lua скрипт. Будь он в таблице, будь он в папке авторана, будь он в трейнере. 2) при добавлении вставок {$Lua} и {$Asm} в АА скрипты надо держать в голове, что есть три области: выше [enable] и [disable], между [enable] и [disable] и ниже [disable]. Самая высокая область активируется в любом случае при нажатии на запись. 3) CE при добавлении таблицы проверяет и исполняет скрипт при этом вызывая область выше [enable] и [disable], между [enable] и [disable]. Может получится так, что скрипты выполнятся не тогда, когда задумано и работать будут не так как задумано. 4) local ссылки и не local ссылки (глобальные), последние ссылаются на что-то постоянно пока не будут nil 5) объекты на которые ссылаются перменные, бывает, надо уничтожать или не создавать повторно. Если создать, например, таймер и связать его с функцией, то эта функция будет вызываться по интервалу постоянно. А если этот таймер по пунктам 2,3,4 будет создан не так как задумано и не будет выключен или уничтожен, то он скорее всего будет мешать что-то делать.
×
×
  • Создать...

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

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