Xipho Опубликовано 27 сентября, 2016 Поделиться Опубликовано 27 сентября, 2016 Хм, даже не видел этот пост. Впрочем, метод весьма распостраненный, и самый первый, что приходит в голову ) Так что неудивительно, что по одному алгоритму действовали ) А код, действительно, один в один как у меня ) Ну или у меня, как у него )) Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость Опубликовано 29 сентября, 2016 Поделиться Опубликовано 29 сентября, 2016 "Assassins Unity", "Assassins Syndicate", "The Crew" - под анестезией. Самый непокорный - "The Crew", принял целых 28 ! "таблеток". Менее затратный - "Unity" - для него хватило 15 ти. Самый тихий - "Syndicate", - 10 "таблеток". P.S. Кстати, можно копирнуть за полсекунды весь "Ехе" модуль еще до внедрения инструкций, чтобы не пришлось потом затирать изменения в псевдомодуле, удобно. * В "The Crew" я как то раз заморозил на одном месте какого то игрока (его машину), а это значит - разработчики так устроили игру, что я теперь имею полный контроль над всеми машинами, над их положением, над их скоростью Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 30 сентября, 2016 Поделиться Опубликовано 30 сентября, 2016 Молодец! Скрипты выложишь? Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость Опубликовано 30 сентября, 2016 Поделиться Опубликовано 30 сентября, 2016 7 часов назад, Xipho сказал: Скрипты выложишь? Если выложу, то Гарику не интересно будет самому доделать начатое. Либо он, в случае затруднения, воспользуется наработкой, и заполнит ею свои пробелы. Так что, сперва наперво поглядим на то что сделает Гарик. А там, как Бог устроит. Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость Опубликовано 1 октября, 2016 Поделиться Опубликовано 1 октября, 2016 Для Влада. Гарик - не читай пожалуйста! (пока сам не сделаешь). Сложности при обходе защиты. (бывшие со мной). 1 Неизвестность и неопытность Неизвестность и неопытность 2 Время Так как инструкция (к примеру первая), состоит из 7 ми байт - 11 22 33 44 55 66 77, то и бряки соответственно нужно ставить на каждый из этих адресов. Дебагер за раз может поставить всего 3 бряка (в "The Crew" DBK64 четвертый бряк замирает и не ищет). плюс к этому некоторые инструкции срабатывают спустя несколько минут (2 - 5). Нашли 27 инструкций (всего примерно 27 * 8 = 216 байт) 216 / 3 (за раз) = 72 раза по 3 бряка. 72 * 3 минуты = 216 минут. Не нашли и вроде все нормально со скриптами? Ставим на соседние байты (не принадлежащие нашим инструкциям) - опять время. А все из за одной 28 ой. (это к примеру). Бывает находится скоро. 3 Особенности CE Имеем инструкцию xor al,[rdx] 1 СЕ не может сравнить адрес из RDX таким способом (для 64 битных игр) cmp rdx Но может push rsi lea rsi,[rdx] cmp rsi 2 В СЕ для взятия адреса выделенной памяти (64 бит игра) лучше (обязательно) использовать MOV вместо LEA Вместо push rdi lea rdi,[Somealloc] Лучше использовать push rdi mov rdi,Somealloc 3. Если все написано правильно, но игра по прежнему крашится, необходимо проверить правильность записи инструкций в newmem, в месте прыжка, сравнить то что написали мы, и то что записал СЕ. 4 Ехе модуль * Размер Ехе файла не всегда соответствует размеру самого Ехе модуля, поэтому, при создании копии, длину выставлять не опираясь на данные файла. * Не обязательно копировать весь модуль Нашли 28 инструкций, посмотрели максимальное смещение от начала модуля, посмотрели максимальное смешение для инструкций самих читов (если таковые уже имеются, если нет, то потом можно увеличить копию в длине для них). Максимальное смещение 80 000 00 Копируем 100 000 00 Сравниваем до 90 000 00 push rsi push rdi lea rsi,[rdx] lea rdi,["TheCrew.exe"+9000000] cmp rsi,rdi pop rdi pop rsi jge NotCrewexeBytes * Сделали копию, необходимо проверить. Берем максимальное смещение 100 000 00, и идем смотреть что по этому смешению в сделанной копии - если что то есть, и это что то подобно тому что и в оригинальном модуле по этому же смещению, - с копией все нормально. Если делать копию методом что и у Xipho, как я сперва делал, то как мне кажется, удобнее и проще затереть в ней изменения так: Скрытый текст push rcx push rsi push rdi lea rsi,["ACU.exe"] lea rdi,["PLACE_ACU_clone"] mov rcx,05F5E100 //hex value of "alloc(PLACE_ACU_clone,100000000)" repe movsb pop rdi pop rsi pop rcx //1 первая инструкция - затирание 16 байт (для подстраховки) mov ["PLACE_ACU_clone"+55D741F],E9F90232 mov ["PLACE_ACU_clone"+55D7423],0000069C mov ["PLACE_ACU_clone"+55D7427],FF5926E9 mov ["PLACE_ACU_clone"+55D742b],108966FF //2 вторая mov ["PLACE_ACU_clone"+7F48],A8F50232 mov ["PLACE_ACU_clone"+7F4c],C283483F mov ["PLACE_ACU_clone"+7F50],F58E0F01 mov ["PLACE_ACU_clone"+7F54],FF055C1E // и т д Другое дело если запатчат игру, то такое затирание уже не будет работать правильно. Но, для тех кто еще не сделал даже сам обход, такой метод даст более уверенную гарантию на то, что с этой частью кода все нормально. А далее когда защита будет отключена, можно уже и адаптировать под патч и под прыжки. Сделать аоб на инструкции, на прыжки, и прочее. mov eax,[rax] jmp ACU.exe+55CD910 * И еще куча всяких мелких сложностей, как то не внимательность, забывчивость. Бывало ставил в каждой инструкции "стражей", которые бы показывали какая инструкция в данный момент работает, это тогда когда нашел 27 из 28. 27 ая инструкция самая хитросплетенная. Воспользовалась тем что у меня не очень острое зрение. Её вид - 83D А вид четвертой, уже известной - B3D "B" и "8". Но она скоро была разоблачена, когда все 26 стали сканить копию, а она одна по прежнему приходила в оригинал. И, в момент вылета, DBK64 сделал свое дело. 28 мая тоже не айс, проверяла при загрузке из меню игры в саму игру, и спустя некоторое время в самой игре. Также как и 27,в те же сети. Ссылка на комментарий Поделиться на другие сайты Поделиться
elvis66666 Опубликовано 1 октября, 2016 Поделиться Опубликовано 1 октября, 2016 AntonVit, круто! Еще сам не сталкивался с защитами, но было очень интересно почитать. Ссылка на комментарий Поделиться на другие сайты Поделиться
Vlad2 Опубликовано 2 октября, 2016 Автор Поделиться Опубликовано 2 октября, 2016 (изменено) В 01.10.2016в14:09, AntonVit сказал: //1 первая инструкция - затирание 16 байт (для подстраховки) mov ["PLACE_ACU_clone"+55D741F],E9F90232 mov ["PLACE_ACU_clone"+55D7423],0000069C mov ["PLACE_ACU_clone"+55D7427],FF5926E9 mov ["PLACE_ACU_clone"+55D742b],108966FF Может еще для большей простоты можно сделать так: "PLACE_ACU_clone"+55D741F: db 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF // Сюда вставлять байты оригинальной инструкции Изменено 2 октября, 2016 пользователем Vlad2 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость Опубликовано 2 октября, 2016 Поделиться Опубликовано 2 октября, 2016 (изменено) 2 часа назад, Vlad2 сказал: Может еще для большей простоты можно сделать так: "PLACE_ACU_clone"+55D741F: db 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF // Сюда вставлять байты оригинальной инструкции Так проще, но так не будет работать. Чтобы СЕ понял в точности что от него требуется, лучше для каждого скрипта из 28, создать свой отдельный "alloc". // для 1 инструкции alloc(PLACE_ACU_clone,100000000) registersymbol(PLACE_ACU_clone) // для 2 инструкции alloc(PLACE_ACU_2_clone,100000000) registersymbol(PLACE_ACU_2_clone) // для 3 инструкции alloc(PLACE_ACU_3_clone,100000000) registersymbol(PLACE_ACU_3_clone) и т. д. Что если все 28 инструкций будут выделять память, с одним и тем же именем. Мы получим, 28 новых локаций, хоть и имя мы указывали одно, и локацию мы ожидали всего одну. СЕ для себя определит начальные адреса каждой локации, мы нет. Мы имеем только одну метку "PLACE_ACU_clone". Для того чтобы узнать и нам адреса всех локаций, мы будем вынуждены переходить в каждый newmem и от туда уже брать нужный нам адрес. Вывод, - для каждой инструкции, свое имя локации. Чтобы активировать скрипты, необходима заморозить игру. Есть например программа "Process Explorer", в ней если кликнуть правой кнопкой на процесс и выбрать "Suspend", игра заморозится, для разморозки, - кликаем на "Resume". Мы же с вами воспользуемся опцией самого СЕ, опцией Pause() - для заморозки, Unpause() - для разморозки. Но это для Lua, - вешать на кнопку или другой подобный объект управления активацией. Для временного тестирования скриптов, достаточно в - настройки / горячии клавиши / пауза - прописать F12, например. СЕ не понимает когда от него требуют сравнить регистр и метку, а или и понимает, но не так как того хотим мы. Поэтому при сравнении, используем только регистры. Которые должны быть заблаговременно чем то нам нужным заполнены. И последнее, используем "датчики" для контроля происходящего. Создаем в скриптах маленькие локации по 8 !!! байт, (в таблице также 8 и HEX). Скрытый текст alloc(Datchic1,8) registersymbol(Datchic1) alloc(Datchic2,8) registersymbol(Datchic2) alloc(Datchic3,8) registersymbol(Datchic3) alloc(Datchic4,8) registersymbol(Datchic4) alloc(Datchic5,8) registersymbol(Datchic5) alloc(Datchic6,8) registersymbol(Datchic6) push rcx push rsi push rdi mov rsi,"TheCrew.exe" mov [Datchic1],rsi // проверяем что в регистре, смотря на значение в таблице mov rdi,"PLACE_TheCrew_clone" mov [Datchic2],rdi // проверяем что в регистре, смотря на значение в таблице mov rcx,055D4A80 // 90 000 000 repe movsb pop rdi pop rsi pop rcx // Востанавливаем байты mov ["PLACE_TheCrew_clone"+9EC7A],48F50232 mov ["PLACE_TheCrew_clone"+9EC82],E901C283 SkipCopy: push rsi lea rsi,[rdx] mov [Datchic3],rsi // проверяем что в регистре, смотря на значение в таблице cmp rsi,TheCrew.exe // так не сравниваем, сравниваем только регистр с регистром //push rbp //lea rbp,["TheCrew.exe"] //cmp rsi,rbp //pop rbp //jb originalcode // я использовал "jle" и "jge". "jge" будет отображатся как "jnl" что совсем не страшно. Можно записать сразу "jnl" //push rbp //lea rbp,["TheCrew.exe"+04C4B400] //cmp rsi,rbp //pop rbp //ja originalcode jb originalcode cmp rsi,TheCrew.exe+04C4B400 // 80 000 000 ja originalcode Изменено 2 октября, 2016 пользователем AntonVit ... Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость Опубликовано 2 октября, 2016 Поделиться Опубликовано 2 октября, 2016 The Crew - Bipets life Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 2 октября, 2016 Поделиться Опубликовано 2 октября, 2016 В 25.09.2016в20:04, Garik66 сказал: на следующей неделе будут длинные выходные (т.е. и суббота и воскресенье) Ни фига не дали выходных , так что сегодня ещё не много покопался, но пока окончательного результата не добился. Попробую в следующие субботу и воскресенье. Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 2 октября, 2016 Поделиться Опубликовано 2 октября, 2016 Написал скрипт для 9, обнаруженных мною проверок, но по-видимому их больше. Так что посмотрю на следующих выходных. Скрипт перепроверил - копия exe -ника создаётся и восстанавливается до оригинала: Ссылка на комментарий Поделиться на другие сайты Поделиться
Vlad2 Опубликовано 4 октября, 2016 Автор Поделиться Опубликовано 4 октября, 2016 У меня получилось найти только 22 проверки из 28, остальные 6 никаким образом не находятся, если даже бряки держать по 10 минут. При внедрении скриптов на все эти 22 инструкции, игра все равно вылетает. Вылет происходит во время копирования ехе файла, соответственно дело до затирания прыжков оригинальными байтами не доходит. Следовательно предполагаю, что какая-то из неизвестных 6 проверок обнаруживает изменение в коде и вызывает краш. Но как найти эти остальные 6 проверок? Ведь если игра вылетает сразу, то можно предположить, что эти проверки выполняются ежесекундно, но почему то бряки на них не срабатывают . Ссылка на комментарий Поделиться на другие сайты Поделиться
Vlad2 Опубликовано 5 октября, 2016 Автор Поделиться Опубликовано 5 октября, 2016 В общем, у меня все получилось, но только 22 проверки были найдены. Почему до этого вылетало всё не могу понять, но когда я написал скрипт, который копирует ЕХЕ файл и выполнил этот скрипт отдельным потоком, а потом уже в эту копию ехе отправил проверки, тогда все заработало) Теперь не придется затирать прыжки оригинальными байтами, тк был скопирован чистый ехе файл. Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 5 октября, 2016 Поделиться Опубликовано 5 октября, 2016 5 часов назад, Vlad2 сказал: В общем, у меня все получилось Тоже сделал. (но для Assassins Creed Unity). Скрипт - 426 строк кода. Проверок 9 штук. Некоторые нюансы с 8-байтными адресами (скорее всего это ограничение СЕ). Ну и в некоторых местах скрипта моя невнимательность - не там восстанавливал используемый регистр и в двух местах при копировании кода спутал регистр. Попробую сегодня записать видео и сюда выложу ссылку на тему. Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 5 октября, 2016 Поделиться Опубликовано 5 октября, 2016 3 часа назад, Garik66 сказал: Попробую сегодня записать видео и сюда выложу ссылку на тему. Здесь. Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость Опубликовано 5 октября, 2016 Поделиться Опубликовано 5 октября, 2016 12 часа назад, Vlad2 сказал: В общем, у меня все получилось, но только 22 проверки были найдены. Почему до этого вылетало всё не могу понять, но когда я написал скрипт, который копирует ЕХЕ файл и выполнил этот скрипт отдельным потоком, а потом уже в эту копию ехе отправил проверки, тогда все заработало) Теперь не придется затирать прыжки оригинальными байтами, тк был скопирован чистый ехе файл. И что, эта тема и закончится лишь тем, что Ты нам сообщишь о своем успехе? Где скрипты, где слова благодарности всем тем кто помогал, писал, болел (наверно). Выложи, объясни, заверши прилично открытую Тобою тему. Не будь только потребителем. Не слышишь ли слова Администратора "Скрипты выложишь?"? Ссылка на комментарий Поделиться на другие сайты Поделиться
LIRW Опубликовано 5 октября, 2016 Поделиться Опубликовано 5 октября, 2016 Интересный подход к делу. Я конечно не пробовал не разу это дело в силу того, что ну не нуждался в этом (Так как игры не попадались ещо подобные в интерес мне) но не постесняюсь спросить а почему именно на доступ ставим, а не на запись ? Ведь если рассуждать логически, то защита то одна и наверное глупо делать 20 штук в одной игре - не так ли ? Это же не что подобное той же жизни в игре - когда мы ставим бряк на доступ, то выпадает бывает около 20 инструкций, а то и больше - не правда ли но это не значит, что все их надо править и записывать в каждую 100 HP - достаточно одной и это та, которая идет на запись и вот запиши в неё 0 она перебьёт все остальные инструкции в каком бы интервале они не считывались. А это получается, надо точно выявить нужную инструкцию и с ней работать, но так как (мы) не особо то соображаем как эта защита работает, то мы берем и правим всё что выпадает после BP делаем скрипт, врубаем и радуемся ведь так оно и есть ведь на самом деле. Это можно сравнить с тем, как сломать тот же телевизор и сделать так, что бы он не работал. Кто то полезет в него (это в нашем случаи с большим количеством инструкций) и будет от туда выпаивать детали до тех пор, пока он работать не перестанет, а кто то просто из корню вилку отрежет и его уже не включишь. Я конечно понимаю, что поставив на запись BP может не чего и не выпасть, но всё равно ведь это дело то работает и окончательный результат куда то пишется. Весь вопрос наверное и состоит в том "Куда?" PS: Это можно сказать просто мысли о том, о чем бы я подумал когда полез в эту защиту. Я конечно понимаю, что наверное не только я задался этими мыслями ковыряясь в этой защите, но и пробовали другие участники форума, но не чего не вышло, а по этому сделали так, как получилось. Щас игра попалась "Aliens vs Predator" 2010 - там не знай что за защита, может не что подобное. Утром тоже попробую - если она у меня пойдет на моей карте! Ссылка на комментарий Поделиться на другие сайты Поделиться
partoftheworlD Опубликовано 6 октября, 2016 Поделиться Опубликовано 6 октября, 2016 (изменено) А нельзя, например, найти саму функцию, которая проверяет код и просто пропатчить результат который вызывает падение игры? Черт, из-за всех этих интересностей с этим обходом появилось желание по ковырять игру. Не буду больше ночью заходить на форум из-за всего этого сон как рукой сняло. Изменено 6 октября, 2016 пользователем partoftheworlD Ссылка на комментарий Поделиться на другие сайты Поделиться
RAMIRO Опубликовано 14 октября, 2016 Поделиться Опубликовано 14 октября, 2016 В 05.10.2016в10:22, Vlad2 сказал: В общем, у меня все получилось, но только 22 проверки были найдены. Почему до этого вылетало всё не могу понять, но когда я написал скрипт, который копирует ЕХЕ файл и выполнил этот скрипт отдельным потоком, а потом уже в эту копию ехе отправил проверки, тогда все заработало) Теперь не придется затирать прыжки оригинальными байтами, тк был скопирован чистый ехе файл. Уважаемый Vlad2 Можно немного поподробней как вы это все реализовали со скриншотами, у меня w10x64 брейк поинты ловит но при создание скриптов отключает от сервера , сама защита игры лежит в systemdetection64.dll и при запуске она прописывается в exe игры, так же она палит отладчик. настройки у меня стоят такие в CE http://prntscr.com/cttamt http://prntscr.com/cttaxv + активирован режим DBVMv10 http://prntscr.com/cttbjq Ссылка на комментарий Поделиться на другие сайты Поделиться
RAMIRO Опубликовано 15 октября, 2016 Поделиться Опубликовано 15 октября, 2016 Народ нашло много инструкций делал на нитро это норма мне теперь на все инструкции Обход защиты целостности кода делать по примеру Garik66 bypass? Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 15 октября, 2016 Поделиться Опубликовано 15 октября, 2016 1 час назад, RAMIRO сказал: Народ нашло много инструкций делал на нитро это норма мне теперь на все инструкции Обход защиты целостности кода делать по примеру Garik66 bypass? Это инструкции срабатывающие на адресе самого нитро, а не инструкции проверок. Пересмотрите видео по новой. Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость Опубликовано 15 октября, 2016 Поделиться Опубликовано 15 октября, 2016 Я искал значение нитро в этой игре, но ничего не нашел. Искал по разному, - и на уменьшилось когда уменьшилось, и на увеличилось когда уменьшилось. И на изменилось, и не изменилось. Либо значение нитро шифруется и передается с сервера, либо также шифруется и передается со стороннего процесса. Почему так решил, - потому что если убавить нитро на 70% (к примеру), и заморозить процесс игры, далее выждать 20 секунд (время необходимое на полное заполнение нитро баллона), после всего этого разморозить игру, - то в итоге мы увидим что баллон с нитро будет уже полный. (когда бы он успел заполниться если игра и все данные игры были полностью заморожены). * Заполняется баллон с нитро в игре автоматически и постепенно, ничего особого делать не нужно. Вот и Sethioz, похоже также не смог найти нитро, после того как игру обновили. В его прежнем трейнере есть эта опция, а в следующем уже нет. RAMIRO обошел и меня и Sethioza, осталось обойти теперь только защиту.... Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 15 октября, 2016 Поделиться Опубликовано 15 октября, 2016 1 час назад, RAMIRO сказал: Народ нашло много инструкций делал на нитро это норма мне теперь на все инструкции Обход защиты целостности кода делать по примеру Garik66 bypass? Я же Вам уже об этом на Тюбе писал. Вы не туда копаете. Пересмотрите видео, чтобы понять. Ссылка на комментарий Поделиться на другие сайты Поделиться
RAMIRO Опубликовано 15 октября, 2016 Поделиться Опубликовано 15 октября, 2016 39 минуты назад, AntonVit сказал: Я искал значение нитро в этой игре, но ничего не нашел. Искал по разному, - и на уменьшилось когда уменьшилось, и на увеличилось когда уменьшилось. И на изменилось, и не изменилось. Либо значение нитро шифруется и передается с сервера, либо также шифруется и передается со стороннего процесса. Почему так решил, - потому что если убавить нитро на 70% (к примеру), и заморозить процесс игры, далее выждать 20 секунд (время необходимое на полное заполнение нитро баллона), после всего этого разморозить игру, - то в итоге мы увидим что баллон с нитро будет уже полный. (когда бы он успел заполниться если игра и все данные игры были полностью заморожены). * Заполняется баллон с нитро в игре автоматически и постепенно, ничего особого делать не нужно. Вот и Sethioz, похоже также не смог найти нитро, после того как игру обновили. В его прежнем трейнере есть эта опция, а в следующем уже нет. RAMIRO обошел и меня и Sethioza, осталось обойти теперь только защиту.... Sethioz читы лепает по изи способам т.к американцы глупей нас во взломе инфа 100 ,мы же русские не ищем легких путей и пробуем изощренные способы взлома. Игровые значение можно солидно выдирать с помощью process hacker потом через CE оттискивать что нужно пруф Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 15 октября, 2016 Поделиться Опубликовано 15 октября, 2016 2 часа назад, RAMIRO сказал: Народ нашло много инструкций RAMIRO, если у Вас есть веб-камера, то специально для таких случаев - регистрировал аккаунты в Скайпе, а то писать нужно много. И если сейчас есть время, давайте объясню, как делать по Скайпу. Жду ответа. Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения