-
Постов
2 999 -
Зарегистрирован
-
Победитель дней
129
Тип контента
Профили
Форумы
Загрузки
Блоги
Весь контент MasterGH
-
... это Дарк Байт точно не делал. Это делал скорее всего я и вроде с перекомпиляцией CE (или на Lua, я уже не помню) Альтернативный вариант генерации АА кода в этой теме, возможно там даже лучше.
-
Кто убрал (кто автор, автор темы или автор CE)? Это луа плагин и его нужно найти и добавить в папку Autorun из такой же папки прошлой версии. Кстати теперь можно писать поиск сигнатуры вот так: [ENABLE] globalalloc(newMem, 2048) registersymbol(sign_aob) aobscan(sign_aob, ff05xxxxxxxxa1xxxxxxxx33d252508d45fc) label(returnHere) newMem: mov [vvvv.exe+5B5A4],#100 inc [vvvv.exe+5B5A4] jmp returnHere sign_aob: jmp newMem nop returnHere: [DISABLE] sign_aob: inc [vvvv.exe+5B5A4] dealloc(newMem) unregistersymbol(sign_aob) Фишка здесь в метке зарегистрированной метке sign_aob, которая теперь работает в связке с aobscan. А globalalloc сразу регистрирует метку в новой выделенной памяти. Если теперь создавать другой скрипт в той же памяти, то можно сделать отступ на некоторое условное количество байт "newMem + 64" как ниже в скрипте [ENABLE] registersymbol(sign_aob2) aobscan(sign_aob2, aabbccddeeff05xxxxxxxxa1xxxxxxxx33d252508d45fc) label(returnHere) newMem + 64: mov [vvvv.exe+5B5A4],#100 inc [vvvv.exe+5B5A4] jmp returnHere sign_aob2: jmp newMem+64 nop returnHere: [DISABLE] sign_aob2: inc [vvvv.exe+5B5A4] unregistersymbol(sign_aob2) Правда одно неудобство. Скрипт с globalalloc(newMem, 2048) нужно активировать первым. Так что alloc(newmem, size) пока наиболее удобный вариант для сгенерированных трейнеров на АА-скриптах. Я думал, что globalalloc теперь выделяет только одну память для всех объявлений globalalloc, а оказывается теперь регистрируется метка этой памяти, вот и все.
-
Cheat Engine 6.3 может неправильно работать с той таблицей. Попробуйте поставить CE 6.2 с официального сайта со страницы скачиваний. По поводу как искать адреса оппонентов это Вы можете задать вопрос автору того скрипта в личное сообщение. Я думаю, что когда машина ускорялась или замедлялась автор таблицы отсеивал адрес скорости (или ускорения) своей машины. Поставил брейкпоинт, нашёл инструкции. Определил инструкцию на которой проскакивали как свой адрес так и вражеские. Определи черерез сравнения структур фильтр "свой чужой" - число 3 (cmp [eax+00001E60],#3). Написал скрипт, проверил. Написал сигнатуру. Опять проверил. Ну и все
-
Если что-то не работает вы можете написать Дарк Байту и поддерживать обратную связь для него в скрытом разделе Бета-Тестеров или на форуме в открытых темах. Бета Тестером стать вроде легко, надо себя перевести в соответствующую группу, как это сделал я изменив настройки в профиле. Только я не помню как именно.
-
Чтобы хуки работали я в ресурсы будущего сгенерированного трейнера включал вот эти файлы ced3d9hook.dll CED3D10Hook.dll CED3D11Hook.dll d3dhook.dll По поводу DirectX 8.1 не знаю.
-
June 13 2013: Cheat Engine 6.3 Released Перейти на официальный сайт для скачивания На главном сайте можно найти ссылку для скачивания и узнать последние новости о исправлениях и фиксах, которые на текущую неделю очень вероятны. Обсуждение этой версии в этой теме Так же выражаю благодарность SER[G]ANT-у. Очень большой труд им проделан по переводу на русский язык. Спасибо тебе большое, SER[G]ANT, от всех русскоязычных пользователей Cheat Engine!
-
Я бы помог, но мне что-то очень лень. Начать можно с простого <CheatEntry> <ID>2</ID> <Description>"$Кредиты$"</Description> <Color>80000008</Color> <VariableType>4 Bytes</VariableType> <Address>"Rangers.exe"+003BAFD4</Address> <Offsets> <Offset>E8</Offset> <Offset>0</Offset> <Offset>4</Offset> <Offset>38</Offset> </Offsets> </CheatEntry> Описание в main.lua и если пригодится defines.lua. Ищем классы Addresslist Class, MemoryRecord, Edit Class и разными экспериментами строим то, что нужно (конечно на Lua). Если это сложно, то предлагаю забить и пользоваться просто .CT таблицей.
-
Тогда берём CE 6.3 Beta и делаем пример Оказалось куда проще чем я думал, потому можно использовать визуальный редактор для сгенерированного .CETRAINER. Я сделал следующее. 1. Находим адрес и ставим на него хот-кей и описание. 2. Из меню Файл используя окно генератора трейнера генерируем трейнер как .CETRAINER и сохраняем в любое место 3. В главном окне открываем появившуюся форму по умолчанию Table->CETrainer->Edit Появится визуальный редактор. В появившейся форме видим компонет CHEAT0:tcheat (появившийся благодаря установки хот-кея). Допустим потом мы таких хот-кеев на опции чита сделаем много на шаге1, но пока оставим так. Под ним делаем TCEComboBox из панели визуальных компонентов. Напротив ComboBox надпись Label 4. В свойствах комбобокса указываем строки Items. 5. Чтобы обработать событие нового индекса идём в Events вкладку и там есть событие OnChange. Щелкаем по нему дважды и появится пустая функция function CEItemsChange(sender) end Пример получения индекса и запись в адрес function CEItemsChange(sender) local indexID = sender.getItemIndex() print(indexID) if(indexID == 1) then writeInteger("vvvv.exe+5B5A4", 1000) end end Весь страшный код получился таким (90% сгенерированный)
-
Мне будет проще помочь, если будут некоторые материалы и информация 1. Версия CE (наверно это 6.2?) и формат сохранения трйнера (*.exe, *.CETRAINER, *.CT) 2. Сейчас это тренер генерирумый по умолчанию или с своим интерфейсом? Предполагаю, что первое и спрашиваю на всякий случай. 3. Готовый Трейнер (в том числе, который обычно делается как *.exe) со всеми опциями читов и хоткеев сохранить в формат .CETRAINER без шифрования. Опции можно сделать с пустыми AA-скриптами. Мне главное понять как спозиционировать CoboBox относительно этих опций и на скриншоте, и в текущем .CETRAINER 4. Один скриншот с думя окнами. На первом окно трейнера, на втором схематично должно быть отображено рамкой где должен находится ComboBox и его примерный размер. Если комбокс не влазит и размер формы при этом нужно увеличить или раздвинуть другие компоненты, то примерно указать рамкой новый размер и если будут новые положения других визуальных компонентво, то отдельными рамками отобразить их новые положения. Надпись напротив ComboBox тоже указать рамкой. Пункты 3-4 можно спрятать в архив и опубликовать здесь или мне через личное сообщение. Осталось: 1. Понять правильные создание, позиционирование, размер CoboBox-а по содержимому .CETRAINER, а также изменить позиционирование других визуальных элементов. 2. Понять что и как сделать удобнее, чтобы меньше требовалось движений и кодописания. 3. Стадия проверки
-
Для сравнения новое окно снятия показания регистров и текущее - бряк на адресе патронов в игре STALKER Тени Чернобыля Скачать плагин: DebugWindowForm.rar Установить архив в папку автозапуска в CE не младше 1846 ревизии иначе могут быть ошибки. Архив содержит два файла: окно бряков и Lua-скрипт. Если кому-то помог этот способ логирования и было найдено его удачное применение можно написать об этом здесь. Все сделано мной примерно за 3 часа, хотя я и старался тщательно проверять ошибки и предвидеть их, но не исключаю их появление. Функцию установки брекпоинта искать в контекстном меню. Версия 1.0 1. Лог отдельного регистра теперь показывает множество значений попадающих в регистр, а также количество повторов 2. По двойному клику переход в новое окно дизассемблера. Раньше показывалось окно регистров. А если воспользоваться кнопкой, то показывалось постоянно одно и тоже окно дизассемблера не позволяя видеть множества окон дизассемблера для анализа расположения инструкций. 3. По кнопке Close окно закрывается и снимается бряк. 4. Можно ставить бряки на byte, word, dword, float иначе будет сообщение о невозможности поставить 5. Бряк ставится только на доступ (одновременно чтение и запись) 6. Если в регистре более 50 новых значений, то появляется информация об этом в мемо (компонент с текстом лога) напротив регистра. При этом новые записи не добавляются, но счетчики повторяющихся значений на регистре работают 7. Кол-во прервавшихся инструкций, т.е. кол-во записей в ListView не более 250 8. В заголовке окна не только адрес, но и его название взятое при установке бряка
-
Нопы не пишут и не читают. Это 99.99% баг CE. Попробуй поставить брейкпоинт в OllyDbg. Я более чем уверен, что repe movsd будет инструкцией, на которой произойдёт "остановка". Я думаю, что лучше сделать инъекцию перед этой инструкций с жёсткой записью по esi - адресу. esi - адрес-источник - source edi - адрес-приёмник - destination ecx - счётчик - counter Если ecx равен 8 значит repe movsd посылает 8 раз(хотя тут я не уверен) 4-байтовые значения из адреса по esi в адрес edi. Чаще всего я видел эту инструкцию при работе со строками и были у CE аналогичные глюки с показом инструкций на которых был бряк (этот баг тянется очень давно ещё с версий 5.xx и возможно ранее) Сравнение 0A это скорее сравнение с переводом строки. ASCII LF (перевод строки, 0x0A) (0x0A, 10 в десятичной системе счисления, '\n') . Ещё есть CR (возврат каретки, 0x0D) . Так что похоже это строка и экранное значение.
-
Добавление новой функции MenuItem в контекстное меню как на скрине ниже Выводит результат: * Похожая тема для меню дизассемблера. + показано как извлечь информацию из выделенной записи О том как это было сделано Сначала в голову пришла идея сделать окно анализа брейкпоинтов, а для этого надо добавить функцию в контекстное меню для установки своего бряка. Через несколько неудачных попыток реализовать это (без Lazarus и сорцев CE под рукой было особенно сложно) все-таки решение найдено. Но чтобы не усложнять пример отладочными функциями Lua я просто извлекаю описание записи и адрес. Заметьте, что здесь нет проверки есть адрес здесь или нет. Смотрите код, посмотрите результат и смотрите конечно main.lua. Желаю удачи. function OnGetSelectAddress() local al = getAddressList() local mr = addresslist_getSelectedRecord(al) local address = memoryrecord_getAddress(mr) local description = memoryrecord_getDescription(mr) local strHexAddress = string.format("0x%08X", address) print(description.. ' : '..strHexAddress) end local al = getAddressList() local view = component_getComponent(al,0) local popupmenu = control_getPopupMenu(view) mi = createMenuItem(popupmenu) menuItem_setCaption(mi, 'Get Info SelectAddress') menuItem_onClick(mi, OnGetSelectAddress) --menuItem_setShortcut(mi, 'Ctrl+Shift+T'); menuItem_add(menu_getItems(popupmenu), mi)
-
Возможно некоторые игры банально в тихую или с уведомлением "палят" CE по заголовку с включением слов "Cheat[..]Engine". Вот скрипт, который убирает название окна и чтобы все-таки лицезреть версию CE, то только её написать в заголовок 1. Создаём текстовый файл ChangeCaptionMainForm.lua в папку автозапуска, например "C:\Program Files (x86)\Cheat Engine 6.2\autorun" 2. Пишем и сохраняем local mainForm = getMainForm() local verCE = getCEVersion() control_setCaption(mainForm, verCE) Теперь всегда при запуске CE видим только версию. Ещё хорошо бы изменить название процесса CE, но это уже можно сделать вручную изменив название исполняемого файла (их там несколько)
-
Действительно не хватает деталей: 1) Какое правило поиска адреса? (по точному значению или другое) 2) Какой тип данных? (текст, байт, 4 байта, сигнатура или т.п...) 3) Сколько раз приходится отсеивать? 4) На какое постоянно значение нужно менять адрес? 5) Обязательно название игры и название самого искомого параметра... (можно было с этого начинать, т.к. многопользовательские игры попадают под запрет, см. правила форума) Я думаю, тут не мало нюансов. Ждём название игры и хотя бы какие-то ответы на все перечисленные мной пункты 1-5.
-
Есть даже тема и там аттач этого сборника в первом посте.
-
Цели могут быть разные и не только пиар. Факт остаётся фактом - данная привязка есть и каждому решать как к ней относится и пользоваться ли такими трейнерами. Мне лично нейтрально - я эти трейнеры ни разу не запускал и не нуждаюсь в них. Альтернативные варианты без привязок к Интернету наверно всегда будут существовать, а если нет, то можно учиться делать читы своими руками и головой. Если не сложную инъекцию кода, то хотя бы найти адрес по правилу поиска на один уровень игры или запуск. К счастью или не к счастью... Если поговорить о задушевном. Счастье это когда близкие и ты сам здоров, когда не летаешь много часов на самолете чтобы увидеться с близкими, когда не устал от работы, когда есть свободное время... А то, что трейнеры кто-то привязал к сайту и поиграть не получается без трейнера, это такая фигня...
-
#include "stdafx.h" int _tmain(int argc, _TCHAR* argv[]) { LPCWSTR p_ClassName = NULL; HWND aHandle = FindWindow(p_ClassName , L"CETrainer"); SetWindowLong(aHandle, GWL_EXSTYLE, GetWindowLong(aHandle, GWL_EXSTYLE) | WS_EX_LAYERED); // clWhite = $FFFFFF SetLayeredWindowAttributes(aHandle, 0xFFFFFF, 255, LWA_COLORKEY); return 0; } Подробнее здесь.
-
В ревизии 1792 для меня наибольшую ценность имеют 1. add listview OnSelectItem 2. globalalloc now combines multiple allocs into the same region (on a 16 byte alignment) OnSelectItem - наконец будет ловить событие выделения ячеек в листбоксе (раньше я это делал через таймер) Ну, а globalalloc теперь (судя по писанию) увеличит свою популярность и практичность - не позволит транжирить блоки памяти как это происходит через alloc()
-
В книжке, которую я предложил должна быть подробно освещена тема по работе с базой данных и должны быть даже готовые примеры: связки таблиц и данных... sqlite насколько я помню вариант хороший. Но может имеет место быть задача как единственной так и первоочередной разобраться как работают стандартные компоненты баз данных - возможно именно по работе с этими компонентами составлялись конспекты. Препод может знать как с ними работать, а не как работать с sqlite. Так же препод может подумать, что студент решил повыпендриваться и начнёт "заваливать". Мне кстати так трояк влепил по С++ препод при чем за экзамен - я довыпендривался и к тому же я пришёл сдавать в параллельной группе раньше срока для моей группы и от меня наверно изрядно тянулся шлеф воздуха с запахом пива.
-
Видео нет, а пример могу.
-
Я ещё кое-что откопал с форума: =)))) Ну и в то время была CE 5.4 и не обладала многими фичами, которые имеет сейчас... Всегда было интересно видеть ваши работы по программированию. :: Baron Gede :: specz :: g-l-u-k :: lamer[stand] :: CyberDoom :: 6aHguT :: AllexY :: geck90 :: yad_v7 :: CuBiC Мне посчастливилось застать то время. В 2008-ом я был на 3-тем курсе универа - только начинали программировать ЧПУ и контроллеры Сименс. Ещё кажется в этом году появились сложные дисциплины, которых я терпеть не мог на протяжении нескольких симестров: Детали машин, ТАУ, Тер.Мех.
-
К сожалению, скомпилированный вариант трейнера при помощи CE копирует кучу файлов во временные директории и запускает серию процессов. Это действительно, мозолит глаз и просто отвратительно по сравнению с трейнерами, у которых только один процесс и скорее всего он никуда ничего не распаковывает. На сегодняшний день мне нравятся эти два варианта: 1) Пользоваться форматами таблиц *.CETRAINER, *CT на отдельно взятую игру (без наличия Cheat Engine не запустится) 2) Смириться и использовать большой скомпилированный exe-трейнер, но что бы в нём была поддержка множества игр (запустится без CE) На самом деле, если отмести многие принципы и идеалы при создании программы -трейнера нацелившись на результат, то главное чтобы "трейнер работал" и появился как можно раньше после релиза игры. Это самое важное для пользователя. Всё остальное это то, что могло бы подчеркнуть индивидуальность создателя или также индивидуальность его команды. Тут надо подумать сколько времени можно на это потратить или проще сделать CE-AA таблицу.
-
Возможно поиск значительно ускорить, если сканировать не скриптами АА, а Lua с указанием типа памяти при сканировании. Цитата из main.lua: Можешь поискать примеры в Интернете.
-
Если сроки позволяют, то можно ознакомится с книженцией "Библия Delphi (3-е издание), год 2011, автор Фленов М.Е.". Подробно описывает работу со стандартными компонентами (возможно со всеми стандартными). Разжёвано, осталось только проглотить. По компонентам VCL я даже не представляю, что можно осветить в курсовой работе. Во-всяком случае желаю удачи. Ещё не стоит забывать про справочную документацию идущую в комплекте с Дельфи.