Сейчас на форуме: Slinger (+6 невидимых)

 eXeL@B —› Основной форум —› Помогите сломить дух Bubble Shooter Deluxe
Посл.ответ Сообщение

Ранг: 21.9 (новичок)
Активность: 0.020
Статус: Участник

Создано: 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
Protection system (Basic)
!- <Protection Options>
Debug-Blocker
!- <Backup Key Options>
Variable Backup Keys
!- <Compression Options>
Best/Slowest Compression
!- <Other Options>
Disable Monitoring Thread

6. Ну вот, я начал всё делать руками, запустил олю и дошел до места вставки DebugActiveProcessStop, все отработало. Я запустил еще одну копию оли, приаттачился к дочке, восстановил стартовые байты, сделал скрытие от обнаружения, поставил бряк на CreateThread.
7. Запустил (первое что мне показалось странным, оля попросила резюмить главный поток, видимо кто-то его суспендил, точно не я =). Ну ладно, резюмнули, брякнулись. Дошли до точки возврата и прыгнули по F7 в нашу игру.
8. Вот и все, на этом все и заканчивается, ибо дойти до следующего RET как говорят туторы (а в них он вообще через две строчки) не представляется возможным, если по Ctrl-F9 то просто вываливается наг-окно, все с теми же 60-ю минутами, и спокойно запускается игра и это все не дойдя до RETN.
9. А если трассировать F8 то там куча мусора, много нераспознанных команд и нету вообще RET в обозримом будущем. Как будто крутиться вечный цикл. Постоянно вызывается WaitForDebugEvent, ContinueDebugEvent и прочая фигня.

А теперь внимание - вопрос! Какого, простите мой французский, рожна хочет эта игрух?! Подскажите в каком направлении копать дальше, ибо я бился бился, бился бился и ничего не могу понять! F1 мне уважаемые знатоки! Plz



Ранг: 617.3 (!), 677thx
Активность: 0.540
Статус: Участник

Создано: 11 января 2007 16:28 · Поправил: Vovan666
· Личное сообщение · #2

Игра скорее всего отсюда:
http://www.absolutist.com/bubbles/bubshoot.exe http://www.absolutist.com/bubbles/bubshoot.exe

Игруха ищет в папке ArmAccess.dll, не находит и вылетает.
00464CEA PUSH EBP
Меняешь на RETN



Ранг: 108.7 (ветеран)
Активность: 0.040
Статус: Участник

Создано: 11 января 2007 22:06 · Поправил: Freecod
· Личное сообщение · #3

KpeHDeJIb пишет:
дойти до следующего RET как говорят туторы

А что за тутор?




Ранг: 469.0 (мудрец), 100thx
Активность: 0.250
Статус: Участник
[www.AHTeam.org]

Создано: 11 января 2007 22:53
· Личное сообщение · #4

Vovan666 так там 1.6, еще нашол ссылки на Bubble Shooter v5.01...

KpeHDeJIb уточнии какую именно версию исследуешь ну и ссыль?

-----
-=истина где-то рядом=-





Ранг: 271.6 (наставник), 2thx
Активность: 0.30
Статус: Участник

Создано: 12 января 2007 00:08
· Личное сообщение · #5

KpeHDeJIb
На сколько я помню по всему нету валяются сломанные бабл шутеры... скачай да и все!
Или ты сам хочешь?

-----
iNTERNATiONAL CoDE CReW




Ранг: 21.9 (новичок)
Активность: 0.020
Статус: Участник

Создано: 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

Выручайте!!



Ранг: 21.9 (новичок)
Активность: 0.020
Статус: Участник

Создано: 12 января 2007 04:05
· Личное сообщение · #7

Vovan666
Игра (распаковання) действительно запустилась, но окно с напоминанием о времени не исчезло, попробую сейчас еще "исследовать" на серийник, чтобы зарегестрироваться, посмотрим, что будет.
За подсказку большое спасибо.

1. Но все же остается вопрос о ручной распаковки, кто нибудь может помочь? А то как-то зацепило и не отпускает %)
2. Да и что делать с этим ArmAccess.dll? Как убрать окно с отсчётом времени?



Ранг: 116.1 (ветеран), 5thx
Активность: 0.060
Статус: Участник

Создано: 12 января 2007 04:11
· Личное сообщение · #8

KpeHDeJIb пишет:
Да и что делать с этим ArmAccess.dll? Как убрать окно с отсчётом времени?


Нужно проэмулировать функции из ArmAccess.dll, т.е. API армы.



Ранг: 21.9 (новичок)
Активность: 0.020
Статус: Участник

Создано: 12 января 2007 07:01 · Поправил: KpeHDeJIb
· Личное сообщение · #9

Написал свою фейковую armaccess.dll с экспортом всех функций. В этой фейковой длл-ке я сделал месадж бокс с выводом парметров при вызове функций. В итоге выяснил, что вызываются функции InstallKey и UpdateEnvirnoment (при трассировке проги к этим двум подгружалась еще IncrementCounter, но она почему то не вызывалась).
И вот что-то я непойму, что мне дальше делать? Проблема-то таким способи не решается!

Сорсы в асме (MASM32) и фейковая длл-ка (без вывода месадж бокса) в аттаче.

09f2_12.01.2007_CRACKLAB.rU.tgz - armaccess.zip



Ранг: 39.7 (посетитель)
Активность: 0.020
Статус: Участник

Создано: 12 января 2007 09:50
· Личное сообщение · #10

hттp://dl.allbestsoft.com/bubshoot.exe v1.8



Ранг: -6.4 (нарушитель)
Активность: 0=0
Статус: Участник

Создано: 12 января 2007 10:04
· Личное сообщение · #11

да кейген возьми и не парь мозги



Ранг: 21.9 (новичок)
Активность: 0.020
Статус: Участник

Создано: 12 января 2007 11:54
· Личное сообщение · #12

AHTOH TAPAKAHOB
Вообще-то стало даже уже интересно, что за фигня происходит в этой игре, хочется разобраться и понять! Конечно можно сидеть и ждать когда напишут тебе и кряк и кейген, но разве это дело?

Вобщем я тут потихоньку еще разбераюсь:
1. Наше все запросы к переменным окружения (около 6 штук) и через фейковую библиотеку навставлял туда всякой фигни (то, что там могло бы быть), в итоге в распакованную игру стало можно играть, но все еще появляется наг и игра, разумеется, не зарегестрирована.
2. Наше место с которого начинается проверка введеных регистрационных данных (у меня 00454FB1, распакованная прога с потертыми секциями армы), но я что-то там путаюсь, анализировал в IDA, мало что понятно.

Отсюда вопросы, можно ли как-нибудь вообще такими подставными данными сбить игру с толку или надо патчить место где эти данные проверяются в самой игре (через GetEnvironmentVariableA и дальнейшую обработку)? Подскажите хотя бы направление в котором копать! Заранее большое спасибо.



Ранг: -6.4 (нарушитель)
Активность: 0=0
Статус: Участник

Создано: 12 января 2007 12:10
· Личное сообщение · #13

KpeHDeJIb пишет:
Конечно можно сидеть и ждать когда напишут тебе и кряк и кейген, но разве это дело?

не вижу смысла ломать то,что уже давно отломано
а вот то что не отломано- ломай на здоровье




Ранг: 107.6 (ветеран)
Активность: 0.110
Статус: Участник

Создано: 12 января 2007 14:08
· Личное сообщение · #14

AHTOH TAPAKAHOB пишет:
не вижу смысла ломать то,что уже давно отломано

Практика молодой чек, практика...

-----
программистом не рождаются - им умирают




Ранг: 21.9 (новичок)
Активность: 0.020
Статус: Участник

Создано: 12 января 2007 15:40
· Личное сообщение · #15

Спасибо всем кто помог и направил =) Игра взята штурмом, до написания кейгена для игры мне конечно далеко, но я таки нашел то место где она проверяется на зареганность, это один байтик который должен быть равен 0, меняем одну инструкцию котоаря его записывает и все работает.

В аттаче крякнутый ехе-шник с фейковой либой ArmAccess.dll а также исходник либы с описанием шагов взлома, если будут вопросы - я отвечу, но это скорее я тут, чтобы задавать вопросы =)



58db_12.01.2007_CRACKLAB.rU.tgz - bsd18_crack.rar




Ранг: 469.0 (мудрец), 100thx
Активность: 0.250
Статус: Участник
[www.AHTeam.org]

Создано: 12 января 2007 16:16
· Личное сообщение · #16

Чтобы программа была полностью зарегестрированной надо найти в
распакованном exe-шнике такой кусок кода (дамп из OllyDbg)


KpeHDeJIb, что нужно сделать - это понятно...

Напишешь как искал?

-----
-=истина где-то рядом=-




Ранг: 21.9 (новичок)
Активность: 0.020
Статус: Участник

Создано: 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 - это адрес байта в памяти после запуска игры
test eax, eax
jz loc_44FE4B

Благослави Бог создателя иды (: Итак, кликаем правой кнопкой на этом байте byte_XXXXXX и смотрим на кучу ссылок (кстати, можно обратить внимание, что во втором столбце идет квалификатор доступа на наш байт из указанного места, т.е. read или write). Побегав по ссылкам я сделал логгичный вывод, что этот байтик часто проверяется как раз перед критичными секциями. Причём всё указывает на то, что если byte_XXXXXX == 0,то игра ведё тсебя как зареганная, т.е. не выдаёт ужасных окон с ужасными надписями (что-то вроде "регистрируйся или умри!").
Вообще-то можно прямо из иды посмотреть кто у нас пишет в этот байт и сделать так, чтобы он всегда был равен 0, но я поступил порще (не хотелось делать замену куче байтов). Я зашел в олю и поставил хардварный бряк на этот байт в памяти по записи, потрейсил прогу и оказалось, что на запись игра обращается к байту только один раз, именно это место я подправил (и описал в начале исходника своей фейковой длл-ки).
Вообще-то можно было еще повозиться, может даже кей-ген выдернуть, но я новичок в крекинге и мне этого результата хватило с лихвой, потому что это всего лишь вторая нормальная игра исследованием которой я занимался, все остальные были довольно простыми (потому что русскими сделаны были, не любят почему то наши в большинстве своём серъёзной защиты =)).
Опять же если будут вопросы - пишем мне в ЛС или прямо тут. (:

зы: Почикал весь написанный мною в "зы" обильный оффтоп о взломе первой игры, оставляю только название - Pop! The balloon dog



Ранг: 21.9 (новичок)
Активность: 0.020
Статус: Участник

Создано: 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, можно впринципе опытным путем выяснить!
ЗЗЫ: Если кто кейген выдернет, и научит меня, буду ОЧЕНЬ признателен (:

вопрос ко всем: Могу написать небольшой тутор по обеим вариантам защиты этой компании, просто если народу будет интересно и новчикам, таким как мне, немного поможет на этапе становления (: Вопрос, есть ли резон это делать (т.е. разжевать шаги)?



Ранг: 214.1 (наставник)
Активность: 0.130
Статус: Участник

Создано: 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 пробел - либо фиксить ник, либо полностью затереть в дампе...



Ранг: 4.8 (гость)
Активность: 0.020
Статус: Участник

Создано: 16 января 2007 09:41
· Личное сообщение · #20

да уж,нашёл что ломать
думаю польза от твоего тутора будет нулевая...



Ранг: 21.9 (новичок)
Активность: 0.020
Статус: Участник

Создано: 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 пишет:
да уж,нашёл что ломать
думаю польза от твоего тутора будет нулевая...

Ну почему же нулевая, кто-то и до этого не доходит. Это ведь не для профи, а для начинающих, причем совсем начинающих. Я понимаю конечно, что здесь очень частный случай, но ведь и он может встретиться где-нибудь. А то что мне говорили - везде полно кряков и кейгенов, я вот ни одного работающего не нашел ): Отсюда вывод - польза будет, может и небольшая, но это уже другой вопрос (:

зы: Забавный факт, но таймер отсчета времени в играх запакованых армой все равно идет, причем идет в "-", я посмотрел оригинальную версию (распакованную, иначе не запускается), она показывает отрицательное время (:



Ранг: 214.1 (наставник)
Активность: 0.130
Статус: Участник

Создано: 17 января 2007 01:56
· Личное сообщение · #22

KpeHDeJIb пишет: Способ, конечно, работает
дык адреса те же??
KpeHDeJIb пишет: но в этом случае остается много ненужных файлов
а если зарегать прогу офф ключиком, то их убавится? или ты хочешь все игрушки почистить ?
я лишь привел наиболее быстрый вариант пропатчивания игр 1 байтом...
P.S. посмотрел тут дрю игру - Alien Shooter v1.2 full так в ней адресок другой - 403F2E JE SHORT 00403F3E - 740E -> 7400



Ранг: 214.1 (наставник)
Активность: 0.130
Статус: Участник

Создано: 17 января 2007 02:40
· Личное сообщение · #23

KpeHDeJIb пишет: Забавный факт, но таймер отсчета времени в играх запакованых армой все равно идет, причем идет в "-", я посмотрел оригинальную версию (распакованную, иначе не запускается), она показывает отрицательное время
дык это наверное так разработчики замутили - прога пашет в цикле вычисляя время, а так зарегана, то при <=0 ни че не говорит и пашет далее, а время-то идет...



Ранг: 21.9 (новичок)
Активность: 0.020
Статус: Участник

Создано: 17 января 2007 02:57 · Поправил: KpeHDeJIb
· Личное сообщение · #24

gegter пишет:
дык адреса те же??

Адреса те же, кусок кода тот же, можно впринципе сделать патчер по этому куску кода, думается мне он стандартен для RA (:


 eXeL@B —› Основной форум —› Помогите сломить дух Bubble Shooter Deluxe
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати