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

MasterGH

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

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

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

    129

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

  1. Определиться, что именно тебе интересно и чем ты сам хочешь заниматься. Если самому нечем заниматься. то это вопрос к самому себе. Если же есть чем заниматься, но не дают, то это вопрос к админам. Лучше об этом сообщать (в тех же пожеланиях). Я бы смотрел в строну образования. Gamehacklab[RU] может мотивировать в изучении программирования и тем самым в выборе IT-специальности. Дать понять. что это за ресурс. 1) Для тех, кто просто ищут готовые читы, трейнеры 2) Для тех, кто заказывает и продает услуги по читам. 3) Для тех, кто учиться. Мне кажется, что третья категория совсем неочевидная. Человек, не понимает. Видит форум. Разделы. Первую тему, которую он создаст это "как найти готовые читы или трейнер". Ему скажут или сам делай и учись (смотри курсы), или ступай в заказы. И нет такого, чтобы была мотивация разобраться в том, как самому написать скрипт. Зато есть мотивация — выложи готовое и скачай готовое. Т.е. то, что лежит на видном месте: готовые трейнеры, готовые таблицы, готовые скрипты. А еще категории форумов неоднозначно сформулированны о том, что в них обсуждается. То ли категория для вопросов, как читы готовые найти или категория о том, кто их смог бы помочь сделать. В категории должно быть все-таки очевидно написано, какие темы там будут либо дайте готовое, либо я буду учиться и нужна помощь. В общем такое видение у меня.
  2. MasterGH

    5. Поиск смещений

    Если с Вашей стороны будет статья или видео о том, как применяется этот плагин (успешно или не успешно) для CE 7.2, то возможно будет и выше обнова. А так просто обновлять под циферки CE, честно говоря пока не вижу. У меня этих CE разных версий штук пять установлено. Все никак не почищу И давайте писать на новом форуме по возможности
  3. Судя по посту Xipho, есть надежда, что хоть какой-то форум будет Я предлагаю идею привязать активных пользователей к разделам форума. повторяющиеся вопросы — разрешать. Для этого специальный лояльный модератор-помогатор и специальный раздел "Вопросы для начинающих". У раздела создать подразделы. Несколько. Пока не знаю какие. Я бы нзначил Питроника(желание помочь) и Гарика(вежливость + опыт) на этот раздел. Название подразделов обсудить с ними. готовые ответы — разрешать. Раздел "Вопрос-ответ". Этот раздел специально для тех, кому надо быстро и без проблем получить ответ и не ковыряться по два часа. Назначил бы модератором Partizan. Т.к. он выдает готовые ответы часто. Но, если раздел для начинающих, то Partizan там не пишет готовые ответы сразу. Подразделы здесь обсудить с Partizan раздел "Опытные". На него поставить imaginary, justHack. Подразделы обсудить с ними. В этом разделе нельзя задавать "тупых вопросов". Иначе перенаправят тему для начинающих. Рекомендую сделать в этой теме FAQ. Чтобы самим не забыть, что вопросы уже обсуждали. Раздел "общение". Подраздел "Решение вопросов". Поставить Garik66, SerVick, Antonshka для решение споров. Цель — найти компромисс. Сообщения с разборками отправлять туда или создавать темы отельные. В конце темы — принятие решения. Есть спор возник, то его надо обязательно решить и написать в конце темы решение. DieVisn и Alex2411 могут быть модераторами в разделе публикаций. Например в подразделе "таблицам CE". их контролю содержания, что они работают. Следить за отвзывами по таблицам. Если, конечно, Alex2411 захочет и остальные не будут против. Ну, как-то так. Т.е. идея разделы разбить по активным позициям иначе мы не сдвинемся — никто писать не будет, т.к. друг друга "блокируем" и начинает какой-нибудь разбор полетов.
  4. Есть множество предложений создать бесплатный форум. Примеры Можно будет свободно общаться как и раньше. У кого-то будет время и тот сможет наполнять разделы. Кто-то сможет быть модератором. И совсем необязательно будущий форум закрывать, если там не будет активности или не будет времени им заниматься. Согласовать надо два момента (это к тебе xipho): 1) объявление о том, что форум переехал по другому адресу 2) ссылку на этот форум разместить по возможности на видом месте. Чтобы человек мог перейти по ссылке. Этот вариант для тех, кто хочет продолжать общаться на форуме, создавать темы, писать комментарии, ставить оценки и т.п.
  5. Наверно, надо целиком таблицу .CT смотреть. Так ошибки. По скрипту и сравнению с прошлой версией, вроде, нормально.
  6. Скорее всего, так решил Dark Byte и посчитал, что такое число нажатий достаточно. Число нажатий можно проверить в окне установки hotkeys при редактировании memory record через контекстное меню
  7. Я не особо любитель автономных трейнеров. Если бы я заморочился, то т.к. форма генерируемого трейнера продолжает работать с обычными MemoryRecord из таблицы CE, то можно в MemoryRecord подменять Hotkey. Я бы все удалил с формы. Создал бы сначала CECheckbox1, CEEdit1 и связал бы их с некоторым MemoryRecord по уникальному названию. В MemoryRecord подменял бы Hotkey через обработчик CEEdit1. По esc клавише стирать все, что в CEEdit1 Потом бы для остальных записей по аналогии... На мой взгляд, это большие заморочки и сложнее чем если писать на WinAPI + язык программирования. Я бы предложил просто пользоваться *.CT-таблицей 🙂
  8. Разобраться будет непросто. Основной принцип надо уловить. 1) userDefinedKeys - Lua-таблица с hot-keys. Не более 5 комбинаций нажатий. В эту таблицу происходит запись и чтение. 2) (object1.ClassName=='tcheat') and (object2.ClassName=='TMemoryRecordHotkey') это типы недокументированные в celua.txt. Экземпляры этих типов генерируются на форме при создании hot-keys 3) Сколько опций нагенерировали на форме, столько надо добавить потом. например addChangeHotkeyKeysFunctionality(CETrainer.CHEAT0,memrec0_hotkey0) addChangeHotkeyKeysFunctionality(CETrainer.CHEAT1,memrec1_hotkey0) addChangeHotkeyKeysFunctionality(CETrainer.CHEAT2,memrec2_hotkey0) 4) userPressedKey - обработчик нажатий в поле ввода текста, который будет работать с таблицей кодов hotkeys userDefinedKeys на 5 нажатий 5) clearHotkey() - обработчик клика на кнопку, очистит таблицу кодов hotkeys userDefinedKeys 6) -- создание формы changeHotkeyKeysForm "local function formCreate()". Принцип, который надо понять и уловить состоит в подмене хоткеев в tcheat и TMemoryRecordHotkey. Как именно подменяется можно увидеть по исходникам и по документации. К сожалению, документировано не все. Те, кто постоянно лазят на форуме CE, по исходником CE они знают и описание tcheat и TMemoryRecordHotkey. С моими комментариями: Вариант, рабочий. Главное не запутаться, когда будешь переделывать под свой вариант меняя опции или добавляя свои. Если что не понятно, то пиши. Я когда исходник открыл вообще ничего не понял. Когда начинаешь разбираться, потом картина выстраивается. Если бы я делал с нуля, то, наверно, делал бы без tcheat и TMemoryRecordHotkey, но остальное почти также с convertKeyComboToString
  9. Проверить, чтобы переменные были без кавычек. Т.е. debug_continueFromBreakpoint(co_stepover), а не debug_continueFromBreakpoint('co_stepover'). Функция debug_continueFromBreakpoint(co_stepover) делает шаг на следующую инструкцию не заходя в call. Далее прочитать регистры и далее вызывать debug_continueFromBreakpoint(co_run) чтобы отпустить отладку. Если этого не сделать, то ничего и не произойдёт — висит в отладке. Учитывать нахождение на EIP при брейкпоинте на адресе брейкпоинта или на адресе следующем за адресом брейкпоинта. Например, это позволит прочитать eax из mov eax, [eax] двумя способами. 1 способ до перезаписи eax (EIP на инструкции брейкпоинта). Это software-брейкпоинт. Способ2 после перезаписи (EIP на инструкции следующей за инструкцией, на которой сработал брейкпоинт). Это hardware-брейкпоинт(он же по умолчанию). Оба режима, можно ставить вручную или программно. debug_setBreakpoint(address, size OPTIONAL, trigger OPTIONAL, breakpointmethod OPTIONAL, functiontocall() OPTIONAL) -- Где на EIP повлияет --Breakpoint methods: bpmInt3=0 --- software breakpoint bpmDebugRegister=1 -- hardwarebreakpoint bpmException=2 -- ну, это не нужно(медленный), на регион памяти (где здесь EIP будет, уже не помню)
  10. Да, лучше спросить у Дарк Байта. Может быть, сделать можно через registerCustomTypeLua. Нет? Если есть желание. можешь погуглить. Можешь написать на C# через чтение памяти Или другими программами попытаться просматривать память. Типа winHex Могут быть и программы альтернативы. Хотя CE как небольшой комбайн, но не все же ему уметь делать во всех кодировках. Пробуй IDA, Hidra и т.п.
  11. Отвечая на вопрос существует ли возможность, то она лично у Вас теоретически всегда существует, а именно самостоятельно изучить программирование и сделать, но вряд ли кто-то другой будет этим заниматься с отдельной кодировкой. Логику работы кодировки можно увидеть в исходниках MemoryBrowserFormUnit, исходниках hexviewunit.pas. Там не только чтение, но и запись в кодировке.
  12. Ну, такой я предлагать не буду 😃 Ну, может такой вменямый (визуально)? Большое количество опций, наверно, лучше оставить в таблице как есть без трейнеров. Вот пример Или вот такая вменяемая таблица? Или такая Во всяком случае можно выбрать отдельные опции или сгруппировать их, что-то вроде этого вполне вменяемо (сделан на Cheat Engine) А если опций еще больше и нужны галки, то тогда использовать контролы. Списки, вкладки и т.п.
  13. Ты уверен, что нужна ссылка? Это плагины к OllyDbg. Ссылки все битые. Им лет 10. Можешь поискать в Интернете "OllyDbg и названия этих плагинов".
  14. Хотя ответ был, но я приведу функции, которые могут пригодится 1. Открытие процесса: openProcess("Tutorial-i386.exe") 2. Добавить процесс в список процессов для автоподкючения: getAutoAttachList().add("Tutorial-i386.exe") 3. Функция, которая срабатывает, когда процесс подключился: function onOpenProcess(processid) // здесь некоторый код end 4. Активация записи по её имени: getAddressList().getMemoryRecordByDescription("Название записи в таблице CE").Active = true. Если такой записи еще в таблице нет, то вызовет ошибку. 5. При добавлении записи в CE сразу вызывается код в АА-скрипте. Так CE проверяет все, что там находится. Это может создать лишний таймер. Как это проверить? Через логи и print() 6. Если объединить пункты выше и отказаться от таймера, то получится что-то вроде этого. 7. Ошибка, очень похоже, связана с названием записи напротив галки. Т.е. она отсутствует. 8. Ну, а как программное разворачивать вложенные читы и активировать их? Идем в документацию и что-то вроде этого ищем про memoryRecord.Options. Выставляnm Options можно как вручную так и скриптом Более полно все функции описаны в документации Хотя там не все есть. Например, про "memrec" внутри уже созданного АА-скрипта. Тогда не нужно использовать local memoryRecord = getAddressList().getMemoryRecordByDescription("Активирующий скрипт"), а сразу memrec и с ним работать.
  15. Какую логику работы скриптов хотим получить? Вариант1 1. Если нажали на галку в таблице CE, то делать автоматически аттач к процессу? 2. Как только подключился процесс, то активировать другую галку? Или вариант2 1. Чтобы нажали на галку и начался поиск процесса 2. Как только процесс найден, то все вложенные записи под этой же галкой показались(развернулись)? Критерий "Как правильно написать этот скрипт для табличного варианта?" мне пока не совсем понятен.
  16. Вмешаться в состояние активации и деактивации. Заставлять работать чек-бокс записи в таблице по разными условиям.
  17. MasterGH

    [Lua] Логические операторы

    Я в прошлом посте чуть опечатался. Исправил. Верно. С "or" будет работать как с таким выражением ( (v1 && v2 && v3) || (v4 && v5) ) (левая часть) || (правая часть) Левая часть перестанет проверяться при первом false иначе пройдет до OR и прыгнет на успех в 6C1DD6. Левая часть, если встретит false, то перескочит на проверку правой части. Правая часть должна пройти все проверки до успеха в адрес 6C1DD6 иначе выход.
  18. MasterGH

    [Lua] Логические операторы

    >> В качестве аргумента выступает все выражение до следующего слева/справа опреатора Нет-нет. В данном случае так не может быть, потому что нет скобок. Все идет последовательно как в дизассемблере. С учетом таблицы приоритетов операторов в C++ "&&" выше || и с учетом твоего дизассемблерного исходника в выражении (v1 && v2 && v3 || v4 && v5) идет последовательно Сначала так v1 && v2 — это истина. Затем идет истина && V3 — это истина. Затем программа видит Or и дальше не пойдет, потому что от OR слева равно true (или не false). Так написано в официальной документации (что если слева от Or идет true, то дальше не идет) и так и видно по дизассемблерному исходнику на 00FC2638 jne __$EncStackInitStart+5Ah (0FC2646h) Вот еще пример На плюсах ошибка "int Z = X + (A == B) ? 1 : 2" Т.е. программист хотел так "int Z = X + (A == B ? 1 : 2)", а сработает это вот так "int Z = (X + (A == B)) ? 1 : 2;". Похоже про то, что ты написал — все выражение слева. Почему выражение целиком оборачивается слева? Наверно, потому что тернарный оператор этот "?:" имеет меньший приоритет чем + и == стоящих слева. Вот компилятор и посчитал собрать всю левую часть, как в скобки сам. Но, не уверен, что это так. В общем надо смотреть дизассебмлер.
  19. MasterGH

    [Lua] Логические операторы

    Существует три логических оператора: and, or, not. Те, кто уже знаком с языками программирования знают, как эти логические операторы работают. Например, A = true B = true if A and B then print('Условие "A and B" выполняется') end if A or B then print('Условие "A or B" выполняется') end B = false if not (B == A) then print('Условие "not (B == A)" выполняется') end Но, дальше интереснее. Все логические операторы считают false и nil ложными, а все остальное — истинными. Оператор "and" возвращает свой первый аргумент, если он ложен и в противном случае возвращается второй аргумент Оператор "or" возвращает свой первый аргумент, если он не равен false и в противном случае возвращается второй аргумент. Сходу можно запутаться, но с примерами станет понятнее print (4 and 5) --> "5". В этом примере '4" не ложный, а значит при операторе "and" вернется второй аргумент "5". print(0 and 13) --> "0". Аналогично print(false and 13) --> "false". В этом примере первый аргумент false(ложный), а значит при операторе and вернется "false". print(4 or 5) --> "4" В этом примере "4" не ложный, а значит при операторе "or" вернется уже первый аргумент "4". print(false or 5) --> "5" В этом примере "false" ложный, а значит при операторе "or" вернется уже первый аргумент "5". Если кто вспомнил, то в C# есть такой оператор "?" (условный) string result = 4 == 4 ? "равно" : "не равно"; // result будет равен true На Lua это эквивалентно local result = ( (4 == 5 and "равно") or "не равно") А если опустить все скобки, то local result = 4 < 5 and "равно" or "не равно". Скобки можно опустить, потому что "and" имеет выше приоритет чем "or." Или вот еще пример compactmenuitem.Caption = state and 'Compact View Mode' or 'Full View Mode' Вот такая интересная штука для ускоренного сравнения вместо конструкции if условие then -- код else -- код end Идем дальше. Полезной идиомой Lua является x = x or v что эквивалентно if not х then х = v end Т. е. x равен значению v, когда x ложное. Оператор "not" всегда возвращает true или false print(not nil) --> true print(not false) --> true print(not 0) --> false print(not not nil) --> false
  20. То, что ДаркБайт делал, это квадратик нарисовал и пару палочек в нем в виде крестика. Это не на Lua, а на Lazarus - то, на чем CE написан. На Lua можно в теории сделать любой чек-бокс. Только готового скрипта нет и это не быстро сделать. И это творческий процесс. Если очень надо поспрашивай на форуме Cheat Engine. Я думаю, будут энтузиасты и они подскажут. Может быть и что-то готовое уже есть.
  21. Google пишет, что этот компонент системный. Поэтому Dark Byte сделал финт - квадратик с крестиком, т.е. сделал свой вариант чек-боксаа и может красить его как угодно Скорее всего, только свой компонент делать. Я бы поигрался с Image компонентом. В нем менять картинки этого чекбокса по обраотчику. Все это дело не простое и творческое. Кнопку может и сделаешь визуально в редакторе и кликаться будет, и меняться картинка и label-надписи будут рядом. Но еще предстоит внедрить в саму форму, где будешь использовать. Выровнять. Все эти клики связать. Либо вручную в этом визуальном редакторе CE, либо программно. В целом это все творческий и долгий процесс создания внешней оболочки.
  22. Это решение не тестировал и не могу судить насколько оно удобно или применимо. Может быть ситуация, когда надо постоянно проверять подключён процесс или нет. Это можно делать тем же таймером или перед активаципй опций читов. В общем просто вариант из сочинений на тему "как бы подключился к процессу".
  23. А какая ошибка выскакивает? Я проверил старый скрипт на CE 7.2. Ошибки нет. Процесс находится и подключение к нему происходит.
  24. Ниже находится обучающий пример плагина для CE Lua с установкой компактного режима применяя парадигму ООП — инкапсуляции. Для программирования плагинов на Lua могут пригодится приемы ООП. Это касается сущностей, их поведений и взаимодействий между ними. В данном примере CECompactView — описание класса на основе мета-таблицы и оно является сущностью. Функции класса — uncompact() и compact(), которые реализуют поведения этой сущности. Основной скрипт с описанием сущности можно поместить в отдельный файл .lua и далее можно кратко инициализировать сущность и управлять ей Например Сам класс или мета-таблица. Скрипт можно сохранить в Lua файл и добавить в папку autorun. Для интересующихся наследованием и полиморфизмом об этом есть в моем блоге (где-то в начале).
×
×
  • Создать...

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

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