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

MasterGH

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

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

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

    129

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

  1. Ладно пока сайт не нужен. Если у нас будут какие-то качественно работающие программы написанные нами (или мной) в области геймхака, то будем думать нужен сайт или нет
  2. Добавил... "Терминология" в таком виде уехала в тему "Курс для новичков" и будет обновлена, если будут изменения
  3. Я думаю, ты делал всё правильно, наверно, просто есть какие-то ошибки в коде CE. В CE предусмотрено открывать таблицы артмани, попробуй открыть английской версией CE, если не пробовал. О багах русской версии. 1) В версии CE RUS 1.2.0 трейнер сделать почему-то нельзя. 2) Почему-то CE автоматически сохраняет таблицы с названиями без расширения .CT. Например у меня в папке лежит "spider.CT" и просто "spider". Если вас беспокоит этот "мусор", то вы можете его удалить. 3) В русской версии до 1.2.0 замечено, что генерируемые ей трейнеры прибавили в весе чуть ли не 6 мб. Мною было решено, дождаться выхода версии 5.6 и модернизировать уже только её. А версию CE 5.5 RUS 1.2.0 можно считать больше не обновляемой. Следующая версия будет CE 5.6 RUS.
  4. Если ты про сайт там где русская версия CE, то я думаю лучше его не привязывать к данному форуму. Потому что там сайт просто как этикета Cheat Engine RUS. А сайта у нас нет ) Потому что у нас форум как сайт )) Кстати у меня была идея сделать программу подобную ЧеМаксу как ТрейнерМакс на основе базы таблиц cheat engine. Можно было бы выбрать также игру, видеть описание, горячие клавиши и более того редактировать скрипты с перепаковкой базы скриптов. Тогда можно было бы делать сайт с лентой новостей об обновлении программы. Надеюсь Xipho черкнёт тут свои мысли по этому поводу. Ведь у меня уже есть заготовки и реализовать за два дня я думаю смогу это.
  5. Данная проблема произошла по моей вине в русской CE версии ниже 1.0.0 (а может и более ранняя версия, т.е. та, которая ниже 1.0.0) Решение такое: 1) Сохранить нужные файлы, например, таблицы. 2) Корректно удалить CE инсталлятором (вроде такой должен быть, если я не ошибаюсь) 3) Установить инсталлятором англискую CE 4) Скопировать в директорию программы, главный файл CE RUS ни ниже 1.0.0. ,если нужно пользоваться русской версией. Проблема из-за того, что в реестре остаются не верные данные от CE RUS после её закрытия, после чего могут быть проблемы с английской версией, которая также напортачит в реестре. Затем ни одна версия не откроется. Увы, моя вина... но сейчас такого быть не должно.
  6. Здесь можно задавать общие вопросы по Cheat Engine в том числе и русской. Если ваш вопрос заслуживает особого внимания, то вы можете создать отдельную тему. Старайтесь задавать вопросы, которые больше относятся к специфике Cheat Engine, а не по играм которые ей можно обмануть. К этим вопросам можно отнести применение той или иной функции, общие настройки Cheat Engine, настройки отдельных функций, ошибки и т.д. Вопрос должен быть привязан к специфике cheat engine, а уже в последнюю очередь к игре. В противном случае лучше задать вопрос в форуме по взлому игр.
  7. Да не за что, я уже кстати кое что подредактировал и похоже буду ещё редактировать и редактировать. Также жду мнение Xipho, может он добавит какие-нибудь "термины"
  8. На общее обсуждение предлагаю внести классификацию некоторых терминов в геймхакинге. А также предлагаю пользоваться некоторыми новыми терминами, касающихся типов инструкций, а также дополнить или изменить классификацию. [sp=Скрыто]Опкод (Operation Code) - часть инструкции, равная одному байту Ноп (Nop - Noop) - опкод "пустой", ничего не делающей инструкции. Используется для выравнивания оригинальных инструкций при создании Code Cave. Нопить - забивать какую-либо инструкцию нопами (nop). Типы данных - прежде всего тип данных обусловлен размером количества единиц информации битов или байтов. Затем процессор может их воспринимать как знаковое число, целое число, вещественное число или как текст. Проверочные байты - байты, которые не меняются при разных обновлениях и патчах игры. Помогают найти определить адрес внедрения, если он был смещен. Статический адрес - адрес в памяти, который не меняет своего положения в памяти игры. Виден как зелёный адрес в Cheat Engine и MHS. Находится в регионах памяти с типом Image. Динамический адрес - адрес в памяти, который меняет своё положение в памяти игры после некоторого события. Цепочка указателей - указатель на указатель больше чем одного уровня. Представление цепочки указателей обозначается фигурными скобками. Пример f[[game.exe+0x6454]+5*54h]. Более подробно в справке MHS. Структура - структура это набор данных. Главные параметры структуры: есть начало и конец, соответственно размер. В структурах могут быть данные как одного типа так и разных. Расструктуризация - раскрытие характеристик определённых структур данных при которой становится известно, на каком смещении от начала структуры какие данные находятся. Например, здоровье находится на смещении +0x48, от начала структуры или начала структуры объекта. Объект (игровой объект) - объект можно воспринимать буквально как явление, предмет, на к-рый направлена чья-н. деятельность, чье-н. внимание (книжн.) . Объект в программировании или при обмане игр, когда речь идёт об инструкциях работающих с объектами стоит воспринимать как структуру данных в памяти, которая отражает поведение некоторой абстрактной сущности. Например, юнита в игре можно реализовать как объект на основе описания класса юнита. Объект наполняется данными по описанию класса, также к данным по смещениям от начала структуры объекта "привязываются" методы. Таким образом методы будут работать с некоторым объектом на основе описания класса. Класс - это описание данных и методов объекта. На описании класса реализуются объекты или один объект. Класс также является типом. Метод - это в ассемблерном представлении, это блок кода который работает только с определённым классом. Этот блок кода может вызывать от куда угодно, но он будет работать с данными класса к которому привязан. Массив данных - массив представляет однотипную структуру данных. Например, массив байт или массив некоторых объектов. Отладчик - обычно, включает в себя также дизассемблер. Позволяет ставить брекпоинты, снимать показания регистров изменять регистры и т.п. Брейкпоинты - точки остановки программы. Можно поставить на адрес на чтение и запись. Можно поставить на инструкцию. В результате остановки игрового процесса можно снять показания регистров. Брейкпоинты бывают также условные, которые выполняются при определённых условиях (см. правку по ollyDbg) Дизассемблер - позволяет перевести байт-код в ассемблерное представление. Ассемблер - язык программирования, самый близкий к машинному. Регистры - информацию по регистрам смотреть в Интернете или у нас на форуме. Своими словами это операнды, которыми оперирует процессор, выполняя те или иные инструкции. Инструкции - или ассемблерные инструкции, также смотреть в Интернете или у нас на форуме. Дизассемблированные инструкции отражают какую-то операцию происходящую в игре. С помощью программ CE, MHS можно изменять инструкции изменяя поведение игры и её игровых объектов. Часто обращаемая инструкция - инструкция которая срабатывает очень быстро. Определение адресов на инструкции - определение результирующих адресов с которыми происходит работа. Например, есть инструкция mov eax, [ecx*4 + 64]. В квадратных скобках может проскакивать множество адресов, которые можно определить средствами CE или OlltDbg. Классификация инструкций сработавших при брейкпоинте. -Тип А Данная инструкция работает с некоторым единственным параметром только определённого игрового объекта. Например, здоровье от структуры находится по смещению +155. Инструкция А, работает только с этой структурой, только со смещением +155. -Тип B Эта инструкция работает с параметрами двух и более объектов, параметры которых находятся по одинаковым смещениям. Например, у нас шесть объектов - игроков, у которых по смещениям +155 находится здоровье. Инструкция типа B получает указатель на начало некоторой структуры объекта игрока, прибавляет смещение +155 и работает с параметром (читает параметр из адреса или пишет в адрес). Таким образом, инструкция типа B может отнимать здоровье у героя, а также отнимать здоровье у врагов. -Тип С Данный тип инструкций может работать с данными находящимися не по одному (как при типах А и В), а по разным смещениям относительно одной или более структур. Стоит не путать тип А с С, т.к. инструкция А работает с одним смещением, тоже самое касается и B. Отсюда мы получаем подтипы: C(А) - работает с разными смещениями одной структуры (объекта); C( - работает с разными смещениями более одной структуры (объекта).[/sp]
  9. Вот нашёл информацию о CE 5.6 [sp=Скрыто]Cheat Engine 5.6 1 2 3 Changes: 4 Pointerscanner speed has been increased a lot 5 New Icon (thanks to Phox from the forum) 6 The pointerscanner can now scan for values 7 The pointerscanner now lets you specify an offset list that it has to end with. 8 Removed the injected pointerscanner 9 The auto assembler now supports code outside of [enable] and [disable] sections so it affects both 10 Resultcount is now comma seperator (thanks to infinito) 11 New kernelmode debugger 12 Added the ability to offload the current OS to dbvm (if your cpu supports it) 13 The driver is now 64-bit compatible. (You will have to sign it yourself, or reboot with unsigned driver support) 14 Rewrote the disassemblerview 15 Deleting addresses from a scanresult is now a bit faster 16 Changed the hotkey handler to be more controllable 17 New heaplist that works based on dll injection instead of toolhelp32 18 Dissectcode now helps finding referenced strings 19 Added a new Auto assembler command "aobscan(varname, arrayofbytestring)" 20 Dissect data now works with offsets instead of sizes 21 Added the ability to follow pointers easily with Dissect Data 22 There's now a stacktrace visible during debugging 23 The registerview is gone as long as you're not debugging 24 CE now suppresses the "No disk" message when the searchpath is invalid 25 Added a common modulelist to the ce folder that you can edit. Include files that you do NOT want to go through when doing memory inspection 26 You can now open another pointerscanner window while another pointerscan is running and read the results. 27 Added a string reference windows 28 Improved the plugin system with some extra disassembler commands and a command to load modules into memory 29 Added (float)#, (double)# and (int)# support to the assembler, (double) is mainly usable in combination with the new DQ command though 30 31 32 Fixes: 33 Fix mov [reg],reg disassembly when a 16-bit prefix is used 34 Fixed some floating point assembler instructions 35 Taborder fix for "Value between scan" (infinito) 36 Fixed the Auto assembler code injection template with regard to the "Alt:" line 37 Jmp FAR instruction not shown properly in the disassembler 38 Fixed disassembler instructions that had a rep/repe prefix while they shouldn't 39 Fixed xorps instruction 40 Fixed assembler where segment registers are used 41 Fixed rm32,imm16 notations getting dowsized to rm32,imm8 while they should go rm32,imm32 42 Fixed hang when setting the window on top and then doing a scan 43 Fixed FILD qword instruction 44 Fixed FNSTSW AX instruction 45 Fixed FCOM instruction 46 Fixed IMUL,0a instruction 47 Fixed broken alt-key when the disassemblerview is focused 48 Fixed the bug where removing a assigned hotkey to a cheat table didn't work 49 Fixed the floating point panel. It now actually shows the floating point values... 50 Fixed several bugs in the Dissect Data window 51 Several gui fixes for high dpi systems[/sp] Побыстрее бы она вышла в свет, заждался я Пора уже обманывать 64-х разрядные игры =)
  10. Может я и не внимательно читал описание по Gentee и посмотрел примеры программирования на нём, но меня он не порадовал - тот же самый C/C++ с некоторым другим "синтаксисом" в который вникать незачем. Это моё ИМХО
  11. MasterGH

    Проверочные байты

    Сравнение проверочных байт. Русская версия CE на нашем сайте умеет генерировать возможную сигнатуру байт. Красный – отличающиеся байты. Голубой – сомнительные, которые могут поменяться со следующим патчем. Жирный – подходящие для проверочных байт. Некоторые области я не правильно закрасил, но смыл не особо теряется. Лень переделывать. Некоторые выводы: 1. Этот участок кода не менялся разработчиками, его изменил компилятор, т.к. наблюдается строгая последовательность операторов. 2. Похожи первые байты главных операторов, различаются некоторые операнды, а некоторые операнды остаются под сомнением. 2. Могут меняться: размеры структур, некоторые регистры, операнды для push-ей, 3. Если push занимает один байт, то этот байт сомнительный и его не следует брать в цепочку проверочных байт. Итак цепочка проверочных байт будет равна: DisciplesIII.exe+2D13BA:>xxxxxxxx8Bxx3B91xxxxxxxx89xxxxxxYYxx8Bxx6Axx6Axx68xxxxxxxx68xx Буду тестировать эту цепочку на всех патчах, которые найду, позже сегодня выложу результат. Протестировано 4 версии игры. Все тесты успешны.
  12. Согласен с Xipho, что много поуков. Рационально оставить только pokeX и соответственно вызывать его. И переименовать лучше на просто poke.
  13. Ещё хочется добавить по поводу ToolHelp 32 API. В данном случае FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);мы создаём поиск процессов. А ещё существует поиск модулей. В тех случаях, когда нам нужно исправлять что-то в модулях. Также хочу напомнить, что есть класс TSystemInfo32 (вроде правильно написал), который может помочь в некоторых случаях. Например определить адресные границы .exe файла или модуля, найти директорию в которой находится исполняемый файл по дескриптору процесса и другие СПРАВОЧНИК ПО API функциями
  14. Я знаю, что это извращение, но есть игры написанные на .Net такие как Eufloria. Соответственно для игр на .Net должны быть .Net трейнеры, в том случае если нужно сделать трейнер платформанезависимым. Вот пример компиляции Окна приветствия без среды разработки на C- подобном языке. using System; using System.Windows.Forms; class HelloMessage { public static void Main() { MessageBox.Show("Hello..."); } } Создать bat - ник и запустить C:WINDOWSMicrosoft.NETFrameworkv3.5csc.exe /r:System.Windows.Forms.dll HelloMsg.cs Размер exe файла 3,50 КБ.Будет работать на всех ОС-мах поддерживающих .NET.
  15. Пока простейший пример (остальные примеры в этой теме) Некоторые тонкости. /MERGE:.data=.text /MERGE:.rdata=.text /ALIGN:32 /ALIGN:512 /ENTRY:main /ENTRY:WinMain /NODEFAULTLIB msvcrt.lib #include <windows.h> #pragma comment(linker, "/NODEFAULTLIB /MERGE:.data=.text /MERGE:.rdata=.text /ALIGN:512 /ENTRY:WinMain") int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int) { MessageBox(0, "Hello, World!", "Tiny application", MB_ICONINFORMATION); return 0; } 00400230 >/$ 55 PUSH EBP 00400231 |. 8BEC MOV EBP,ESP 00400233 |. 6A 40 PUSH 40 ; /Style = MB_OK|MB_ICONASTERISK|MB_APPLMODAL 00400235 |. 68 08024000 PUSH tiny.00400208 ; |Title = "Tiny application" 0040023A |. 68 1C024000 PUSH tiny.0040021C ; |Text = "Hello, World!" 0040023F |. 6A 00 PUSH 0 ; |hOwner = NULL 00400241 |. FF15 00024000 CALL DWORD PTR DS:[<&USER32.MessageBoxA>> ; \MessageBoxA 00400247 |. 33C0 XOR EAX,EAX 00400249 |. 5D POP EBP 0040024A \. C2 1000 RETN 10 /ALIGN:16 /DRIVER
  16. Меня можно лишь обвинить в мусоре в коде. Мой Дельфинский компилятор не используемые модули не учитывает, т.е. Forms.pas не учитывал. Так что у меня было 16 Кб. Спасибо, что почистил )
  17. Да, убрать эти модули забыл Всё должно работать без них.
  18. Пример использования MHS скрипта при заморозке Объявляем пару переменных через extern. Может можно и без extern я ещё не проверял. Далее по смещению от адреса (на котором делаем скрипт) берём другой адрес. Затем значении другого адреса пишем в первоначальные. Всё просто. Не забываем включить галочку. ЕСЛИ объявляем адреса переменные через extern, то они будут работать с адресам в процессе.
  19. В этой теме можно выразить благодарность некоторому человеку или людям за определенную деятельность на форуме. Особенные благодарности будут перенесены в этот пост. Возможно, в будущем администрация внесёт рейтинг, звания и награду - медали. Возможно, с моей стороны будут созданы закрытые материалы, к которым будут доступны только избранные набравшие определённый рейтинг. Особая благодарность выражается людям за их деятельность. Xipho Xipho, является главным основателем форума и проекта gamehacking[RU]. У него родилась идея создать форум, которую он и воплотил в реальность. Он же создал форум, он же проделывает работы по настройке форума и его улучшению. С его стороны сделан большой труд, а также он продолжает работать над форумом. Xipho выражается особенная благодарность за создание спойлера на форуме. Выражается особенная благодарность за создание и оформление статей. Выражается особенная благодарность за создание статьи "F.E.A.R., обход расположения кода в модулях" MasterGH MasterGH является сооснователем проекта gamehacking[RU]. Также как и Xipho продумывал логику разделов и подразделов форума. Вносит свои предложения и идеи связанные с форумом. gluk Выражается благодарность за публикацию статьи "Взлом Doom III" - участие в проекте Gamehacking[RU]. aliast Бета-тест CE RUS, перевод тутора CE, перевод окна настроек - участие в проекте Gamehacking[RU]. SERGANT Идеи и бета-тест CE RUS - участие в проекте Gamehacking[RU]. alexweiye Создание трейнеров - участие в проекте Gamehacking[RU]. Akama Создание трейнеров - участие в проекте Gamehacking[RU]. L4R Поддержка форума "Новости игровой индустрии" - участие в проекте Gamehacking[RU].
  20. хе-хе ) Выход намечен в числах января до середины февраля это информация с IRC-канала. В прошлом году CE новой версии предстала 18 января, но может так случится, что неожиданно CE вдруг выйдет, например, сегодня
  21. Игра: Medieval 2: Total War Спрос на трейнер: возможно актуален. Дата выхода: 14 ноябрь 2006 Мин. системные требования: 2 GHz, 512 MB, 128 MB video Дополнительная информация: стратегия... отличная игрушка, год назад я от неё оторваться не мог играл сутками полторы недели или больше. Играл конечно без читов ) Статья сделана под CheatEngine 5.5 RUS (!) Реализованы чит-коды: 1. Деньги Т.к. они ломаются просто и в них нет ничего нового, то ищем адрес денег и пишем скрипт по нему. [ENABLE] alloc(newmem,2048) label(returnhere) newmem: mov [eax+04],#1000000 mov eax,[eax+04] test eax,eax jmp returnhere medieval2.exe+7F7071:>E8FF8D4C2410E8E4FBE7FF05800A0000YYxxxxxxxxB2FF7C108854240BC644 jmp newmem returnhere: [DISABLE] medieval2.exe+7F7071:>E8FF8D4C2410E8E4FBE7FF05800A0000YYxxxxxxxxB2FF7C108854240BC644 mov eax,[eax+04] test eax,eax dealloc(newmem) 2. Бесконечный ход (автор MasterGH) Для тех, кто не знает разные персонажи выполняют разного рода задачи: ассасины убивают жертву, торговцы могут кого-то разорить, священники могут обвинить в ереси. Успех того или иного действия характеризуется опытом персонажа. Наша задача сделать этот опыт максимальным. Возьмем, к примеру, нашего ассасина. В его структуре существующие значения 34 и 7 могут находиться рядом, но увы отсев группы значений ничем мне не помог. Вполне возможно что я не правильно его настроил... Тем не менее, проще выйти на структуру игрока отсеивая его координаты перемещения, а ещё проще по уменьшающимся шагам. Артмани здесь себя показала с хорошей стороны. В настройках ставим не округлять и ищем неизвестное правилом уменьшилось/увеличилось типов: 4 байта с точкой, 4 байта целое, 1 байт. В итоге нашлось пару адресов, заморозив которых мы получаем бесконечное передвижение ассасина. +c8: 100.00 //данные героя +1ec: 100.00 // копия данных, по которой выделяется область прохождения где [_pID] – указатель на адрес структуры героя. Пока _pID нам не нужно знать. Теперь перед нами два коэффициента, которые позволят ходить сколько угодно. Но нам надо ещё сделать так, чтобы мы могли ходить и выполнять свои цели со 100%-ной эффективностью. 3. 100% успех победы персонажей Для этого надо найти смещения адресов в которых расположен опыт. Я нашёл адрес ещё одного ассасина и сравнил характеристики обоих героев и по интуиции за минут пять нашёл нужные адреса )) +80: [[x]+0x38]=0…10 //опыт героя +c8: 100.00 //данные героя +1ec: 100.00 // копия данных, по которой выделяется область прохождения Итак я заморозил опыт моего ассина на максимуме: Теперь я попробую напасть на кого-то ) Хм… странное дело, почему же вероятность успеха увеличилась, но не на 100%. Чтобы понять, в чём дело ставлю бряк на чтение на адресе опыта. Выделяю асcасина направляю на жертву. Вот где оказались. EAX= 0000000A EBX= 11D803C8 ECX= 11D803F8 EDX= 00000003 ESI= 11D803C8 EDI= 0000001A ESP= 0012AE5C EBP= 0000002F EIP= 005AED2C В этом месте происходит сравнения опыта с нулём, меньше нуля, больше нуля, но меньше 10, больше 10. Чтобы не загромождать статью проделанными действиями я буду писать коротко. За помощью я обратился к OllyDbg и IDA. Я вышел по коду вверх и смотрел что происходит с опытом и как он преобразуется в проценты вероятности. Покажу только основные моменты без подробных комментариев, т.к. статья рассчитана на людей с подготовкой. Здесь было сравнение опыта с разными числами. Опыт в начале функции был равен 10, затем получилось 11. Т.е. было 10 опыта, затем стало 11. Затем мы умножаем 11 на 12 = 132. Откуда эти 12 взялись, будем разбираться дальше или не будем. Здесь мне бы пришлось делать очень много скриншотов (штук 15-20), мне это делать в лом, поэтому привожу конечный. Мы находимся всё в той же функции, тут мы видим получение «процентного числа» в игре в регистре сопроцессора. Оно равно 90,75. Это число на протяжении всего кода раза три видоизменялось. В тех местах, где я замечал изменения, я ставил плюсы в комментариях. Итак как было у ассина у которого было 10 опыта. 10+1=11 11*12=132 132*0,892=117,85 117,85*0,7 = 82.5 82.5 * 1,1 = 90,75 А теперь у ассасина у которого 3 опыта и который выбирает того же врага 3+1=4 (3 отличается от предыдущего) 4*12=48 48*0,892=42,85 42,85*0,7 = 30 30 * 1,0 = 30 (1,0 отличается от предыдущего) Теперь нападём этими аcсасинами на другого врага - священника Итак, как было у асcасина у которого было 10 опыта. 10+1=11 11*12=132 132*0,25=33 (0,25 отличается) 33*2 =66 66*0,7 = 46.2 42.6 * 1,1 = 50,82 Значит вероятность завалить священника 51% А теперь у асcасина у которого 3 опыта и который выбирает священника. 3+1=4 (делаем вывод, что опыт влияет на вероятность) 4*12=48 (делаем вывод, что 12 это константа) 48*0,25=12 (делаем вывод, что 0,25 привязана к священнику) 12*2 =24 (делаем вывод, что иногда может быть умножения на 2 в случаях священников) 24*0,7 = 16,8 (0,7 константа) 16,8* 1,0 = 16,8 (1,0 отличается от предыдущего) Я решил наугад пойти. У ассасина у которого 3 опыта, я решил сделать вероятность замочить священника 100%, оставляя ассину 3 опыта. К моему удивлению тот же код (который мы разбирали) стал работать и я вновь подставил 100% в регистр где надо (об этом ниже) и в итоге я замочил священника. Далее я решил замочить инквизитора, который часто не даёт никому покоя. Самое удивительное, что инквизиторов почти никогда невозможно убить, а теперь можно убить сразу. А пока запомним, как можно сделать вероятность убийства ассином при любом опыте и как можно сделать, чтобы он далеко ходил. 1) Убийство с одной попытки. Поскольку опыт не имеет значения, то взламывать на мой взгляд его не стоит, так даже будет интересней играть. [ENABLE] alloc(newmem,2048) label(_originalcode) label(_returnhere) newmem: cmp ebx,[pId] jne short _originalcode mov esi,#100 _originalcode: mov eax,[esp+1c] test eax,eax jmp _returnhere medieval2.exe+1979F9:>8BC18B0DA80262013BC18BF07C028BF1YYxxxxxxxxC0740983E80175FB8944 jmp newmem nop _returnhere: [DISABLE] medieval2.exe+1979F9:>8BC18B0DA80262013BC18BF07C028BF1YYxxxxxxxx90740983E80175FB8944 mov eax,[esp+1c] test eax,eax dealloc(newmem) 2) Беспрепятственное хождение Надо просто напросто заморозить значения ниже по смещениям (мы это сделаем в след. скрипте) [_pID]: +c8: 100.00 //данные героя, область прохождения +1ec: 100.00 // копия данных, по которой выделяется область прохождения 3) Нахождение _pid Давайте, определим, наконец, чему равен _pID. Для того чтобы трейнер был универсальным, нужно вытащить _pID из инструкции типа А. _pID должен указывать на то, что объекты расы наши. Инструкцию берём такую, которая работает при наведении курсора мыши на только нашего юнита, это как раз та инструкция которая читала адрес дальности хождения юнита. Она читает только юниты нашей расы. [ENABLE] globalalloc(newmem,2048) label(_returnhere) label(pId) registersymbol(pId) newmem: mov [pId],esi mov [esi+c8],447A0000 mov [esi+1ec],447A0000 ucomiss xmm0,[esi+000000c8] jmp _returnhere pId: dd 0 medieval2.exe+184A40:>558BEC83E4F883EC0C0F57C053568BF1YYxxxxxxxx00009FF6C444570F8B98 jmp newmem nop nop _returnhere: [DISABLE] medieval2.exe+184A40:>558BEC83E4F883EC0C0F57C053568BF1YYxxxxxxxx90909FF6C444570F8B98 ucomiss xmm0,[esi+000000c8] unregistersymbol(pId) dealloc(newmem) Итак, активируем скрипт по получению pid и все чит-коды… Результаты: Теперь ассасин (и другие из нашей расы) могут ходить на большие расстояния много раз и убивать каждого на своём пути. Но есть пока не решённая проблема. Теперь разбираемся, с тем как сделать убийство асcасином за ход игры больше одного раза касательно войска. Т.е. когда асcасин убивает игрока, тот умирает, а на его место встаёт другой (из строя армии), которого убить не представляется возможным в течении одного хода игры... 4. Снятие ограничения на ход игры Удобнее сделать поставленную задачу следующим способом. Взять не асcасинов, а шпионов. Т.к. шпион не убивает, а следит за жертвой. Жертва не умирает и новую искать не нужно. Если не включены читы,то включаем и возьмём 4-рёх шпионов, какие попадутся, но только чтобы один шпион мог шпионить. На рисунке ниже 3-тя структура шпиона, который может шпионить, а остальные не могут. На рисунке ниже класс-предок я обозначил скорее всего не правильно, но исправлять уже не буду )) Адреса, которые обозначены восклицательными знаками, могут быть ключевыми. Итак, первое смещение с восклицательным знаком было мной проверено и действительно, когда адрес по смещению +BC заморожен на FFFFFFFF, то ход не пропадает, в противном случае будет 25 в десятичной системе. Запомним. +80: [[x]+0x38]=0…10 //опыт героя +bc: 0xFFFFFFFF // активность хода героя +c8: 100.00 //данные героя +1ec: 100.00 // копия данных, по которой выделяется область прохождения Подправим чит-код (вы его увидите позже) и асcасин может убивать множество раз. Однако по ходу игры остались ещё проблемы, не полная вероятность саботажа асcасина, а также асcасин плохо видит карту. Решим проблему с саботажем, опять идём в ollydbg и снова ставлю бряк на чтении опыта асcасина и пытаюсь произвести саботаж. Эти действия аналогичны тому, как мы делали вероятность убийства. Ничего нового не будет, поэтому я не буду писать об этом, приведу только рисунки. Результат Итоговый скрипт на повышение вероятности при саботаже и заказных убийствах для асcасинов (также для других юнитов нашей рассы) [ENABLE] alloc(newmem,2048) label(_originalcode) newmem: cmp ebx,[pId] jne short _originalcode mov esi,#100 _originalcode: mov eax,[esp+1c] test eax,eax ret medieval2.exe+1979F9:>8BC18B0DA80262013BC18BF07C028BF1YYxxxxxxxxC0740983E80175FB8944 call newmem nop medieval2.exe+197BAC:>EB0E83F85F7D048BF0EB05BE5F000000YYxxxxxxxxC0740983E80175FB8944 call newmem nop [DISABLE] medieval2.exe+1979F9:>8BC18B0DA80262013BC18BF07C028BF1YYxxxxxxxx90740983E80175FB8944 mov eax,[esp+1c] test eax,eax medieval2.exe+197BAC:>EB0E83F85F7D048BF0EB05BE5F000000YYxxxxxxxx90740983E80175FB8944 mov eax,[esp+1c] test eax,eax dealloc(newmem)
  22. Спрос на трейнер: не актульно Дата выхода: 7 июня 2005 Минимальные требования: CPU 1 GHz, 256 Mb, 64 Mb Video Рекомендуемые требования: CPU 1,5 GHz, 512 Mb, 128 Mb Video На данный момент по игре рассмотрены: //mov [[00B6F3B8]+n*1c+5a8]],1//mov [[00B6F3B8]+n*1c+5ac]],1//где n =[1..12][ENABLE]alloc(thread,200)registersymbol(tred)label(x1)thread:push eaxpush ecxpush ebxxor ecx,ecxmov eax,[00B6F3B8]add eax,5a8x1:inc ecximul ebx,ecx,1cmov [eax+ebx],1// mov [[00B6F3B8]+n*1c+5a8]],1 - в обоймеmov [eax+ebx+4],1// mov [[00B6F3B8]+n*1c+5ac]],1 - общие патроныcmp ecx,cjne x1pop ebxpop ecxpop eaxcall GetCurrentThreadretcreatethread(thread)[DISABLE]dealloc(thread)
  23. 1. Мощный поиск адресов в памяти Привет. В этой теме я опишу как настроить и как пользоваться мощным поиском MHS - Expression Search. Поиск Expression Search является поиском в котором можно задавать множество различных правил сканирования и отсеивания адресов с применим логических, математических операторов. Также операторов обращения к адресу и операторов типа данных. Поиск очень мощный =) Выражаю благодарности: L. Spiro, WhiteHat, CoMPMStR и в частности Recifense за то ,что они как и всем в частности и мне помогли приобрести необходимые навыки. А теперь поехали... Настройка Если у вас процессор с более чем одним ядром и в поиске вы используете скобки [], то чтобы поиск работал без вылетов в синий экран снимите опции отключающие функции ядра ОС в настройках программы.
  24. Вероятно, в будущих статьях я неизбежно затрону новые возможности, так что не стоит отчаиваться По поводу того что CE не ловит процесс игры, то трудно предположить причину. Её нужно локализовать в отладке в Windows7... думаю это будет исправлено Дарк Байтом в новой CE 5.6 Да, кстати... после выхода CE 5.6 нужно будет и создать CE RUS 5.6. Наверно, я это смогу сделать в течении недели. Пока я занимаюсь созданием/модификацией двига для трейнера малых размеров с автоассемблером. Движок-то не простой - Xipho написал
×
×
  • Создать...

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

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