-
Постов
2 999 -
Зарегистрирован
-
Победитель дней
129
Тип контента
Профили
Форумы
Загрузки
Блоги
Весь контент MasterGH
-
А искать текст в разных кодировках не пробовал?
-
Я всё-таки Coder-у предлагаю сначала написать рабочий вариант на языке высокого уровня (С++) + WinAPI. Это нужно для того чтобы в упрощённом виде смотреть на жизненный цикл программы. И кстати его хорошо бы сначала спланировать. 1) Спланировать жизненный цикл программы на WinAPI 2) Написать по примерам на C++ желаемую программу 3) Написать на FASM На С++ будет нагляднее, а на FASM код становится довольно ёмким. План: 1) Создаём окно 2) Цепляем к окну диалоговую функцию 3) В диалоговой функции продуманно обрабатываем сообщения горячих клавиш и закрытие формы. При закрытии закрываем созданные дескрипторы(хендлы). 4) Если нужно уведомление о том, что процесс найден, то создать таймер поиска процесса и обрабатывать сообщения таймера в диалоговой функции. 5) Продумать логику поиска процесса. Ведь если процесс найден, то искать его вновь не нужно... Если по своему плану написать что-то на С++, то на FASM это будет переписать гораздо проще чем писать сразу на нём не имея ранее опыта
-
Coder, пользуйся пошаговой отладкой в каком-нибудь отладчике для выявления проблемных мест. Когда не знаешь почему программа не работает пользуются отладчиком и документацией WinAPI функций под рукой.
-
Группа Модератор (у нас это или СуперМодератор): 1) Максимальное количество «+» к репутации, которое пользователь этой группы может поставить в течение 24 часов = 50 2) Максимальное количество «-» к репутации, которое пользователь этой группы может поставить в течение 24 часов = 50 Группа Разработчики: 1) Переименована группа 2) Отключена возможность менять ники у группы Разработчики (но оставлена у обычных пользователей в течении 30 дней) 3) Отключена возможность ставить оценки. Этим будет заниматься Управляющий состав или в будущем дополнительные доверенные лица. Это мера от установки оценки клонами и недоброжелателями. Так же это мера от установки негативных оценок, количество которых может отправить пользователя в баню без ведома Управляющего состава. Всем желаю успехов.
-
Проверь защиту памяти сигнатуры твоего кода AOBScan(signature, "+X-C-W") +X : поиск сигнатуры в памяти с правами "выполнения кода" (PAGE_EXECUTE) -С : исключить поиск сигнатуры в памяти с правами "копирования при записи" (PAGE_WRITECOPY) -W : исключить поиск сигнатуры в памяти с правами "записи данных" (PAGE_READWRITE) Совмещение прав это разная комбинация X,C,W со знаками *(поиск без разницы, может быть, а может и не быть), - (исключить поиск), + (включить в поиск)
-
По сути проблема в том, что не закрывается дескриптор процесса игры. Возможно он и не создавался. Причины могут быть разные.
-
Вот одно из решений на Lua. При присоединении к процессу игры происходит запись в найденный второй адрес
-
Roman_design, все ответы здесь. Код results=AOBScan("9A 99 99 99 99 99 C9 3F B8 1E", "+W-C-X") FlCount = results_getCount Надо запускать уже тогда, когда процесс был подсоединён, а подсоединяется он в функции onOpenProcess. В версии CE 6.1 надо так же запустить reinitializeSymbolhandler(). function onOpenProcess(processid) reinitializeSymbolhandler() results=AOBScan("9A 99 99 99 99 99 C9 3F B8 1E", "+W-C-X") FlCount = results_getCount SetHotKey(No, VK_R)--я так понял тут задается хоткей. А если мне нужно Ctrl+R например? SetHotKey(Norma, VK_V) control_setCaption(formTrainer, "Trainer Run ....") setProperty(infoLabel, "Enabled", "true") end Функция SetHotKey написана была мной специально для версии CE 6.1 чтобы обойти некоторый баг. Чтобы добавить ещё одну горячую клавишу, то нужно добавить в эту функцию ещё аругмент. function SetHotKey(func, hotkey, hotkey2) local objectHotKey = createHotkey(func, hotkey, hotkey2) generichotkey_setKeys(objectHotKey, hotkey, hotkey2) generichotkey_onHotkey(objectHotKey, func) end Вообще я этим методом регистрации горячих клавиш не пользуюсь. Здесь другой метод....
-
KoBRaAndrey, ты просил ответить в эту тему. Отвечаю на вопрос: >> Как я могу переписать данный код в Delphi? Очевидно. Можно переписать изучив примеры исходников Cheat Engine, примеры создания трейнеров на Дельфи. Всё можно найти в Интернете включая документацию по Дельфи, WinApi и т.п. Если требуется готовое решение, то я им заниматься не буду
-
Хороший вариант использовать Lua Engine. Нужно поменять Player, названия игры, проверить ошибки... -- Подгодтовка памяти под читы autoAssemble([[ alloc(cheatMem, 1024) registersymbol(cheatMem)]]) -- Функция установки звёзд запускаемая из Lua function SetStar(player, star) AACodeTemplate = [[ cheatMem: mov eax, star push eax call 004A1240 mov ecx, player call 004F3240 ret createthread(cheatMem) ]] AACodeTemplate = string.gsub(AACodeTemplate,"player", AACodeTemplate) AACodeTemplate = string.gsub(AACodeTemplate,"star", AACodeTemplate) print('Будет выполен блок AA кода ' .. AACodeTemplate) autoAssemble(AACodeTemplate) end -- Базовый блок работы с процессом из статьи с главного сайта processName = "game.exe" function OnCheckHotkeys() if isKeyPressed(VK_K) then print("Установить 4 зведы") player = '000000000' star = '6' SetStar(player, star) return end if isKeyPressed(VK_L) then — сделать какое-то действие print(«Hot-key L») return end end function onCloseClick(sender) closeCE() return caFree end trainerForm = createForm() form_onClose(trainerForm, onCloseClick) autoAttachList = getAutoAttachList() stringlist_add(autoAttachList,processName); function onOpenProcess(processid) print("Найден процесс игры. Запускаю проверку горячих клавиш") hotKeyTimer = createTimer(trainerForm) timer_setInterval(hotKeyTimer, 100) timer_onTimer(hotKeyTimer, OnCheckHotkeys) end
-
>> Сделал скрипт, но игра вылетает В данной ситуации подсказать ничего не могу. >> Где можно почитать туториалы про использование функций? Если такие туториалы и есть, то они настолько сложны человеку который не пишет программы на C++ и не отлаживает их в отладке. Так что я думаю, даже браться не стоит. Есть какие-то документы на официальных источниках о соглашениях по передачи аргументов в функцию. Там тебе подробно опишут что происходит с esp, ebp, как они меняются, что происходит в стеке когда работает call. Но об этом лучше не читать, а видеть в пашаговой отладке твоей собственной программы. Самый простой вариант и совет как прокачать свои скилы в области вызовов игровых функций. Это скомпилировать прожку консольную с функцией в которую передаются параметры. Возьмёшь отладчик и исследуешь её. И с Cheat Engine потренируешься с созданием CreateThread. Ещё бывают "вкусные" функции импотрируемые из dll-ок. Там по проще будет. Также найди и установи IDA с декомпилятором IDA Hex Rays. Декомпилятор возможно правильно будет определять агрументы функций... Короче тебе надо много практики чтобы понять что и как.
-
Очень сложно дать точный ответ. Возможно, сместился стек и на 100% как именно он сместился непонятно. Возможно, нужно сделать так [ENABLE] alloc(newmem,1024) label(exitThread) newmem: mov eax,[esp] mov [exitThread],eax push 01 push 005F6298 call 0052C7E0 push eax call 005052C0 mov eax,[exitThread] push eax ret exitThread: dd 0 createthread(newmem) [DISABLE] dealloc(newmem)
-
Попробуй так: [ENABLE] alloc(newmem,1024) newmem: push 64 push 02 call 004A1240 // отсюда мы получаем eax по параметрам 0x64 и 0x02 mov ecx,eax call 004CFA50 ret createthread(newmem) [DISABLE] dealloc(newmem) Если что-то не получается, то смотри другие регистры и стек. Если не понял в чём прчина, то придётся тебе пробежаться по этим коллам, посмотреть в них глобальные переменные, т.к. вполне возможно от них что-то зависит. Вообще, всё надо проверять в отладчике при срабатывании исключения. Скорее всего ты сразу поёмёшь на каком участке был "сбой"...
-
В категории "Наши релизы" 1) Добавлен форум "Для Эмуляторов: трейнеры, скрипты, таблицы" 2) Форум с названием "Запрос", т.е. запросы трейнеров и т.п. перемещён вверх 3) К некоторым форумам добавлено уточнение о том, что в них могут писать только пользователи из группы "Разработчики"
-
Регистрация переменных удобнее через Lua. onOpenProcess(processid) reinitializeSymbolhandler() pClassHero = getAddress("[00410000] + 40") registerSymbol("pClassHero", pClassHero) end Для версии CE 6.2 Лучше использовать без сохранения переменной registerSymbol("pClassHero", pClassHero , false) Теперь можно в АА скриптах или в Lua скриптах использовать символ "pClassHero" Но если всё-таки нужен АА-скрипт, то можно и так [ENABLE] alloc(Init, 256) label(pPointer) label(TheEnd) registersymbol(pPointer) Init: mov eax, 00410000 lea eax, [eax+40] mov [pPointer], eax ret pPointer: dd 0 createthread(Init) [DISABLE] dealloc(Init) unregistersymbol(pPointer) Если где ошибка, то надо поправить. Я же не могу всё помнить и нет времени проверять И ещё кое-что. Сомневаюсь, что в процессе игры речь может идти о "классах". Класс это тип данных. Структура в программировании это тоже тип данных, однако "структура данных" это уже не тип, а реализация. Чтобы не писать длинное словосочетание "структура данных" можно писать просто "структура". "Структура игрока", "структура врага", "структура оружия", "указатель на структуру оружия", "указатель на структуру врага" и т.п. Всё - структуры.
-
Попробуй искать тип float как "неизвестное" в промежутке от 0.0 до 1.0. Первый поиск как неизвестное значение. Второй и последующие как уменьшилось/увеличилось/интервал от нуля до единицы.
-
Cheat Engine 6.2 Beta 1 (Wed Jan 18, 2012) Ссылка для скачивания:скачать
-
Да не это он хочет узнать , а как многоуровневый указатель найти до статического адреса (если его вообще там можно построить). Очевидно, что регистр eax там на начало структуры, а esi может меняться от игровой сцены к сцене. И он не знает что делать с этим esi. А мы тоже не телепаты и не роботы на вопрос каждого новичка давать готовое решение.
-
>> я нашел значение в своей игре(игра warhammer40.000).хочу написать трейнер но не получается так как немогу найти стат адрес.а стат. адрес немогу найти из за неизвестного смешения. nnzz, игра которую ты выбрал сложная для создания читов. По этой игре опубликованы скрипты на CE на форуме CE. Ищи тему по этой игре в форуме Автоассемблера и разбирайся.
-
Наверно, лучший способ встроить "виртуальную машину с чит-кодами" в процесс игры , которая работала бы только на определённом ПК. В этом случае не имеет роли как работает трейнер. Т.е. трейнер генерируемый CE это или нет это без разницы, главное то что внедряемая защита исполняется только на определённом компе. И здесь лучше привязывать исполнение виртуальной машины не только тупо к харду, а скорее к тому как одно или несколько устройств индивидуально работают. Так что ещё + драйвер варганить. Который можно сделать на CE записью в системную память через автоассемблер вроде через kernelalloc(метка, размер). Но, цель возможно не оправдывает создание подобной защиты. Точнее совершенно не оправдывает, т.к. просто тупо хотеть чтобы трейнер работал для кого-то это глупо с такими сложностями в реализации. Эту защиту можно заказать у программистов наверно от 30-60 тыс руб и более, а если ещё совместимость с CE то и ещё больше. Так что кому надо пусть идут на фриланс и ищут талантливых кодеров и не бояться что кинут Все остальные защиты имеют больше шансов быстрее быть взломанными. Есть правда и другой тип защит от распространения трейнеров, такой как у cheathappens. Но это скорее защита "сдерживания" распространения и завязана на деньгах за оплату аккаунта на определённое время. Если узнают что какой-то трейнер ушёл в массы, то извлекают зашифрованный код лиценции из трейнера и эту лицензию у человека "который раздал свой трейнер" обнуляют. А лицензия там Итог. Кому нужна защита, те изворачиваются как могут.
-
>> В СЕ есть возможность ставить бряки с помощью тренера? В генерируемом *.exe трейнере вроде можно, но надо проверять. Формат *.CETRAINER совершенно точно позволяет это делать, проверено мной. >> А какие утилиты имеют такие же функции, что и СЕ? брекпойнты и тп GodGame, MHS, OllyDbg, IDA или любой отладчик.
-
Я абсолютно не сомневался, что у тебя получится задуманная идея. Мне как бы похвастаться по работе с голым ДаректИКС нечем, кроме компиляций и разбора с десяток примеров как простых так и примеров из DirectX SDK. Такой хук аналогичный твоему я тоже делал, только на Дельфи. Но могу посоветовать кое-что для дальнейшего развития и исследований. 1) Посмотреть жизненный цикл пары программ из примеров из DirectX SDK. Таких моментов как потеря устройства, directX обработка ввода с клавиатуры и мышки, почитать какие события можно обработать, какие общие функции. Это может тебя заинтересовать и толкнуть на новые идеи, которые могут быть тебе будет интересны. 2) Попробовать написать свое приложение с ДаректИКС в котором обрабатывается directX ввод с клавиатуры или с мышки. Обычно это вереница кейсов в свитчах. Это тоже толкает на некоторые интересные идеи по поиску в играх в отладчике нужного участка кода по вводу от польозвателя 3) Если никогда не делал игровые сцены, то очень полезно на игровом движке посмотреть примеры игр. Советую Unity3D и пример AngryBots который идёт в комплекте. Обратить внимание на управление персонажем, управление камерой, на построение иерархии игровых объектов. Но а также советую пример сцены 3D - шутера: Пусть там язык C#, но зато понятно как работать с материалами, анимацией и др. На других примерах можно узнать что такое и как работать с шейдерами и системами частиц. Очень познавательно. Но а затем набравшись практики можно делать серьёзные читы похожие чем-то ближе к модам.