-
Постов
2 999 -
Зарегистрирован
-
Победитель дней
129
Тип контента
Профили
Форумы
Загрузки
Блоги
Весь контент MasterGH
-
У ZOCKIR-а видео тяжело понимается, но со второго, третьего... доходит, что оно лучше моего видео по технике без его комментариев, а мое хуже по технике не смотря на объяснения в комментариях. Забегая вперед, я напишу, что полезно смотреть на единую картину целого. Не может существовать одна часть целого без другой части. Так и с двумя видео на одну тему взлома - это одно целое. Ну, да понять сложновато, но если оценивать, что одно хуже, а другое лучше, то это все равно, что удивляться о том, что зима хуже, а лето лучше. Это шанс рассмотреть решение задачи с двух сторон. Два скрипта, которые он сделал включают и выключают значения в игре сразу, а не после удара как у меня. Потом показано как вышли на xor инструкцию - через поиск уменьшилось/неизменилось - хороший способ. Все достаточно технично выполнено и скрипты вполне хорошие (с сигной было бы идеально) 1. Сначала он ищет рабочий адрес золота по правилу уменьшилось 2. Пишет скрипт на золото, а скрипт-то срабатывает и на другие величины. Повезло, ну если бы не повезло, то решалось бы ходу дела. 3. Потом ищет "силу" как float, странно, что эта сила не шифруется 3. Пишет скрипт на силу, а скрипт-то срабатывает и на другие величины включая здоровье и ману. Два скрипта, судя по видео рабочие. Хотя качество видео и мое и ZOKIR хреновое, нечеткое и с трудом понимается, что там за числа в игре, но зато поняв, можно увидеть, что все не так-то сложно Скрипты простые, только в отладке поковыряться немного и с поиском. Кстати, считать xor в калькуляторе необязательно. Переводы может делать и ассемблерный код.
-
Это может быть по 4 причинам: 1. Не тот рут поставлен 2. Рут поставлен тот, но прога, которая раздает рут не дает его CE 3. Мелкий экран, попробуй повернуть на бок включив автоповорот 4. Баг CE, но у меня он проходил после рестарта планшета. В первый раз я всегда видел список процессов хотя бы один раз, а потом из-за багов он мог больше не появляться. Ну, или какая-то другая проблема.
-
В Cheat Engine (Android) много багов 1. Длина строки всегда 1. Показывает первый символ 2. Заморозка строки и некоторых других типов вешает CE. После закрытия CE не видит процессы - пустой листинг 3. Если случайно поставить запись пустого значения по адресу (пустое поле), то CE зависает намертво. Вот, случайно в спешке поле оставил пустым и нажал на ок, все СЕ завис 4. Если загрузить таблицу, то не видно списка процессов (но в этом баге не уверен, повторять не стал) 5. В какой-то момент после записи, CE считает строку как 4 байта. Приходиться каждый раз выставлять тип строки и делать запись. Потом опять менять тип, опять запись.... В общем сыро не то слово. Но спасибо за апк Сержанту. С десяток читов удалось сделать...
-
В GameCIH 3,0,0 - последняя версия на официальном сайте поддерживает поиск имен переменных, но не текстовых значений. Только что попробовал - ноль найденных результатов. А CE Android находит экранный адрес и рабочий.
-
А что не понял? Ставишь рут. Запускаешь CE. Ставишь разрешение на рут для CE если требуется. Будет две кнопки. Жмакаешь на нижнюю и дальше все как обычно. Выбираешь тип данных и сканирование... Я вот сейчас ломанул Castle TD. Там райбочий адрес был с типом текст, что меня удивило. В других сканерах памяти под Андроид поиска теста вроде не было.
-
Отличная новость... Вот скрин 1. Нужен рут 2. Есть два варианта работы: на Андроиде и через удаленное подключение Потеснить мне не удалось, т.к. села батарея.
-
DeepMind создала программу, которая может играть в 49-ти видеоиграх, на игровой видео приставке Atari 2600. Универсальность алгоритма DeepMind разработчики объясняют объединением двух типов машинного обучения. Первый из них использует архитектуру мозга, в которой связи между слоями искусственных нейронов укрепляются по мере приобретения опыта. Этот тип, называемый глубинным обучением (deep-learning systems), используется, к примеру, для автоматической классификации фотографий или машинного перевода в различных сервисах Google. Второй тип машинного обучения называется обучением с закреплением (reinforcement learning). Он основан на особой искусственной системе принятия решений и вдохновлён биологической системой дофаминового вознаграждения у животных и людей. В качестве входных данных программа DeepMind использует только пиксели экрана и счёт игры. Методом проб и ошибок она учится совершать различные действия — ход влево или вправо, вперёд или назад, атака, защита и так далее. Каждое действие, приводящее к победе или поражению, программа фиксирует и "запоминает". В эксперименте алгоритму потребовалось несколько часов на обучение каждой игре — примерно как среднестатистическому геймеру. По словам учёных, данное достижение может найти применение в различных сферах человеческой деятельности. Алгоритм может быть использован как для маркетинговых исследований, так и для решения проблем, возникающих при взаимодействии умных роботов с окружающей средой. Однако разработчики алгоритма DeepMind надеются, что их детище поможет развитию нейробиологии. Анатомию мозга при помощи данной программы изучать не получится, но вычислительные способности мозга можно будет исследовать с совершенно новой стороны. "Мы надеемся, что наша разработка послужит не только развлечением для информатиков, но и поможет развитию фундаментальной науки. Поскольку алгоритм построен по образу и подобию человеческого мозга, он может помочь неврологам в изучении интеллекта и процесса принятия решений", — рассказывает Демис Хассабис (Demis Hassabis), соучредитель DeepMind. В ближайшем будущем Хассабис и его коллеги планируют обучить свой алгоритм новым задачам, которые помогут достичь предела его вычислительных возможностей.
-
Хочу показать пример трейнеров (пока только одного), которые делала бывшая команда TeamX 22 Апреля 2006 год, игра GTA III gta3v11trngfxer.rar Трекерная музыка в трейнере.
-
Данная тема ушла в небытие... Прикладываю архивчик любителям. Там же сорцы и билд. F.E.A.R. (Стрелок).rar Обратите внимание заготовка на Дельфи7 в виде формы и кнопки( как шаблон пример). Главное код, а не визуальное отображение. Кстати, я не указал, что статья-то для общего развития. На сегодняшний день есть альтернатива.. цитирую из темы. Жалко было такую статью оставлять в архивах.
-
Моя очень старая статья Принципы внедрения чит-кодов. Devil May Cry 4Trial Ver. С сайта Chemax Я наткнулся на эту статью в поиске случайно. Не припоминаю, что она есть на форуме.
-
Могу предложить кому-нибудь сделать радио трекерной музыки из огромного количества доступной трекерной музыки в Интернете. Мне бы понравилось. Сами понимаете откуда эта музыка в основном из таблеток, кейгенов и прочих...
-
Vlad2 интересную идею подал по отличию данных после перезагрузки и после загрузки определенных слотов игры. Теоретически можно будет отличать как изменившиеся так и не изменившиеся данные. Не изменившиеся после перезагрузки игры или слота: 1. Постоянные значения в структуре от начала базового адреса (id, типы, и прочее) 2. Статические адреса в структуре от начала базового адреса (указывающий на место в памяти) Изменившиеся после перезагрузки игры или слота это: 1. Меняющиеся адреса от начала базового адреса (динамические указатели, т.е. мы знаем, что по смещению от базового адреса меняется адрес после перезагрузки и это явление можно исследовать) 2. Меняющиеся данные от начала базового адреса (при загрузках разных слотов где игрок имеет разный опыт и свойства) ---------- В новой версии накопились следующие задачи: 1. Поддержка в русской версии 2. Изменении в логике GUI. Если кликаем на запись в списке, то имя и адрес показываются в полях 3. Обдумать GUI и механизм сохранения и загрузки дампов, чтобы после перезагрузки игры можно было дампы с жесткого диска скопировать в память для исследования.
-
Примеры: cmp [ecx+60],01 // if yes, jump to loop and set array with given EAX je @f // je loop mov eax,0 // if not, fill array with zeros. @@: // loop: dec esi mov [edx+esi],eax jnz @b // jnz loop cmp [godmode],01 jne @f // jne skipgodmode mov [ecx+4],(float)1 @@: // skipgodmode: cmp [noclip],01 jne @f // jne skipnoclip mov [ecx+9C],01 @@: // skipnoclip:alloc(SuperAnonymousLabelSupport,1024) SuperAnonymousLabelSupport: xor rax,rax mov rbx,1 mov rcx,2 mov rdx,3 @@: test rax,rax je @f cmp rbx,1 je @f2 cmp rcx,2 je @f3 cmp rdx,3 je @f4 @@: //test rax,rax gets here jmp exit @@: //cmp rbx,1 gets here jmp exit @@: //cmp rcx,2 gets here jmp exit @@: //cmp rdx,3 gets here exit: jmp @b5 //jumps back to first anonymous label (5th anonymous label back from this point)
-
procedure TForm1.Button4Click(Sender: TObject); var HP:THandle; wread:Cardinal; bb:LongInt; begin HP := OpenProcess(PROCESS_VM_READ,False,StrToInt(LabeledEdit1.Text) {PID}); LabeledEdit3.Text := IntToStr(HP);{Хэндл} ReadProcessMemory(HP,Ptr($21292BD8){найденный адрес},@bb,4,wread); Edit2.Text := IntToStr(bb); end;
-
X-Ray Engine 1.5 Ссылка на репозиторий X-Ray Engine 1.6 Ссылка на репозиторий Инструкции по работе и установке читем там же. Как пользоваться ? Пример. В отладке нашли код перезарядки и рядом слово WeaponMagazined.cpp. Ищем в репозитории в соответствии с ближайшей версии игры и находим ссылку. Берем ida + декопиль, смотрим на файл и ищем хоть какие-то соответствия перезарядки.... Надеюсь эта информация будет кому-то полезна для тренировки дизассемблирования. Мне кажется она вообще просто бесценной. Очень большая редкость чтобы к популярным играм выкладывали сорцы движка. Выводы после изучения исходников: Вывод1 Как в отладке так и в исходнике паляться строковые переменные имеющие уникальное название. Эти переменные используются для получения значений-настроек по ключевым словам в том числе определяемых по уровню сложности игры. Например, void CShootingObject::Load (LPCSTR section){//... //время затрачиваемое на выстрел fOneShotTime = pSettings->r_float (section,"rpm");//...} Примеры ключевых слов можно посмотреть еще под спойлером void CShootingObject::LoadFireParams( LPCSTR section ){ string32 buffer; shared_str s_sHitPower; shared_str s_sHitPowerCritical; //базовая дисперсия оружия fireDispersionBase = deg2rad( pSettings->r_float (section,"fire_dispersion_base" ) ); //сила выстрела и его мощьность s_sHitPower = pSettings->r_string_wb(section, "hit_power" );//читаем строку силы хита пули оружия s_sHitPowerCritical = pSettings->r_string_wb(section, "hit_power_critical" ); fvHitPower[egdMaster] = (float)atof(_GetItem(*s_sHitPower,0,buffer));//первый параметр - это хит для уровня игры мастер fvHitPowerCritical[egdMaster] = (float)atof(_GetItem(*s_sHitPowerCritical,0,buffer));//первый параметр - это хит для уровня игры мастер fvHitPower[egdNovice] = fvHitPower[egdStalker] = fvHitPower[egdVeteran] = fvHitPower[egdMaster];//изначально параметры для других уровней сложности такие же fvHitPowerCritical[egdNovice] = fvHitPowerCritical[egdStalker] = fvHitPowerCritical[egdVeteran] = fvHitPowerCritical[egdMaster];//изначально параметры для других уровней сложности такие же int num_game_diff_param=_GetItemCount(*s_sHitPower);//узнаём колличество параметров для хитов if (num_game_diff_param>1)//если задан второй параметр хита { fvHitPower[egdVeteran] = (float)atof(_GetItem(*s_sHitPower,1,buffer));//то вычитываем его для уровня ветерана } if (num_game_diff_param>2)//если задан третий параметр хита { fvHitPower[egdStalker] = (float)atof(_GetItem(*s_sHitPower,2,buffer));//то вычитываем его для уровня сталкера } if (num_game_diff_param>3)//если задан четвёртый параметр хита { fvHitPower[egdNovice] = (float)atof(_GetItem(*s_sHitPower,3,buffer));//то вычитываем его для уровня новичка } num_game_diff_param=_GetItemCount(*s_sHitPowerCritical);//узнаём колличество параметров if (num_game_diff_param>1)//если задан второй параметр хита { fvHitPowerCritical[egdVeteran] = (float)atof(_GetItem(*s_sHitPowerCritical,1,buffer));//то вычитываем его для уровня ветерана } if (num_game_diff_param>2)//если задан третий параметр хита { fvHitPowerCritical[egdStalker] = (float)atof(_GetItem(*s_sHitPowerCritical,2,buffer));//то вычитываем его для уровня сталкера } if (num_game_diff_param>3)//если задан четвёртый параметр хита { fvHitPowerCritical[egdNovice] = (float)atof(_GetItem(*s_sHitPowerCritical,3,buffer));//то вычитываем его для уровня новичка } fHitImpulse = pSettings->r_float (section, "hit_impulse" ); //максимальное расстояние полета пули fireDistance = pSettings->r_float (section, "fire_distance" ); //начальная скорость пули m_fStartBulletSpeed = pSettings->r_float (section, "bullet_speed" ); m_bUseAimBullet = pSettings->r_bool (section, "use_aim_bullet" ); if (m_bUseAimBullet) { m_fTimeToAim = pSettings->r_float (section, "time_to_aim" ); }}void CShootingObject::Load (LPCSTR section){//... //время затрачиваемое на выстрел fOneShotTime = pSettings->r_float (section,"rpm");//...}
-
Сравнение структуры и её копии после события в игре Найдено еще одно применение плагина. Мы расструктуризовали структуру по базовому адресу, но если в ней что-то меняется, то это никак не сигнализируется и нельзя увидеть прошлое значение, а только значение в данный момент. Это и есть проблема. Я хочу увидеть, что изменилось в структуре после события в игре и плагин это позволяет сделать. Посмотрим на примере игры СТАЛКЕР Чистое небо 1. Находим адрес патронов 2. Находим инструкцию после перезарядки на запись 03CD2C21 - 01 97 88060000 - add [edi+00000688],edx << EDI=3CA44080 3. Делаем перезарядку и делаем плагином дамп по 3CA44080 с меткой количества патронов Ammo8 5. Делаем выстрел и делаем плагином дамп по 3CA44080 с меткой количества патронов Ammo7 6. Делаем выстрел и делаем плагином дамп по 3CA44080 с меткой количества патронов Ammo6 7. Расструктуризуем Ammo8. 8. Добавляем экстраадреса Ammo7, Ammo6, 3CA44080 9. И наблюдаем все изменения 10. Поменяем в руке пукло на шотган и перенесем адрес 3CA44080 в новую группу. Покрутили вниз по фиолетовому цвету и нашли палевный поинтер... раскрываем и видим интересные данные, которые могут помочь, а могут и нет.. Во всяком случае с этим поинтером работает инструкция, которая меняет оружие и это может пригодится при чите, которое дает оружие Т.е. теперь можно сравнивать все, что придет в голову после случившихся событий в игре и из кучи мусора находить отличия. Затем можно группировать дампы по событиям... Я решил поковырять сегодня Сталкера и вот случайно увидел потенциал сравнения дампов. Так что пользуйтесь при поиске id оружия или что-то в этом роде. Еще можно попробовать наводить прицел на игрока, на вещи и снимать его, и делать дампы по базовому адресу игрока. Подходить к вещи близко или далеко чтобы взять её и делать дампы... возможно что-то найдется интересное, а возможно и нет. Пару слов и о Structure spider. Он оказался очень похожим по сравнению структур через тини дампер, только в автоматическом режиме, а не вручную и на указанную глубину. Есть ограничения на правила поиска и тип данных. Правил поиска только три: изменилось, не изменилось, оба варианта. Правила поиска можно чередовать. Уровень вложенности сравнения структур можно задавать. Работают с двумя базовыми адресами. Тип данных: только один из предложенных: текст, 1,2,4,8 байта, float, double, pointer(HEX) Недостаток, который я заметил, это обновление значений с глюками - показываются значения указателей старые, пока не растянешь границы таблицы. Пример поиска изменившихся данных в структуре, когда держим в руках оружие и не держим
-
Слетевшие ссылки это такая мелочь, что её можно поправить самому.
-
В 6.3 не знаю, а в 6.4 if(cheatEngineIs64Bit()) then getMainForm().Caption = string.format('CE %s(64bit) личная Bromvol', getCEVersion()) else getMainForm().Caption = string.format('CE %s(32bit) личная Bromvol', getCEVersion()) end
-
По не подтвержденным данными сходства у игр следующие: 1. Все игровые объекты имеют "базовый класс", а реализация - "базовый объект". Базовый объект мы видим в памяти как "структуру данных" Т.е. мы имеем динамический список иерархии объектов типа компонента TreeView (программисты знают этот тип компонента). В этой иерархии мы можем найти объект вызывая игровые функции, которые просто обязаны быть в игровом движке. Как правило это функции поиска по уникальному имени объекта, тегу или типу. Возвращают такие функции один объект или массив объектов. 3. Объект можно активировать, деактивировать, удалить, создать, назначить родителя и прочие функции характерные для базового объекта 4. В базовом объекте содержатся данные ориентации в игровом мире 5. В базовом объекте находится динамический список копонентов-поведений игрового объекта Например, персонажи, которые бегают по карте имеют базовый объект с компонентом CharController (компонент игрового движка). Значит используя игровую функцию поиска можно перечислить все объекты с типом CharController, получить ссылк на Transform и получить например координаты этих объектов в игре. Интересный вопрос. Каким образом боты знают, что им нужно стрелять в определенного персонажа - нашего главного героя. Это может быть, когда бот создается (спавнится) и он ищет по иерархии объектов все GameObject и отличает их по главному тегу и ссылку на этот GameObject он сохраняет. Другой вариант, у у бота есть поле зрения в виде невидимой меш-сферы или триггер-коллизии. Когда в поле попадает CharController, то срабатывает событие и в нем проверяется, главный ли это игрок чтобы преследовать его или стрелять по нему. 6. Компоненты или поведения могут быть стандартные или пользовательские - наследуемые от стандартных. 7. Все персонажи в игре имеют коллизии 8. Рейкастинг 9. Сообщения 10. Базовые объекты имеют слои 11. Меш 12. Функции загрузки сцен Ну, да, эти функции есть у всех игровых движков... передается обычно уникальный индекс сцены или имя сцены 13. Функции работающие с параметрами настроек PlayerPrefs. Например, следующие код выведет счет игрокаА другой код запишет и сохранит счет PlayerPrefs работает с общими типами Float, Int, String. В жвижке X-Ray Engine 1.6 следующий пример Можно поискать строки в памяти игры похожие на скорость стрельбы, перезарядки, загрузки вещей. Если найти адрес похожий на настройку, поставить брейкпоинт на чтение, загрузить сцену игры, то если повезет мы выйдем на инстуркцию чтения парметров. Сделав Lua скрипт на CE мы можем вывести все текстовые ключи и настройки для них, а также подменить эти ключи в режиме игры. В памяти процесса игры очень много строк поэтому можно использовать любые средства для автоматизации поиска. 1. Используя CE Lua можно совершать поиск и сохранение в файл строк. Я обсуждал в этой теме 2. Для подмены значений на инструкции нужно написать свой Lua скрипт 3. Для логирования ключевых слов на инструкции нужно написать свой Lua скрипт print (PlayerPrefs.GetFloat("Player Score"));PlayerPrefs.SetFloat("Player Score", 10.0);PlayerPrefs.Save();//сила выстрела и его мощьность s_sHitPower = pSettings->r_string_wb(section, "hit_power" );//читаем строку силы хита пули оружия s_sHitPowerCritical = pSettings->r_string_wb(section, "hit_power_critical" ); fvHitPower[egdMaster] = (float)atof(_GetItem(*s_sHitPower,0,buffer));//первый параметр - это хит для уровня игры мастер fvHitPowerCritical[egdMaster] = (float)atof(_GetItem(*s_sHitPowerCritical,0,buffer));//первый параметр - это хит для уровня игры мастер fvHitPower[egdNovice] = fvHitPower[egdStalker] = fvHitPower[egdVeteran] = fvHitPower[egdMaster];//изначально параметры для других уровней сложности такие же
-
Документация: здесь Скачивание: возможно на официальном сайте, точно есть торрентах и прочих ресурсах Содержание: 1. Обзор архитектуры игрового движка .... 2. Практический пример ... Информация подготавливается....
-
Документация: здесь, здесь Скачивание: некоторые версия движка доступны для сводного скачивания в Интернете Сайт: здесь История версий игрового движка на 19.02.2015: Unity Базовый объект сцены – GameObject. Объекты GameObject являются контейнерами для других компонентов [Components]. По умолчанию всегда снабжается компонентом Transform. Компоненты добавляются, что бы внести в объект GameObject новую функциональность. Объекты GameObject поддерживают иерархию (родительский объект -> дочерние объекты). Unreal Engine 4 Базовый объект сцены - Actor Сам по себе Actor не содержит компонентов USceneComponent. Actor это базовый объект, который может быть представлен в сцене. Компоненты добавляются, что бы внести в объект Actor новую функциональность. Объекты Actor поддерживают иерархию (родительский объект -> дочерние объекты). Программисты могут наследоваться от UActorComponent для создания своих компонентов. Пример создания компонента: 2. Практический пример ... Информация подготавливается.... TSubobjectPtr<USceneComponent> SceneComponent = PCIP.CreateDefaultSubobject<USceneComponent>(this, TEXT("SceneComp"));RootComponent = SceneComponent;
-
Документация: здесь Скачивание: некоторые версия движка доступны для сводного скачивания в Интернете Сайт: здесь Одна из книжек: "CryENGINE Game Programming with C++, C#, and Lua" История версий игрового движка на 19.02.2015: Содержание: 1. Обзор архитектуры игрового движка .... 2. Практический пример ... Информация подготавливается....
-
Я кажись понял. Если не писать буфер глубины, то он задается по умолчанию для всех типов шейдеров с параметром LEqual Поэтому надо прописывать по умолчанию совсем другое значение или вообще его не прописывать. ------------- Тема с проблемой, не знаю зачем я её тут привожу, я не поленился и нашел её снова Пост эффекты для рендерер текстуры, а они все через эту специальную текстуру идут скорее всего со своей спецификой для кода движка Unity3d.Кто-то писал даже, что это чуть ли не баг и надеялись, что этот баг поскорее бы исправили, чтобы в шейдерах не писать ZTest. Я бы не стал советовать это тестировать, т.к. мне это не нужно. Задача выполнена.
-
Я понял. Те, кто писали на форумах, если не использовать проверку глубины буфера, то возникает черный эркан. Возможно это имеет значения на разных девайсах на множестве камер или еще что-нибудь... В официальных шейдерах потсэффектов пишут по дефолту. ZTest Always Cull Off ZWrite Off