MasterGH Опубликовано 12 декабря, 2009 Поделиться Опубликовано 12 декабря, 2009 Игра: Dark Sector. Спрос на трейнер: актуален (вероятность найти рабочий трейнер мала) Дата выхода: декабрь 2008 Мин. системные требования: 2,4 ГГц, 1 Гб, 256 Мб видео Дополнительная информация: немного фиговое управление. На данный момент рассморено: 1.Здоровье (автор MasterGH)]Инструменты: CheatEngineRus. Скрытый текст Начинаем миссию. Для здоровья нет опознавательных признаков кроме как степень окровавленности экрана. Чем здоровье меньше, тем эффекта больше. Первое что пришло на ум так это отсев 4 байта целое, т.к. это чаще всего встречающийся тип. Ищу неизвестное, попадаю под обстрел, нажимаю на паузу, отсеиваю правилом «уменьшилось»… и т.д. В итоге я нашёл единственный рабочий динамический адрес. 24A60398 = 125 (полное здоровье) Ставим брейкпоинт на доступ и получаем сразу же инструкции ниже (даже не пришлось заходить в игру). Среди них ищем инструкцию типа А. При этом стреляю во врагов и позволяю им ранить моего героя. рис1 Из рисунков видно, скорее всего, первая инструкция это отличный кандидат на тип А. В конечном счёте это можно будет проверить поиграв с чит-кодом несколько уровней игры. Сейчас я пропущу внедрение чит-кода, чтобы вам было проще сориентироваться далее. Я сделал внедрение постоянного здоровья в первую инструкцию на рис1, но как оказалось значение с периодичностью в секунду возвращается то в 125, то становится 10000. Конечно, меня это не устроило – героя запросто могут прибить. Я поставил бряк на запись, чтобы узнать, в чём дело. И узнал что в итоге рядом с рабочим адресом лежит максимальный адрес именно он все портит. Рис.2 Чтобы этого не было в чит-коде нужно записать изменения обоих адресов. Активирующий Скрипт будет таким. Примечание (от 13.01.10) Конечно, его можно сделать чуть проще, но я уже переделывать не буду. [ENABLE] alloc(newmem,2048) label(_originalcode) label(_returnhere) label(_buf1) registersymbol(_buf1) label(_cheat1) registersymbol(_cheat1) label(pId) registersymbol(pId) newmem: mov [pId],edx _cheat1: jmp short _originalcode mov [edx+00000468],#100000 mov [edx+00000464],#100000 _originalcode: cmp dword ptr [edx+00000468],00 jmp _returnhere pId: dd 0 _buf1: db 90 90 DS.exe+569FE2:>17000F85DDFEFFFF8BBB9C0000008B17YYxxxxxxxx00000F8EC8FEFFFF8D54 jmp newmem nop nop _returnhere: [DISABLE] {DS.exe+569FE2:>17000F85DDFEFFFF8BBB9C0000008B17YYxxxxxxxx90900F8EC8FEFFFF8D54 cmp dword ptr [edx+00000468],00 unregistersymbol(pId) unregistersymbol(_buf1) unregistersymbol(_cheat1) dealloc(newmem)} А на здоровье _buf1: readmem(_cheat1,2) _cheat1: db 90 90 [DISABLE] _cheat1: readmem(_buf1,2) 2.Бесконечные патроны + нет перезарядки (автор MasterGH)]Инструменты: CheatEngineRus Скрытый текст Итак, патроны в магазине имеют тип 1 байт, но я искал 4 байта и что странное нашёл ) Нашлось два адреса экранный и рабочий. На рабочий адрес ставим бряк. Сразу же появились инструкции. Рис1. Поставили бряк на адрес патронов. ECX – адрес структуры. Примечание. er* - означает что определить тип невозможно из-за технических недостатков CE. Почти во всех играх инструкции, работающие с патронами будут типа (B||C) – ничего удивительного. Рис2. Здоровья – 10000, патронов в магазине – 25. Давайте поищем в структуре оружия адрес структуры объекта героя через сканер памяти. Нашлось 24 адреса-указателя и, увы, требуемого указателя нет. Тогда давайте поищем указатель на структуру оружия в структуре объекта героя непосредственно или многоуровневый указатель. К удивлению нашёлся один динамический адрес [1CFC1BD0]= 0x1CF424D0, который, увы, также не был в структуре героя. Но рано печалится и думать что надо лесть в отладку с головой. Примечание. Кстати я всё-таки слазил ))) и узнал вот что (см. рис 3 , патронов 25 в обойме, 6 – патроны в обойме пистолета, 0 – патронов у отсутствующего оружия в 3-ем слоте). Мы имеем дело с массивом указателей на определённое оружие. В объекте оружия нет указателя на объект владельца, поэтому фильтр сделать нельзя – надо изворачиваться. Рис3. Как я нашёл этот указатель писать не буду, т.к. я вас точно запутаю (пользовался только CE и установкой брекйпоинтов). Поставим бряк на [1CFC1BD0]= 0x1CF424D0 и найдем инструкцию типа А. А в уме держим указатель b[[1CFBD334]+0x3e8] = патронам в рожке рис4. После определения типов. Внедрять будет туда, куда указано стрелкой. В этом месте всегда проскакивает один указатель на патроны в магазине, а также эта инструкция наиболее часто обращаемая. [ENABLE] alloc(newmem,2048) label(_originalcode) label(_returnhere) newmem: push ebx mov ebx,[eax] mov byte [ebx+3e8],#30 pop ebx _originalcode: cmp dword ptr [eax],00 je ds.exe+54d934 jmp _returnhere DS.exe+54D8FB:>518BCEBB01000000FFD28B0085C07439YYxxxxxxxx8B068B90040100008D4C jmp newmem _returnhere: [DISABLE] DS.exe+54D8FB:>518BCEBB01000000FFD28B0085C07439YYxxxxxxxx8B068B90040100008D4C cmp dword ptr [eax],00 je ds.exe+54d934 dealloc(newmem) 3.Бесконечные боеприпасы (автор MasterGH)]Инструменты: CheatEngineRus Скрытый текст Находим рабочий адрес патронов в «рюкзаке». Ставим на него бряк. Находим указатели (используя сканер памяти и указатель на pID из включенного активирующего скрипта) рис 1. Ищем адрес ECX= 14A86030 и нашли единственный указатель [01A42974] =14A86030. Ставим на него бряк на доступ и определяем инструкции типа А. рис 2. Выделенная инструкция типа А. Вытащим указатель _pres на структуру ресурсов из выделенной инструкции на рис2. [ENABLE] alloc(newmem,2048) label(_originalcode) label(_returnhere) label(_pres) registersymbol(_pres) newmem: mov [_pres],eax _originalcode: cmp dword ptr [eax],00 je ds.exe+569dd0 // [i]кстати в этом месте могут быть проблемы из-за отсутствия метки отпечатка байт (если проблема и есть (т.к. я её не проверял), то будет решена после Нового года, когда выйдет версия CE 5.6)[/i] jmp _returnhere _pres: dd 0 DS.exe+569D89:>00000050897C2420FFD28B0085C07447YYxxxxxxxx8B839C0000008B088B11 jmp newmem _returnhere: [DISABLE] DS.exe+569D89:>00000050897C2420FFD28B0085C07447YYxxxxxxxx8B839C0000008B088B11 cmp dword ptr [eax],00 je ds.exe+569dd0 dealloc(newmem) unregistersymbol(_pres) Теперь внедряем в инструкцию на рис. 1. [ENABLE] alloc(newmem,2048) label(_originalcode) label(_returnhere) newmem: pushf push eax mov eax,[_pres] or eax,eax jz short _originalcode cmp ecx,[eax] jne short _originalcode mov [ecx+ebp*8+00000394],#99999 _originalcode: pop eax popf mov ebx,[ecx+ebp*8+00000394] jmp _returnhere DS.exe+54AE8C:>0400CCCC51807C240C0053558B6C2410YYxxxxxxxx0000744656578DB19C01 jmp newmem nop nop _returnhere: [DISABLE] DS.exe+54AE8C:>0400CCCC51807C240C0053558B6C2410YYxxxxxxxx9090744656578DB19C01 mov ebx,[ecx+ebp*8+00000394] dealloc(newmem) Результат такой, что можно сказать вауууу =) рис.3 И не рассмотрено: 1) Оружие не взрывалось от датчиков 2) Деньги 3) Сделать идеальным оружие 4) Обмануть расстояние действия грефы 5) Грефа электрическая, огненная, любое метание с силой. 6) Открыть доступ ко всему оружию Ваши статьи…. Ссылка на комментарий Поделиться на другие сайты Поделиться
Bromvol Опубликовано 2 апреля, 2012 Поделиться Опубликовано 2 апреля, 2012 Уважаемый MasterGH а сейв файлы тебе могут помочь к этой игре для взлома?У меня их несколько было. Думаю ты б еще круче мог ее взломать с етими моими сейвами.Там я делал идеальное оружие. Через 10-15 дней я закину их на сайт. Сейчас не могу, потому-что я на сесии в другом городе.Сори если офтоп. Ссылка на комментарий Поделиться на другие сайты Поделиться
ARM4ND0 Опубликовано 2 апреля, 2012 Поделиться Опубликовано 2 апреля, 2012 Bromvol, на дату посмотри))) Ссылка на комментарий Поделиться на другие сайты Поделиться
Bromvol Опубликовано 4 апреля, 2012 Поделиться Опубликовано 4 апреля, 2012 Uchiha Sasuke я дату видел, но решения вопроса по этому поводу не увидел.MasterGH правильно написал что рабочего тренера так просто не найдеш.У меня лично было много тренеров к Дарк Сектору, но работал (!!!) только тренер Мастера, за что ему большое спасибо.3 года ето не срок для интересных игр для взлома. Я ломал разные игры которым и по 15 и больше лет и которым нет еще и года.А сейвы виложу и обясню что в них да как когда буду в своем городе. Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 4 апреля, 2012 Автор Поделиться Опубликовано 4 апреля, 2012 Спасибо, но чтобы я что-то сделал по этой игре мне сейвы ненужны - это раз. Два - сейчас у меня задачи, более глобальные и более сложные в решении, и более интересные. Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения