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

MasterGH

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

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

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

    129

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

  1. Отличная статья. Кое-что нашим пользователям. 1. Полезно и всегда проще сканировать память, когда игра находится в оконном режиме. Тем более если выполнять пошаговую отладку. На нашем форуме написаны статьи как ставить оконный режим. Я в olly нопил все вызовы LONG ChangeDisplaySettings( LPDEVMODE lpDevMode, // графический режим DWORD dwflags // параметры графического режима ); Затем я сохранял исполняемый файл и получал оконный режим, размер которого задаёте в настройках. Не рассчитывайте что начиная с Vista (Windows 7) всегда можно сделать оконный режим. Пример тому игра Руссич 13 век. 2. Учитывая, недавнюю "новинку" - поиск адреса внедрения по проверочным байтам, а также не 100% cтабильность работы с код-кейвами, рекомендуется внедрять чит-код в выделенную память и пользоваться проверочными байтами, которые генерируются в 4 бете CE RUS. 3. Существует некоторые количество вариантов написания скриптов по внедрению тела чит-кода. Читайте статьи, изучайте скрипты на нашем форуме и на форуме Cheat Engine.
  2. Частые ошибки 1) Сначала создайте память под тело и напишите в ней код чит-кода, а затем пишите прыжок на адрес выделенной памяти 2) Сначала отмените прыжок, а затем уничтожайте выделенную память 3) Если у Вас codecave в уже существующей памяти, то сначала в codecave напишите код, а затем делайте на codecave прыжок 4) Будьте внимательны в расчёте количества нопов 5) Будьте внимательны с логикой кода, вы не должны вызывать крах игры Редкие и пакостные моменты при внедрении чит-кодов 1) При внедрении чит-кода нужно следить за регистром флагов. Если он потребуется при выходе из выделенной памяти,то условие не будет правильно выполняться. Выход - поставить pushfd перед сравнениями в выделенной памяти и поставить popfd при выходе из выделенной памяти. 2) Ещё очень важное редкое явление, когда на затёртые инструкции оригинального кода могут уже быть прыжки. Т.е. на инструкции где вы ставили nop-s могут быть прыжки. Будет крах игры если какое-то условие не выполниться по логике кода. 3) Этот касается "острых" моментов, таких где происходят манипуляции со стеком. Учитывайте что call кладёт в стек адрес для обратного вызова по ret. А это значит что сдвигаются смещения по esp внутри тела чит-кода и могут сдвинуться по ebp. У Xipho была статья об этом, точно не помню. Соответственно нужно обращать внимание ещё и когда вы вызываете ret и кладёте в стек что-то. 4) Данные помещаемые в регистры XMM должны быть кратны 16 байтам! Иначе могут быть глюки с изображением в игре. 5) Если у Вас неправильно работает скрипт и игра тут же закрывается с критической ошибкой, то у вас есть все инструменты (отладчики) чтобы проверить логику и ошибку. Поставьте игру в конный режим (или сделайте его по нашим статьям) и проведите пошаговую отладку. Не знаете как это сделать, то задайте вопрос на форуме.
  3. Можно перейти в отладчик по инструкции и нажать комбинацию: ctrl+M. Либо печатаешь вручную, либо дальше добавляешь адрес инструкции из отладчика в таблицу CE и дважды кликаешь по нему, появится окошко из которого можно скопировать в буфер "Process.exe+XXX". Пока других способов нет.
  4. Если у вас есть предложения, замечания касающихся всех выложенных трейнеров в форуме "Трейнеры". Такие как офорление, выбор хостинга, техническая сторона, некоторые предложения, предложения по правилам оформления и т.п. - всё на что могут обратить внимание все авторы трейнеров, то можно написать об этом здесь.
  5. CE таким правилом медленно сканирует float значения (если ты им пользовался). Я использую MHS, когда уверен, что нужно искать float или Artmoney, когда уверен, что нужно искать как 1,4 байта целое так и float все вместе взятые. Ещё есть вариант, найти например патроны и в этом блоке или даже в ближайших регионах памяти поискать правилом, которое ты написал. Ну, ещё вариант может Кваз подскажет, наверно, он нашёл )
  6. Я покажу пример скрипта с проверочными байтами для версии CE 5.6. /* ManHant 2 Чит: на здоровье MasterGH (c) 10.02.10*/ AOBSCAN(_adhealth,d8xxxxxxdfxxf6xxxx0fxxxxxxxxxx8bxxe8xxxxxxxx8bxxe8xxxxxxxxd9xxd8) [ENABLE] alloc(newmem,2048) label(_originalcode) label(_returnhere) newmem: mov [ebp+7c],(float)125 _originalcode: fld dword ptr [ebp+7c] push esi fstp dword ptr [esp+10] jmp _returnhere _adhealth-8: jmp newmem nop nop nop _returnhere: [DISABLE] _adhealth-8: fld dword ptr [ebp+7c] // инструкция тип А - работает со здоровьем push esi fstp dword ptr [esp+10] dealloc(newmem) Информация по проверочным байтам. Уникальность того или иного отпечатка байт должна быть особенной. Т.е. должен быть подобран такой отпечаток байт, который будет работать с разными версиями игры. Мной было обнаружено, что нельзя брать за отпечаток байт выделенных элементов инструкций. CALL 4565455 (байт-код call брать можно, а вот байты адреса брать нельзя) MOV [4565455] (байт-код mov брать можно, а вот байты адреса брать нельзя) jmp 4565455 je short 4565455 И другие подобные инструкции со статическими адресами. Если соблюдать эти критерии, то трейнер должен работать с любым NoDVD или даже с локализацией игры. А также с «легкими» патчами для игры. Т.е. узнаваемость кода остаётся высокой. Теперь коснемся так называем «жестких патчей» разработчиков. Мной было установлено, что разработчики в новых патчах могут менять элементы в структурах касающихся иерархии игровых объектов, добавлять или удалять их, или ставить иную оптимизацию при компиляции. В результате чего нельзя брать выделенные элементы. MOV [ebx + 46] (байт-код mov брать можно, а вот байты смещения брать нельзя, они могут отличаться) LEA [ebx + 46] (байт-код LEA брать можно, а вот байты смещения брать нельзя) JMP [ecx+45] СMP [ecx+45] RET 0C // не проверенное предположение Во всяком случае, надо полагаться на то что бы оставлять те байты, по которым выполняется уникальный алгоритм во всём адресном пространстве.
  7. Я уже подумал, что у тебя новый двиг Ну если моя помощь была существенной, то можно сказать совместный двиг, где моего там наверно процентов 10 ) Моей массы там где-то килобайт 280 в сжатом виде. ... Лив, попробуй найти исходники и разобраться сам. А если не понятно, то выкладывай исходник и комментируй строчки, которые затруднительны. Я постараюсь объяснить что к чему. Уж извини, сам искать я не буду.
  8. У alexweiye трейнер похож на КелСетовский (как я понял оба автора знают друг друга и переписываются =) ). Может быть alexweiye напишет, как он сделал музыку в своём трейнере для Call of Duty Modern Warfare 2
  9. Ты такой вывод сделал (предположил) прогнав xlive в IDA ? Вполне могут быть так называемые инлайн вставки, которые очень удобно можно реализовать в С++, которые не являются отдельными функциями возвращающие значение о том что "в порядке или не в порядке". Т.е. если в void функцию напичканы эти вставки, тогда твой метод не точен. В этом случае конечно тоже есть решения.
  10. Если я что-то сделаю или узнаю по поводу xlive, то отпишусь.
  11. По поводу OllyDbg, чтобы побыстрее научиться в ней "ползать", всегда обращай внимание на входные параметры перед call-ми, а также на выходные параметры после call. Если какие-то вызовы не понятны, то поднимайся вверх из функции и изучай уже этот уровень входных и выходных параметров... Так ты научишься понимать в какой вызов лезть, а в какой нет например при пошаговом выполнении. Ну и так далее. У меня бывало что я лазил на 6-8 call "вглубь" и "внаружу" чтобы найти что-то Либо развилку кода, либо работу с какими-то данными, либо структуру и т.д.
  12. Для тех кому интересно, нам требуется: 1. Логитип - минимум простой внешне (меньше цветов, не мрачные, с присутствием идеи геймхакинга, которая как-то узнаётся) 2. Банер, возможен на основе логотипа. Размер банера и логотипа не более 350 x 100 пикселей и не очень маленький. Остановимся на конкретном размере 350 x 100 пикселей. Если будет классный вариант, то заменим лого со шприцом +) Но это мы скорее всего решим голосованием. Сейчас есть пока только один вариант - "шприц, делающий инъекцию кода в процесс игры"
  13. Кто хочет, может предложить свои картинки. Если они подойдут, то поставим.
  14. Ну если так, то конечно можно попробовать прикрутить это дело к трейнеру. Одно плохо, что не известно будет ли это дело работать с разными версиями xlive.
  15. А инструкция есть как XliveProtectDisabler.asi пользоваться? PS Для тех кто не в танке (сталкивался с пакерами), мне кажется, что Александр Блейд либо напрямую связан Artmoney как её разработчик, либо косвенно (использовал один и тот же пакер). Потому что и Артмани и XliveProtectDisabler.asi запакованы похоже одним и тем же странным пакером и похожим на обфускатор Аспака.
  16. Протитип русской версии 5.6 - главное окно. ..без комментариев - остальное всё под секретом
  17. Пока точного решения нет... Эта штука помотала мои нервы в игре Reziden Evil 5. В защите так же есть букет антиотладочных методов, с которыми у меня не было времени разбираться. В какой-то версии xlive я использовал этот скрипт (сделанный WhiteHat с форума MHS) [ENABLE] xlive.dll+14747C:>00007BFB1510F4C96A505B5F5DC20C00YYxxxxxxxx5151F605844AAF010175 db C3 90 xlive.dll+1439C1:>4DFC5F5E33CD5BE8CAEC4800C9C20C00YYxxxxxxxx81ECD8060000A1C08CAF db C2 08 00 xlive.dll+45EE9D:>C00000008B11508B4224FFD033C05FC3YYxxxxxxxx81EC28030000A3F05CAF db C3 90 [DISABLE] xlive.dll+14747C:>00007BFB1510F4C96A505B5F5DC20C00YYxxxxxxxx5151F605844AAF010175 db 8B FF xlive.dll+1439C1:>4DFC5F5E33CD5BE8CAEC4800C9C20C00YYxxxxxxxx81ECD8060000A1C08CAF db 8B FF 55 xlive.dll+45EE9D:>C00000008B11508B4224FFD033C05FC3YYxxxxxxxx81EC28030000A3F05CAF db 8b ff Проверочные байты нужно поправить, т.к. они могут не совпадать (будет время в субботу или пятницу, то я постараюсь грохнуть этот xlive на Rezident Evil ). Данный скрипт вызывает сразу или через некоторое время "мессагу исключения" при подключении отладчика или изменении памяти игры. Если мессагу не закрывать, то можно исследовать код и играть дальше. Если этот скрипт не использовать, то игра будет "молча" закрываться.
  18. Задали мне такой вопрос, про то как работают активирующие скрипты. Разберём пример.
  19. В общем скачал исходники, настроил проекты как надо. CE компилируется, трейнер компилируется с картинкой в 1 метр, глюков с иконами нет. В общем всё работает. Одного модуля ManualModuleLoader не хватает, он нужен по работе с плагинами, так что пришлось вырезать около пяти обращений к этому модулю. Но если что, то я потом добавлю. Сейчас я продумываю дизайн, расположения окон и т.п. Все функциональности я оставлю, только я их переведу и отсортирую удобным образом. В предыдущих версиях CE я некоторые функции вырезал, но теперь этого делать не буду. Версия CE 5.6 Rus 1.0 будет без модернизации. Будет только изменён дизайн и сделан перевод =)
  20. Ах, да забыл ещё кое-что. В версии CE 5,6 можно грузить картинки в генерируемые трейнеры "формата .jpg", что уменьшит размер трейнера.
  21. Да, я знаю про этот баг с иконкой. Это не столько моя вина, сколько отсутствие описания о том, как настраивать компилируемые проекты. На то чтобы с иконкой разобраться у меня не хватило нервов. А размер генерируемого терейнера увеличился, когда я либо подправил криво макросы видимости, либо когда дописывал куски кода, чтобы можно было идентифицировать активирующие скрипты, которые всегда активируются первыми и один раз. Откопал исходники сходники CE 5.6, сейчас качну и гляну рабочие ли они.
  22. Можно. Сохраняешь как "имя файла.CT" и будет сохранён файл с табличными данными.
  23. Ну наконец она вышла официально (правда уже несколько дней прошло) Вышла версия CE 5.6 Поведую я вам с моих слов о том какие более существенные обновления появились в этой версии. - Существенно увеличина скорость и эффективность поиска указателей. - Теперь можно указывать смещения относительно начала структур при поиске цепочки указателей. - В автоассемблере теперь есть область действия за пределами [enable] и [disable] - Поддержка 64-разрядных игр, добавлена расшифровка регистров xmm - В расструктуризации данных теперь можно найти указатели ссылающиеся на строки, а также все сами эти строки. Полезная штука если бы дизассемблер был похож на IDA, а так это может послужить лишь разведкой. Например найти какие-нибудь читы по их названиям, или найти обращение к здоровью по строке health... - В автоассемблер добавлены две команды: aobscan(varname, arrayofbyte),"assert(address, arrayofbyte)" - В первом случе будет каждый раз сканирование проверочных байт по адресам. Найденных адерс будет в объявленной метке varname. Во втором случе будет просто проверка находятся ли по некоторому адресу некоторые байты, если не находятся, то скрипт не выполнится. Честно говоря, сложно представить чем может пригодится assert(address, arrayofbyte) на практике. Возможны условия типа, если в игре не произошло то-то, то не активировать скрипт под Enable или под Disable. - Расструктуризация данных теперь возможна повторно при этом можно увеличить/уменьшить размер структуры. Также статические адреса стали зелеными. - Во время отладки можно следить за тем что творится в стеке. Отображение стека также имеет ряд настроеке. Для тех кто не знает, стек начинается с текующего значения esp. И если по стеку выувидите параметры например адрес34: текущее значение здоровье адрес44: максимальное значение здоровья То вы можете всегда обращаться к этим адресам от текущего esp или даже от ebp. Посмотрие в OllyDbg на стек и регистры esp и ebp при пошаговой отладке и вы всё поймете. - В папке с CE 5.6 есть "commonmodulelist.txt", в него входят модули, которые обычно используют игры. Память этих модулей сканироваться не будет. Вы можете добавить не нужные модули. - В папке "example scripts" появились примеры скриптов, которые помогут научиться пользоваться Script Engine на C-подобном языке. - Существенно расширена работа с плагинами, а также расписана справочная информация по работе с ними. - Добавлена поддержка в автоассемблере (float)#, (double)#, (int)#, (double), а также новая метка DQ. Примеры: mov eax,#100 //тоже самое, что (int)100 mov eax,#100.1 //тоже самое, что (float)100.1. А (double)100.1 написать можно только под меткой (Т.к. в 32-разрядных приложения нет 8-ми байтных регистров) dq (double)100.1 Другие прмеры: dd (int)100 dd (float)100.1 Надеюсь вы не забыли, что есть также db, dw, dd =) - В дизассемблере появилась функциональность Watch Memory Allocation. По введеному адресу покажет начало кучи. Толку особого и нету +) - Также исправлены всякие баги. Более подробно вы можете прочитать на сайте Дарк Байта. Пока исходников CE 5.6 нет, поэтому и русской версии нет Как мне сказали однажды: "Нет резюме, значит и работы нет"
  24. Короче тебе в любом случае надо подменить номер слота / указатель на слот по которому будет "удаление" навыка. Это будет не просто и я мало верю в то, что не забьёшь на это дело. 3.8 гб это тоже много. Если хочешь попробуй свой репак сделать. Повырезай всё что можно чтобы игра работала. Если не больше гига получится, то я скачаю. Залить можешь куда есть желание. Мне удобнее с letititbit скачивать, правда там проблема с докачкой при обрыве связи. Также очень желательно сделать несколько скриншотов с описанием действий, что нужно сделать чтобы "выучить навык", а так же сделать сев-файлы, а то я с прошлым масс эфектом запарился изучать игровой процесс, слушать эту обучающую хренотень.
  25. С волшебным пендалем, ты перегнул палку Самое ключевое место я вижу следующее - компьютер сам выбирает какое умение забыть. Логика следующая. Если игра выбирает какой навык нужно забыть, то подмени выбранное значение своим, если это опыт твоего ГГ (главного героя). Я представляю слоты такими. 1 2 3 4 - слоты А Б В Г - умения Возможно, есть некоторая функция. 1. Прочитать количество навыков. 2. Сгенерировать случайно число навыка который будет удалён 3. Удалить навык... 4. Создать новый навык в освободившемся месте. Находим адрес количества навыков. Берём такой страшный инструмент как OllyDbg и работаем в нём. Ставим на адрес количества навыков бряк на доступ перед тем как будет автоматически забываться какой-то навык. И внимательно идём по коду (клавиши F7,F8)смотрим как происходит работа со значением количества навыков. Оно должно идти в генератор типа call-а и возвращаться должно сгенерированное значение, которые ты подменяешь на тот слот навык в котором по твоему желанию должен забыться. Я бы с удовольствием бы помог решить эту задачу, но эту игрушку скачивать я запарюсь.
×
×
  • Создать...

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

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