Сейчас на форуме: Slinger (+6 невидимых) |
eXeL@B —› Основной форум —› Помогите сломить дух Bubble Shooter Deluxe |
Посл.ответ | Сообщение |
|
Создано: 11 января 2007 16:14 · Личное сообщение · #1 Игра Bubble Shooter Deluxe v 1.8 (ссылку в инете не дам, качал из локалки) Итак, чтобы вы не думали, что я ничего не предпринимал я расскажу что я вообще пытался делать: 1. PEiD говорит Armadillo 3.78 - 4.xx -> Silicon Realms Toolworks (сомневаться в этом у меня причин не было).
2. Натравил на игру сначала DilloDie 1.6, в итоге он отработав выплюнул мне ехе-шник. При запуске этого файлика ничего не происходит (вообще ничего, т.е. запуск-выход). 3. Открыл полученный от DD файл в ольке - создается два потока, отрабатывает один и выбрасывает код возврата 0xFF (255), второй тут же закрывается. Странно подумал я.... 4. Попробовал сделать полуавтомат, с дампом через Armadillo Dumper 1.0 и последующем восстановлением IAT (при момощи лога от DD) через ImpREC. На выходе получил то же самое что от DD, запуск и остановка. 5. Хорошо, подумал я, попробуем ещё разок. Натравив на злую игру Armadillo find protect я узнал вот что: !- Protected Armadillo
6. Ну вот, я начал всё делать руками, запустил олю и дошел до места вставки DebugActiveProcessStop, все отработало. Я запустил еще одну копию оли, приаттачился к дочке, восстановил стартовые байты, сделал скрытие от обнаружения, поставил бряк на CreateThread. 7. Запустил (первое что мне показалось странным, оля попросила резюмить главный поток, видимо кто-то его суспендил, точно не я =). Ну ладно, резюмнули, брякнулись. Дошли до точки возврата и прыгнули по F7 в нашу игру. 8. Вот и все, на этом все и заканчивается, ибо дойти до следующего RET как говорят туторы (а в них он вообще через две строчки) не представляется возможным, если по Ctrl-F9 то просто вываливается наг-окно, все с теми же 60-ю минутами, и спокойно запускается игра и это все не дойдя до RETN. 9. А если трассировать F8 то там куча мусора, много нераспознанных команд и нету вообще RET в обозримом будущем. Как будто крутиться вечный цикл. Постоянно вызывается WaitForDebugEvent, ContinueDebugEvent и прочая фигня. А теперь внимание - вопрос! Какого, простите мой французский, рожна хочет эта игрух?! Подскажите в каком направлении копать дальше, ибо я бился бился, бился бился и ничего не могу понять! F1 мне уважаемые знатоки! Plz |
|
Создано: 11 января 2007 16:28 · Поправил: Vovan666 · Личное сообщение · #2 |
|
Создано: 11 января 2007 22:06 · Поправил: Freecod · Личное сообщение · #3 |
|
Создано: 11 января 2007 22:53 · Личное сообщение · #4 |
|
Создано: 12 января 2007 00:08 · Личное сообщение · #5 |
|
Создано: 12 января 2007 02:57 · Личное сообщение · #6 Spirit Вот как раз и хочу сам! =) Знаю что валяются и кряки есть, но я ради опыта. Но вот наткнулся на такую беду... KingSise Вот нашел версию 1.8, ссылка на скачку (2.6 МБ): zip-архив http://pdassi.de/util/getdownload.php/?id=44824 Ссылка на страницу с игрой: ссылка http://misco.pdassi.de/windows/product.php?SID=81e343cf5c510d7631a59c92024143e4&prod_id=22996&SID=81e343cf5c510d7631a59c92024143e4 Выручайте!! |
|
Создано: 12 января 2007 04:05 · Личное сообщение · #7 Vovan666 Игра (распаковання) действительно запустилась, но окно с напоминанием о времени не исчезло, попробую сейчас еще "исследовать" на серийник, чтобы зарегестрироваться, посмотрим, что будет. За подсказку большое спасибо. 1. Но все же остается вопрос о ручной распаковки, кто нибудь может помочь? А то как-то зацепило и не отпускает %) 2. Да и что делать с этим ArmAccess.dll? Как убрать окно с отсчётом времени? |
|
Создано: 12 января 2007 04:11 · Личное сообщение · #8 |
|
Создано: 12 января 2007 07:01 · Поправил: KpeHDeJIb · Личное сообщение · #9 Написал свою фейковую armaccess.dll с экспортом всех функций. В этой фейковой длл-ке я сделал месадж бокс с выводом парметров при вызове функций. В итоге выяснил, что вызываются функции InstallKey и UpdateEnvirnoment (при трассировке проги к этим двум подгружалась еще IncrementCounter, но она почему то не вызывалась). И вот что-то я непойму, что мне дальше делать? Проблема-то таким способи не решается! Сорсы в асме (MASM32) и фейковая длл-ка (без вывода месадж бокса) в аттаче. 09f2_12.01.2007_CRACKLAB.rU.tgz - armaccess.zip |
|
Создано: 12 января 2007 09:50 · Личное сообщение · #10 |
|
Создано: 12 января 2007 10:04 · Личное сообщение · #11 |
|
Создано: 12 января 2007 11:54 · Личное сообщение · #12 AHTOH TAPAKAHOB Вообще-то стало даже уже интересно, что за фигня происходит в этой игре, хочется разобраться и понять! Конечно можно сидеть и ждать когда напишут тебе и кряк и кейген, но разве это дело? Вобщем я тут потихоньку еще разбераюсь: 1. Наше все запросы к переменным окружения (около 6 штук) и через фейковую библиотеку навставлял туда всякой фигни (то, что там могло бы быть), в итоге в распакованную игру стало можно играть, но все еще появляется наг и игра, разумеется, не зарегестрирована. 2. Наше место с которого начинается проверка введеных регистрационных данных (у меня 00454FB1, распакованная прога с потертыми секциями армы), но я что-то там путаюсь, анализировал в IDA, мало что понятно. Отсюда вопросы, можно ли как-нибудь вообще такими подставными данными сбить игру с толку или надо патчить место где эти данные проверяются в самой игре (через GetEnvironmentVariableA и дальнейшую обработку)? Подскажите хотя бы направление в котором копать! Заранее большое спасибо. |
|
Создано: 12 января 2007 12:10 · Личное сообщение · #13 |
|
Создано: 12 января 2007 14:08 · Личное сообщение · #14 |
|
Создано: 12 января 2007 15:40 · Личное сообщение · #15 Спасибо всем кто помог и направил =) Игра взята штурмом, до написания кейгена для игры мне конечно далеко, но я таки нашел то место где она проверяется на зареганность, это один байтик который должен быть равен 0, меняем одну инструкцию котоаря его записывает и все работает. В аттаче крякнутый ехе-шник с фейковой либой ArmAccess.dll а также исходник либы с описанием шагов взлома, если будут вопросы - я отвечу, но это скорее я тут, чтобы задавать вопросы =) 58db_12.01.2007_CRACKLAB.rU.tgz - bsd18_crack.rar |
|
Создано: 12 января 2007 16:16 · Личное сообщение · #16 |
|
Создано: 13 января 2007 12:01 · Поправил: KpeHDeJIb · Личное сообщение · #17 KingSise Искал долго и упорно (: Не буду описывать здесь все перепробованные варианты, останавлюсь сразу на последнем, который привел меня к злосчастному байту. Итак, всё что нам понадобится это распакованная игра BSD v1.8 (чтобы там была отключена проверка armaccess.dll или была эта длл-ка), OllyDbg и IDA (я использовал прямо отсюда, с cracklab). Приступим, запускаем IDA и натравливаем его на нашу игру, после процесса анализа идем в окно строк программы давим на клаве Alt-T и вводим "minutes", жмем ентер и попадаем на строчку "%d minutes left' Вы наверное уже догадываетесь куда я клоню, дело в том, что при запуске игры вылетает наг со строкой "... minutes left" и я подумал, почему бы не поискать по этой строчке, может выду в место проверки. Ок, два раза щёлкаем по найденной строчке и попадаем в окно IDA View, где к нашей строке ида уже прикуртила символьную метку, отлично, жмём метку правой кнопкой мыши и выбераем "Jump to xref" так мы найдем места в коде, которые ссылаются на эту строку. В списке ссылок оказывается только одна функция, в неё мы и переходим. Ида выкенет нас в место использования этой строки, на экране должен нарисоваться граф переходов, побегав по нему мышкой и глазами выясним что здесь присутствуют ссылки и на другие строки с возможными ограничениями. Хорошо, видимо здесь может быть ветка идущая в обход всех предупреждений. И, о чдо, она есть, причем перед ней стоит несолько команд которые говорят о явной проверке опредленного значения: movzx eax, byte_XXXXXX ;< где XXXXXX - это адрес байта в памяти после запуска игры
Благослави Бог создателя иды (: Итак, кликаем правой кнопкой на этом байте byte_XXXXXX и смотрим на кучу ссылок (кстати, можно обратить внимание, что во втором столбце идет квалификатор доступа на наш байт из указанного места, т.е. read или write). Побегав по ссылкам я сделал логгичный вывод, что этот байтик часто проверяется как раз перед критичными секциями. Причём всё указывает на то, что если byte_XXXXXX == 0,то игра ведё тсебя как зареганная, т.е. не выдаёт ужасных окон с ужасными надписями (что-то вроде "регистрируйся или умри!"). Вообще-то можно прямо из иды посмотреть кто у нас пишет в этот байт и сделать так, чтобы он всегда был равен 0, но я поступил порще (не хотелось делать замену куче байтов). Я зашел в олю и поставил хардварный бряк на этот байт в памяти по записи, потрейсил прогу и оказалось, что на запись игра обращается к байту только один раз, именно это место я подправил (и описал в начале исходника своей фейковой длл-ки). Вообще-то можно было еще повозиться, может даже кей-ген выдернуть, но я новичок в крекинге и мне этого результата хватило с лихвой, потому что это всего лишь вторая нормальная игра исследованием которой я занимался, все остальные были довольно простыми (потому что русскими сделаны были, не любят почему то наши в большинстве своём серъёзной защиты =)). Опять же если будут вопросы - пишем мне в ЛС или прямо тут. (: зы: Почикал весь написанный мною в "зы" обильный оффтоп о взломе первой игры, оставляю только название - Pop! The balloon dog |
|
Создано: 16 января 2007 06:58 · Поправил: KpeHDeJIb · Личное сообщение · #18 Итак, тут на днях вернулся к играм от компании Absolutist, ну раз одна "пошла" и другие думаю пойдут, так и есть (: У этой компании два метода защиты своих игр, как я понял на более старых стоит ReflexiveArcade защита, которая в данном случае ломается через отлов ReadProcessMemory и WriteProcessMemory (метод уже постили в этом форуме), а вот с новыми поинтереснее, на них стоит Armadillo 3.78 - 4.xx которая легко снимается DilloDIE 1.6, после удаления ненужных секций получапется файлик такого же размера как исходный или еще меньше. Дальше идут танцы с бубном, опишу метод слома подходящий под все игры этой компании на защите Armadillo. 1. Распакуем игру, порежем лишние секции (чтобы размер поменьше был). 2. Открываем игру в IDA и ищем кусок вызова LoadLibraryA (через xref на эту функцию) с последующим вызовом 3-х GetProcAddress, вставляем сразу после входа в функцию возврат из нее, т.е. первые байты функции (обычно push ebp) меняем на C9 C3 (leave, retn). Так мы отучим игру от ArmAccess.dll. 3. Разбираемся с регистрацией, там же в IDA ищем функцию с кучей вызовов GetEnvironmentVariableA (вызывается для армовских ALTUSERNAME и прочих). Смотрим в конец этой здоровой функции, там идет получение адреса какой-то переменной, потом запись в ecx некоторых данных и уже перед самым выходом запись регистра ecx в эту переменную. Первые две инструкции найденной функции оставляем (push ebp, mov ebp,esp), а дальше сразу вставляем кусок кода из конца функции, т.е. получаем адрес переменной (mov eax, [ebp+xxx]), но после подменям записываемое в ecx значение на 1 (т.е. mov cl,1), потом записываем данные в переменную (mov [eax+xxx], cl) и сразу выходим (leave, retn). 4. Запускаем игру и радуемся (: Вопросы, как обычно, мне. ЗЫ: Ясность выражения мыслей оставляет желать лучшего, это я знаю, но спсоб у меня сработал на всех играх Absolutist'а с армой (: ТОЛЬКО будте внимательны, некоторые игры требует не mov cl,1 а mov cl,0, можно впринципе опытным путем выяснить! ЗЗЫ: Если кто кейген выдернет, и научит меня, буду ОЧЕНЬ признателен (: вопрос ко всем: Могу написать небольшой тутор по обеим вариантам защиты этой компании, просто если народу будет интересно и новчикам, таким как мне, немного поможет на этапе становления (: Вопрос, есть ли резон это делать (т.е. разжевать шаги)? |
|
Создано: 16 января 2007 08:53 · Личное сообщение · #19 KpeHDeJIb пишет: Могу написать небольшой тутор ты его и так уже написал... KpeHDeJIb пишет: т.е. разжевать шаги куда уж больше разжевывать - глотать уже надо... от себя для новичков добавлю: для снятия враппера reflexive тузл достаточно, но я предпочитаю дрю вариант: во всех (виденных мной) играх пакованных враппером от reflexive есть код: 00404C9E |> E8 CD2A0000 CALL Chameleo.00407770 00404CA3 |. 84C0 TEST AL,AL 00404CA5 |. 74 0E JE SHORT Chameleo.00404CB5 00404CA7 |. 8BCE MOV ECX,ESI 00404CA9 |. E8 E4E7FFFF CALL Chameleo.00403492 00404CAE |. 68 A5454000 PUSH Chameleo.004045A5 00404CB3 |. EB 1C JMP SHORT Chameleo.00404CD1 00404CB5 |> D946 18 FLD DWORD PTR DS:[ESI+18] 00404CB8 |. D81D D0924200 FCOMP DWORD PTR DS:[4292D0] 00404CBE |. DFE0 FSTSW AX 00404CC0 |. F6C4 41 TEST AH,41 00404CC3 |. 75 07 JNZ SHORT Chameleo.00404CCC 00404CC5 |. 68 783D4000 PUSH Chameleo.00403D78 00404CCA |. EB 05 JMP SHORT Chameleo.00404CD1 00404CCC |> 68 32424000 PUSH Chameleo.00404232 00404CD1 |> 8BCE MOV ECX,ESI ; | 00404CD3 |. E8 09E7FFFF CALL Chameleo.004033E1 ; Chameleo.004033E1 00404CD8 |. 8D85 10FEFFFF LEA EAX,DWORD PTR SS:[EBP-1F0] 00404CDE |. 50 PUSH EAX ; /pFindFileData 00404CDF |. 68 CCDE4200 PUSH Chameleo.0042DECC ; |FileName = "ExpireIn10.txt" 00404CE4 |. FF15 50914200 CALL DWORD PTR DS:[<&KERNEL32.FindFirstFileA>] ; FindFirstFileA 00404CEA |. 8BF8 MOV EDI,EAX причем адреса почти всегда эти же KpeHDeJIb посмотри в старых играх от Absolutist адреса? лечиво: по адресу 404CA5 JE SHORT 404CB5 - выполнится если незареганы -> нопим или лучше меняем байты 740E на 7400, т.е. изменится 1 байт. если адреса дрю, то ищем текст стринг ExpireIn10.txt или функцию KERNEL32.FindFirstFileA и далее тоже самое... кста универсального патчера по данному методу я не видел (а может и обычный ко всем играм поканает). можно замутить патчер, кот. патчит всего 1 байт. сэнкс pe_kill за анвраппер - весчь! P.S. KpeHDeJIb пишет: Первые две инструкции найденной функции оставляем (push ebp, mov ebp,esp), а дальше сразу вставляем кусок кода из конца функции посмотрел -> лучше там джамп замутить, чем перемещать уже имеющийся код, нужно будет только пофиксить mov cl,1 и еще после нажатия на выход предлагают скачать дрю игры -> наг! - я обычно такие убираю - у рефлексива я в обход ShowWindow прыгал на ExitProcess (фиксятся два байта в call.ShowWindow) и еще еще надпись Registered to пробел - либо фиксить ник, либо полностью затереть в дампе... |
|
Создано: 16 января 2007 09:41 · Личное сообщение · #20 |
|
Создано: 16 января 2007 10:19 · Поправил: KpeHDeJIb · Личное сообщение · #21 gegter пишет: и еще после нажатия на выход предлагают скачать дрю игры -> наг! - я обычно такие убираю - у рефлексива я в обход ShowWindow прыгал на ExitProcess (фиксятся два байта в call.ShowWindow) и еще еще надпись Registered to пробел - либо фиксить ник, либо полностью затереть в дампе... Да я делал jmp, но это впринципе без разницы, а так патчить проще (: Регистред да, я делал это через фейковую длл-ку, но раз её убираем, то ничего и не грузиться (: Кого смущает строка - можно и подправить. gegter пишет: причем адреса почти всегда эти же KpeHDeJIb посмотри в старых играх от Absolutist адреса? лечиво: по адресу 404CA5 JE SHORT 404CB5 - выполнится если незареганы -> нопим или лучше меняем байты 740E на 7400, т.е. изменится 1 байт. если адреса дрю, то ищем текст стринг ExpireIn10.txt или функцию KERNEL32.FindFirstFileA и далее тоже самое... кста универсального патчера по данному методу я не видел (а может и обычный ко всем играм поканает). можно замутить патчер, кот. патчит всего 1 байт. сэнкс pe_kill за анвраппер - весчь! Способ, конечно, работает, но в этом случае остается много ненужных файлов, например директоря ReflexiveArcade и файл, который ранее был зашифрован, после расшифровки он заменяет оригинальный exe. Плюс наг окно само по себе не запускается. В случае с армой, у них в играх после выхода отображается наг окно, которое в зарегестрированной версии позволяет себя отключить. (: Я вот подумал, может написать универсал патчер, но неохота сразу над обеими защитами париться, написать на арму можно (на уже распакованную, благо этот процесс проходит на автомате). gestapo пишет: да уж,нашёл что ломать думаю польза от твоего тутора будет нулевая... Ну почему же нулевая, кто-то и до этого не доходит. Это ведь не для профи, а для начинающих, причем совсем начинающих. Я понимаю конечно, что здесь очень частный случай, но ведь и он может встретиться где-нибудь. А то что мне говорили - везде полно кряков и кейгенов, я вот ни одного работающего не нашел ): Отсюда вывод - польза будет, может и небольшая, но это уже другой вопрос (: зы: Забавный факт, но таймер отсчета времени в играх запакованых армой все равно идет, причем идет в "-", я посмотрел оригинальную версию (распакованную, иначе не запускается), она показывает отрицательное время (: |
|
Создано: 17 января 2007 01:56 · Личное сообщение · #22 KpeHDeJIb пишет: Способ, конечно, работает дык адреса те же?? KpeHDeJIb пишет: но в этом случае остается много ненужных файлов а если зарегать прогу офф ключиком, то их убавится? или ты хочешь все игрушки почистить ? я лишь привел наиболее быстрый вариант пропатчивания игр 1 байтом... P.S. посмотрел тут дрю игру - Alien Shooter v1.2 full так в ней адресок другой - 403F2E JE SHORT 00403F3E - 740E -> 7400 |
|
Создано: 17 января 2007 02:40 · Личное сообщение · #23 KpeHDeJIb пишет: Забавный факт, но таймер отсчета времени в играх запакованых армой все равно идет, причем идет в "-", я посмотрел оригинальную версию (распакованную, иначе не запускается), она показывает отрицательное время дык это наверное так разработчики замутили - прога пашет в цикле вычисляя время, а так зарегана, то при <=0 ни че не говорит и пашет далее, а время-то идет... |
|
Создано: 17 января 2007 02:57 · Поправил: KpeHDeJIb · Личное сообщение · #24 |
eXeL@B —› Основной форум —› Помогите сломить дух Bubble Shooter Deluxe |
Эта тема закрыта. Ответы больше не принимаются. |