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

MasterGH

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

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

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

    129

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

  1. Размер трейнера изменить нельзя. Я рекоммендую писать трейнеры на LUA с привязкой к Cheat Engine. Этот способ пока самый "выгодный" по соотношению "потенциальных возможностей трейнера" к "его размеру". Важно чтобы был автоассемблер, ассемблер, дизассемблер, отладчик, сканер памяти, загрузчик dll-ок. Писать эти фичи в каждом отдельном трейнере это "маразм на 3 МБ". Поэтому новый приём "трейнеры через скрипты таская за собой CE" надо принять как должное и правильное лучшее решение. Другое решение это писать свой движок для трейнеров с урезанным необходимым и достаточным функционалом. Для этого надо неплохо знать программирование, иметь много свободного времени...
  2. "Раскодировку" можно сделать применив xor повторно. A xor B = C Раскодировка: B = A xor C // если известны А и С A = B xor C // если известны В и С Потренироваться можно на Windows калькуляторе в инженерном режиме.
  3. У нас нет информации по тому как сделать этот чит. На короткие вопросы отвечать длинными объяснениями никто не любит, если конечно кого-то не заинтересует эта тема - "Чит на снятие отдачи от выстрела". Это был бы неплохой чит который позволил бы стрелять много раз без дёрганья прицела. Если у Вас появятся идеи как его сделать или конкретные вопросы, то я возможно я что-то подскажу... Ищите адреса в памяти координат курсора(т.е. прицела), ищите в отладке "причины" почему он дёргается. Сделайте инъекцию кода скриптами CE (после даже можно сгенерировать трейнер).
  4. Что-то скрипты странные. Зачем писать нопы под newmen ?
  5. Следовало бы версию указывать с самого начала
  6. ZOCKIR, возможно прав. Я уже точно не помню, но то что я не мог найти на CE 5.6, я нашёл MHS. Я имею ввиду поиск float. По поводу новых версий CE ничего сказать не могу. Тогда в CE 5.6 я тестил и ставил различные настройки округления float числа, различные типы поисков. Были проверены мной характеристики сканирумой памяти. Почему-то CE никак не находил адреса в районе десятых долей. MHS этот делал эффективно. В нём можно было сделать делать даже сразу три отсева за раз (в принципе в CE тоже) 1) Ищем float "от 0,0 до 1000000,0" идём в игру и уменьшаем 2) Отсеиваем "уменьшилось", отсеиваем "от 0,0 до 1000000,0", отсеиваем "не изменилось"; идём в игру ставим предыдущее значение 3) Отсеиваем увеличилось,, отсеиваем "от 0,0 до 1000000,0" отсеиваем адреса значения которых равны при первом сканировании, НУ и так далее... так можно быстро найти, если нет обратной пропорциональности, иного алгоритма, иных типов данных или шифорования. Как я уже писал где-то, если поиск слишком нудный, то надо искать значение текста. Я это почему-то делаю в Артмани (уже не помню почему). Если адрес найдётся, то уже лезем в отладчик OllyDbg, ищем адрес в памяти, ставм бряк на запись и находим код который и исследуем, и понимаем в чем "секрет"
  7. Все эти иструкции и работают с адресом патронов героя. На кажодй инструкции в CE можно поставить режим определения проскакивающих адресов. Если их будет больше одного, значит инструкция работает с патрноами других игроков. Может так получится что нет инструкции которая работала бы только с одним адресом и это не нонсес. В этом случае нужны дополнительные исследования направления которых зависит уже от игры. Меня бы например заинтересовала бы эта инструкция 0058cf28 - 8b 04 b1 - mov eax,[ecx+esi*4] Тут видно, что здесь обращение возможно по циклу через каждые 4 байта от какой-то начальной позиции по ecx. Если начать исследования с этой инструкции, то возможно быстрее получится решить задачу создания чита бесконечных патронов только для своего игрока.
  8. А ты можешь сформулировать что для тебя означает "правильная инструкция"? Ищи "правильную" инструкцию отличая их от "не правильных". Если все инструкции "неправильные", то ищи правильные инструкции срабатывающие на адресе указателе по цепочки указателей.
  9. "Cкомпилировать" мне помогла вроде та программа название которой указано в статье. Только не каждая флешка *.sfw может быть преобразована в *.exe. В случае обсуждаемой игры это получилось.
  10. По поводу этих инструментов я не в курсе. Но зато можно изменить HEX редактором байты на которые нужно. Вручную это делать гемор )
  11. Иногда разработчики встраивают читы в свою игру, но об этих читах нигде нет информации или её сложно найти. Я покажу вам метод, который я использовал год назад (и статью я эту писал год назад). Статью форматировать некогда, так что сделал всё быстро - одним скриншотом. (Извиняюсь за опечатки: в статье могут быть опечатки например "1) Вытаскиваем игру из swf файлом." здесь предлог "из" надо заменить словом "как") Не знаю почему, но в статье я не указал ещё пару стрелок "влево и вправо" во втором столбике таблицы. Таким образом надо сделать следующее: Поставить игру на пазу выйдя в меню: (удерживать shift) вверх вверх вниз вниз влево вправо влево вправо (одновременно нажать и отпустить A и (отпустить shift) (нажать и отпустить shift) В аттаче сама игра скомпилированная мной во флеш плеер *.exe для исследования адреса денег в отладчике... Зачем я в конце статьи привел пример ява-скрипта я без понятия - уже не помню. Он роли ни какой не играет. Duels Defense.rar
  12. Тема. Часть2. Функция генерирующая автоассемблерный скрипт. CE 6.1. Создайте AAgen.lua: (добавить в директорию со скриптами CE)
  13. Можно. Пример. [ENABLE] aobscan(_faddress,d9xxxxxxxxxxxxd9xxd8xxdfxxf6xxxx75xxddxxebxxf6xxxx7axxd8) alloc(_newmem,2048) label(_returnhere) label(_originalcode) label(_address) _newmem: mov dword ptr [esi+00000ca4],3F800000 _originalcode: fld dword ptr [esi+00000ca4] jmp _returnhere _address: _faddress: // 00ADFCFD = GameDLL_x86.dll+50FCFD jmp _newmem nop _returnhere: [DISABLE] _address: fld dword ptr [esi+00000ca4] dealloc(_newmem) Тема. Можно и на LUA engine искать "отпечаток байт" при этом можно указать какой адрес брать из найденных (например второй из двух найденных), также можно указать опции защиты памяти. Возможно, будет что-то не понятно. Просто надо потратить время на поиск примеров (возможно на форуме CE).
  14. Тема. Часть1. Функция генерирующая автоассемблерный скрипт. CE 6.1 Я не раз уже писал у себя в блоге во Флудильне, что существует возможность генерировать скрипты автоассемблера или АА скрипты с помощью LUA при минимальных начальных данных. Я предлагал это сделать по разметке XML. Но пока до неё ещё рановато и я решил сделать простую функцию которой бы требовалось пока самых простых данных: 1) названия скрипта, 2) адрес инъекции 3) отладочный код инъекции 4) булевая переменная (да или нет) означающая генерировать ли разметку оригинального кода, т.к. бывают случаи когда оригинальный код не требуется.
  15. Тема. Как подключиться к процессу при загрузке скриптов (CE 6.1) Когда Вы дважды кликаете по файлу Cheat Engine "имя файла.ct", то там может быть встроен LUA скрит, который сразу может выполнится. Выполниться он или нет это зависит от настроек CE. В скрипте LUA вы можете создать форму трейнера и скрыть CE. Но скрывать CE и создавать форму трейнера мы не будем. Напишем LUA скрипт который автоматически будет искать процесс по его имени. processName = "Test.exe" aalist = getAutoAttachList() stringlist_add(aalist,processName); attach = false function onOpenProcess(processid) if (attach) then return end attach = true openProcess(processid) -- ваш код end onOpenProcess() это функция обработки события, которая будет вызываться при открытии процесса. attach - это переменная, от которой зависит открывать ли процесс второй раз. Пришлось именно так написать, потому что onOpenProcess срабатывает не один раз. Подробнее почему так происходит сейчас написать не могу. После того как этот код выполнится можно включить читы в главной таблицы Cheat Engine. Ну или активировать опции Вашего LUA трейнера.
  16. Xipho, тут такая проблема в отсутствии возможности публикации видео в swf формате. Есть видео файл в swf формате на ~3мб. При чем таких файлов два. Все касаются по обучению CE. Формат очень компактный и удобный. Можно даже с голосом вести запись. Мое видео "Создание трейнера на CE" Видео ZOCIR "Взлом денег Mafia 2" Невозможно их разместить не в админке сайта, ни прикрепить к сообщениям форума, т.к. ограничение 2мб на один файл. Ну и нет разметки для плагина swf. Было бы здорово, если можно было бы запускать плагин через разметку на сайте и форуме... Если поможет, то разметка с чемакса из моей статьи: <p align="center"> <OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" WIDTH="644" HEIGHT="415" id="Projekt"> <PARAM NAME=movie VALUE="Projekt.swf"> <PARAM NAME=quality VALUE=best> <PARAM NAME=bgcolor VALUE=#FFFFFF> <EMBED src="Projekt.swf" quality=best bgcolor=#FFFFFF WIDTH="644" HEIGHT="415" NAME="Projekt" ALIGN="" TYPE="application/x-shockwave-flash" PLUGINSPAGE="http://www.macromedia.com/go/getflashplayer"></EMBED> </OBJECT> </p>
  17. 28 апреля вышла 2 Бета версия CE 6.1 (ссылка) Русский плагин от SER[G]ANT (ссылка) Немного обидно, что Дарк Байт запихнул файл перевода в какую-то клоаку "temp". Просто это, скорее всего, временно. Если какие-то ошибки в русском переводе, то SER[G]ANT-а можно найти на нашем форуме.
  18. Мелкое изменение. Сброшен счётчик рекорда посещений форума, который до этого был установлен искусственно одним из Гостей в отметку 86. Теперь можно видеть естественные отметки рекордов. По крайне мере убран резкий порог до 86...
  19. По идее должно так работать, если учесть кол-во нопов. Про то как ставить нопы читайте информацию на форуме. [ENABLE] alloc(newmem,2048) label(returnhere) label(originalcode) newmem: xor ecx,ecx originalcode: sub [eax],ecx // из адреса [eax] вычитается ecx. ECX будет всегда равен нулю. Следовательно значение по адресу [eax] никогда не изменится jmp returnhere 005B9466: jmp newmem // тут надо разобраться с количеством nop-ов returnhere: [DISABLE] 005B9466: sub [eax],ecx mov edx,[esi+4c] dealloc(newmem)
  20. В Вашем скрипте под newmem нужно было написать типа этого: mov bx, 100 1) Проверьте подключаете ли Вы процесс с игрой через значок компьютера. 2) Проверьте в дизассемблере, что перед активацией скрипта по адресу 0075C129 расположен оригинальный код sub [esi+edi*2+3c],bx А вот тут поподробнее со скриншотами. Потому что мне не понятно " каким образом могли получиться нули в auto assemble code injection"
  21. Брейкпоинт "не может где-то находится". Брейкпоинт ставят на адрес. Затем открывается окно прервавшихся инструкций. Т.е. в этом окне будут отображаться инструкции которые работают с адресом.
  22. Я уже давал эти ссылки Про создание трейнера с вставкой скрипта автоассемблера (видео) Про автоассемблер (читать для дальнейших экспериментов) Там написано и про то как сделать трейнер, куда вставлять скрипты и как писать скрипты в автоассемблере. Если у Вас есть конкретные вопросы, то надо задавать конкретные вопросы что и где не понятно... желательно со скриншотами. Напомню, что если читы делаются для себя, то можно обойтись только скриптами. Если нужно делать трейнер, то лучше скачать версию CE 5.6 сайта Cheat Engine. Если нужна русская модернизированная версия, то скачать её с нашего главного сайта и установить поверх английской.
  23. Спасибо за интересное исследование Добавил +1 к посту выше. P.S. Просто напоминаю. Повторюсь о том что писал в личном сообщении. Если картинки с хостинга пропадут, то эту статью сложно будет понять. Картинки на хостинге вряд ли хранятся неограниченный срок. Дело конечно твоё и решать тебе
  24. хм... интересно. Далее считаю объект - объектом, а структуру структурой (не объекта). Объект - экземпляр класса. Пусть у рассматриваемого объекта нет таблиц виртуальных функций и нет таблиц виртуальных классов. Нет метаданных подсказывающих про классы и т.п. Если дизассемблерный код функции работает с указателем на ecx это ещё не значит, что ecx указатель на объект (но я не уверен, хотя всем известно что компилятор C++ по ecx передаёт указатель на объект). Если у объекта есть конструктор, то и у структуры данных может быть своя функция похожая на конструктор... По поводу "boost" я к не в курсе что это за зверь. Программист мог хорошо взяться за оптимизацию и отказаться где-то от ООП заменив объект простыми структурами. Интересно узнать следующее. 1) Как будет передаваться указатель на объект в функцию член в дизассемблере. 2) Как будет передаваться указатель на обычную структуру в функцию не принадлежащую никакому классу. 3) Будут ли какие-то отличия Я бы и сам бы проверил написав тестируемый код. Да вот интересно, кто как думает, а то обычно по таким вещам (связанные с ООП и дизассемблированием) только мне одному доводится заморачиваться.
×
×
  • Создать...

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

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