Сейчас на форуме: vsv1, NIKOLA, r0lka, johnniewalker (+3 невидимых) |
eXeL@B —› Крэки, обсуждения —› Взлом Alawar игр (отучим от триала) |
<< . 1 . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 10 ... 15 . 16 . >> |
Посл.ответ | Сообщение |
|
Создано: 28 сентября 2006 04:20 · Личное сообщение · #1 Уж извините за форму написания ведь он почти первый (че-то я в последнее время расщедрился) Мини тутор по снятию триал-защиты с игр от Alawar`a Инструмент: Shadow with bpmx да голова Кролик : Игра "Разгадай код Да Винчи" Как обычно приобрел очередной ComputerBild и на диске прилагаемом к нему нашлась игруха от алавара "Разгадай Код Да Винчи". На все про все наиграться мне отвели 30 минут а игруха класная новый вариант Lines.Поскольку я никогда не смотрю что мне нужно оттдать за то чтобы вдоволь насладится очередным программным продуктом пришлось на время отложить работу и взятся за сей продукт. При первом рассмотрении PEid нашел Aspr.Периодически лазить в реестр и что нибудь там чистить это не по мне. Не долго думая обработал поделку stripper`ом.Получилось.Причем stripper сказал что триал инфы не используются. Уже интересно ДА. Однако продукт после распаковки запускаться не захотел и улетал в несуществующие адреса. Как же так несправедливо получается уже потрачено 5 минут драгоценного времени впустую 8-( не отступать рано продолжим. Загрузил дамп в shadow и своим трейсером дошел до места где вызываются не существующие адреса. Выглядело это место примерно так call dword [4383a8] где по этому адресу лежало 00401440 естественно указывающее вникуда. Беда но зачем же отступать. Я рассудил так раз такой call есть значит что-то не до конца обработало дамп не доведя до ума т.е. при распаковке процедуры приведения проги до нормального вида не включались а сидели в апи аспра т.е. где то же они есть.Поиском всех референсов на адрес 004383а8 нашлась интересное место: 1 PUSH da_vinci.0040E36D ; /Arg5 = 0040E36D 2 PUSH DWORD PTR DS:[428F44] ; |Arg4 = 00000000 3 PUSH da_vinci.0042839C ; |Arg3 = 0042839C 4 PUSH da_vinci.004210DC ; |Arg2 = 004210DC ASCII "GetLocaleInfoW" 5 PUSH da_vinci.00420F50 ; |Arg1 = 00420F50 ASCII "kernel32.dll" 6 CALL da_vinci.0040E02F ; \da_vinci.0040E02F 7 JMP DWORD PTR DS:[42839C] ; da_vinci.0040D9F0 8 PUSH da_vinci.0040E24E ; /Arg5 = 0040E24E 9 PUSH DWORD PTR DS:[428F40] ; |Arg4 = 00000000 10 PUSH da_vinci.004283A8<---вот он адресок ; |Arg3 = 004283A8 11 PUSH da_vinci.004210EC а это то что должно быть --> ; |Arg2 = 004210EC ASCII "GetProcAddress" 12 PUSH da_vinci.00420F50 ; |Arg1 = 00420F50 ASCII "kernel32.dll" 13 CALL da_vinci.0040E02F ; \da_vinci.0040E02F 14 JMP DWORD PTR DS:[4283A8] 15 PUSH da_vinci.0040E2AA ; /Arg5 = 0040E2AA 16 PUSH DWORD PTR DS:[428F3C] ; |Arg4 = 00000000 17 PUSH da_vinci.004283B8 ; |Arg3 = 004283B8 18 PUSH da_vinci.004210FC ; |Arg2 = 004210FC ASCII "LoadLibraryW" 19 PUSH da_vinci.00420F50 ; |Arg1 = 00420F50 ASCII "kernel32.dll" 20 CALL da_vinci.0040E02F ; \da_vinci.0040E02F 21 JMP DWORD PTR DS:[4283B8] ; da_vinci.0040DA3A Осмыслив данный кусок кода начинаю понимать что это то что надо однако ни одного референса на 1 строку решаю рискнуть выставляю оер на строку 8 и жму F8 до 14 строки и о радость по адресу 4383a8 цифирки меняются на почти (внимательно) валидные адреса. 1 PUSH da_vinci.0040E36D ; /Arg5 = 0040E36D 2 PUSH DWORD PTR DS:[428F44] ; |Arg4 = 00000000 3 PUSH da_vinci.0042839C ; |Arg3 = 0042839C 4 PUSH da_vinci.004210DC ; |Arg2 = 004210DC ASCII "GetLocaleInfoW" 5 PUSH da_vinci.00420F50 ; |Arg1 = 00420F50 ASCII "kernel32.dll" 6 CALL da_vinci.0040E02F ; \da_vinci.0040E02F 7 JMP DWORD PTR DS:[42839C] ; unicows.GetLocaleInfoW 8 PUSH da_vinci.0040E24E ; /Arg5 = 0040E24E 9 PUSH DWORD PTR DS:[428F40] ; |Arg4 = 00000000 10 PUSH da_vinci.004283A8 ; |Arg3 = 004283A8 11 PUSH da_vinci.004210EC ; |Arg2 = 004210EC ASCII "GetProcAddress" 12 PUSH da_vinci.00420F50 ; |Arg1 = 00420F50 ASCII "kernel32.dll" 13 CALL da_vinci.0040E02F ; \da_vinci.0040E02F 14 JMP DWORD PTR DS:[4283A8] <-видите куда теперь он указывает ; unicows.GetProcAddress И так если использовать данную процедуру (их кстати 2 не небольшом расстоянии друг от друга и дальше (естественно пропуская jmp`ы) можно полностью раскодировать импорт, он там небольшой около 20 имен функций.Но вот зараза если внимательно приглядеться то можно заметить что GetProcAddress находится не во всеми любимом kernel32.dll а в какои то херне под названием unicows.dll (Кстати это микрософтовская библиотека я так не хера и не понял зачем она нужна.Плюс с ней программа не пожелала запускаться. Чтож отступать поздно потрачено уже около 25 минут.Думаю дальше. Далее найдется до фига желающих меня обласкать за то что я пошел обходным путем однако ничего не попишешь в тот момент ко мне пришла такая идея. Я взял да подставил в эту микротаблицу импорта правильные адреса всех фунции т.е. теперь по адресу 4283a8 лежал указатель не на unicows.GetProcAddress а на kernel32.GetProcAddress. Все прекрасно прога запустилась но функции триала остались. Думаю дальше ведь времени уже потрачено около 40 минут. Анализ данного импорта показал что wrapper юзает функции в том числе CreateFile и CreateProcess, WriteProcessMemory т.е. по сути wrapper создает отдельный файл и потом его контролирует. Что ж ставим бряки на эти функции и отпускаем прогу нажимаем в ней продолжать играть и вываливаемся на создании файла game32.img.(нужно только поменять атрибуты для файла на Normal) Все вроде бы готово. Уф.Глушим прогу Переименовываем его в game32.exe и пытаемся запустить и...... ОБЛОМ. Прога не запускается. Думаю дальше. Посмотрим на oep (game32.exe) и видим что не все так просто просто там ничего нет. Загружаем в олю родителя оставляем бряки на старом месте.СТАРТ. Проходим как описано выше до создания дочки (game32....) жмем еще раз f9 и вываливаемся на бряке WriteProcessMemory первый пропускаем он просто записывает дочку а вот когда прогавалится еще раз смотрим что же она пишет и о боги видим что в наш game32... на место оер записывается 6 байт посмотрев в буфер запоминаем их а затем подправляем наш game32.exe. все игра заработала..Облегчение..... P.S. Я не знаю сколько продержится эта защита после опубликования данного минитутора пользуйтесь пока. |
|
Создано: 04 января 2007 13:03 · Поправил: aspirin · Личное сообщение · #2 |
|
Создано: 05 января 2007 09:45 · Личное сообщение · #3 |
|
Создано: 17 мая 2007 20:50 · Поправил: Vovan666 · Личное сообщение · #4 |
|
Создано: 17 мая 2007 20:58 · Личное сообщение · #5 |
|
Создано: 17 мая 2007 21:03 · Поправил: hedgehot · Личное сообщение · #6 |
|
Создано: 17 мая 2007 21:04 · Личное сообщение · #7 |
|
Создано: 17 мая 2007 21:10 · Поправил: Kycok Caxapa · Личное сообщение · #8 |
|
Создано: 17 мая 2007 21:28 · Личное сообщение · #9 |
|
Создано: 17 мая 2007 21:41 · Поправил: Kycok Caxapa · Личное сообщение · #10 |
|
Создано: 17 мая 2007 21:43 · Личное сообщение · #11 hedgehot Привет ! Лет сто не виделись =) Kycok Caxapa А кряк PE_Kill'a ? На счет моего кряка: у всех на руках в лучшем случае v0.1 а последняя v0.3 (она тоже не справляется с "новыми"). Хотя если вытащить его о туда (хоть стрипером, хоть кряком от PE_Kill) и опять применить мой кряк тоже будет пахать. P.S. 2-ве последних поставил на закачку. ----- Don_t hate the cracker - hate the code. |
|
Создано: 17 мая 2007 21:46 · Личное сообщение · #12 Vovan666 пишет: там в ресурсе PACKINFO посмотреть оеп там такая фигня идёт: 00032AE8 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 ••••••••••••••••
как найти OEP валидный? |
|
Создано: 17 мая 2007 21:53 · Личное сообщение · #13 mysterio пишет: Хотя если вытащить его о туда (хоть стрипером, хоть кряком от PE_Kill) и опять применить мой кряк тоже будет пахать. не пашет, лог распаковки в аттаче если интересно 9366_17.05.2007_CRACKLAB.rU.tgz - _LittleShopOfTreasures.exe.log |
|
Создано: 17 мая 2007 22:12 · Личное сообщение · #14 |
|
Создано: 17 мая 2007 22:17 · Личное сообщение · #15 |
|
Создано: 17 мая 2007 23:24 · Личное сообщение · #16 Kycok Caxapa пишет: 00032AE8 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 •••••••••••••••• 00032AF8 00 10 00 00 00 E0 07 00 00 00 40 00 F8 EF 07 00 •••••а••••@•шп•• 00032B08 D7 A2 04 00 02 00 3C 00 01 41 6C 61 77 61 72 47 Чў••••<••AlawarG 00032B18 61 6D 65 42 6F 78 00 00 00 00 00 00 00 00 00 00 ameBox•••••••••• 00032B28 00 00 00 00 00 00 00 00 00 4C 69 74 74 6C 65 53 •••••••••LittleS 00032B38 68 6F 70 4F 66 54 72 65 61 73 75 72 65 73 2E 77 hopOfTreasures.w 00032B48 72 70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 rp•••••••••••••• 00032B58 00 00 00 00 00 00 00 00 00 00 00 00 4F 0F 00 00 ••••••••••••O••• 00032B68 72 65 73 3A 2F 2F 6C 69 74 74 6C 65 73 68 6F 70 res://littleshop 00032B78 6F 66 74 72 65 61 73 75 72 65 73 2E 65 78 65 00 oftreasures.ex В файле LittleShopOfTreasures.wrp Ищешь: F8 EF 07 Меняешь на: D7 A2 04 и переименовываешь его в .exe |
|
Создано: 18 мая 2007 17:54 · Личное сообщение · #17 |
|
Создано: 18 мая 2007 20:07 · Личное сообщение · #18 ковырял Sudoku Quest сейчас, там короче ключ лежит в ресурсах в открытом виде: 00033960 01 30 37 48 34 30 4A 35 6E 41 32 51 33 65 43 6F •07H40J5nA2Q3eCo
но использовать его не получается... и OEP я опять не нашёл: 00032960 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 ••••••••••••••••
По какой строке надо хоть ориентироваться?? |
|
Создано: 18 мая 2007 20:17 · Поправил: Vovan666 · Личное сообщение · #19 |
|
Создано: 18 мая 2007 20:43 · Поправил: hedgehot · Личное сообщение · #20 |
|
Создано: 18 мая 2007 22:04 · Личное сообщение · #21 hedgehot thanks круто,способ прокатывает и для старой защиты тоже, проверял на игре Времена Раздора (http://www.alawar.ru/download/DiscordTimesRus.exe) закачка от марта 2007 Там wrp нет никакого и ни один унвраппер не берет. Я делал так,запускал, ALT+TAB, game.img переименовал в exe, затем всё как для wrp файла аналогично. Заменил F8 79 08 на A8 76 08 и всё работает. Т.е. у кого нет wrp просто проделайте всё тоже самое только для game.img |
|
Создано: 26 июня 2007 12:34 · Личное сообщение · #22 Вот мой самый быстрый способ(работает с играми скачанными пару недель назад): 1.Ставим OllyDebuger отладчиком по умолчания(options->just-in-time debugging). 2.Открываем им файл игры(который exe а не wrp). 3.Ставим breakpoint на WriteProcessMemory(для тех у кого есть плагин command bar: пишем в нём bp WriteProcessMemory). 4.Жмем F9. В появившемя окне жмем ИГРАТЬ. 5.Далее в отладчеке жмем alt+F9. 6.Жмем ctrl+alt+del. 7.Находим процесс с окончанием wrp и жмем на нём правой кнопкой выбираем отладка.Отвечаем Да.(появиться ошибка просто жмем OK) 8.Затем в OllyDebuger'e жмем правой кнопкой мыши, выбираем Make dump of Process 9.Затем жмем dump. 10.ВСЕ теперь надо запускать полученый файл вместо то с которым мы сейчас работали. А казалось у них там что-то очень сложное. |
|
Создано: 26 июня 2007 13:10 · Личное сообщение · #23 Henly пишет: Вот мой самый быстрый способ И чего тут быстрого? Вот побыстрее способ 1 Запускаем игру. 2 Во время нага запускаем LordPE и дампим процесс 3 Открываем дамп в Restorator и смотрим 3байта в ресурсе PACKINFO по адресу 20h и перворачиваем эти байты наоборот. 4 Открываем wrp в LordPe и вписываем полученые байты в EP вот и всё. |
|
Создано: 26 июня 2007 13:21 · Личное сообщение · #24 |
|
Создано: 27 июня 2007 18:26 · Личное сообщение · #25 Господа, либо очередные изменения в защите, или я невнимателен. Сдампил с нага, нашёл 3 байта по 20h адресу, но в wrp найти это же место не могу, он показывает совершенно другое, я про Hex Workshop, если пробовать как раньше дампить, то всего 1 ветка импорта и та не валидна, если удалить хоть что-то, пропадает вся ветка. Это касается всех игр: Kycok Caxapa пишет: mysterio из новых если вот: www.alawar.ru/download/SudokuAdventureRus.exe (24 метра) alawar.com/download/LittleShopofTreasures.exe (25 метров) alawar.com/download/TheRiseofAtlantis.exe (18 метров) alawar.com/download/GrimmsHatchery.exe (21 метр) p.s. вот уже пол дня мучаюсь и вижу отчёты сплошные... ----- Ламер - не профессия :)) |
|
Создано: 27 июня 2007 20:34 · Личное сообщение · #26 |
|
Создано: 27 июня 2007 22:11 · Личное сообщение · #27 |
|
Создано: 06 июля 2007 11:30 · Личное сообщение · #28 Игрался недавно с парой игр от Alawar (скачанные в конце июня).. Выдирание игры происходит меньше, чем за 5 мин. Ничего ненадо дампить. 1. Открываем под ollydbg игру. 2. Ставим hardware breakpoint на WriteProcessMemory. 3. Запускаем игру. 4. Жмем "Играть". 5. Вывалиывемся в ollydbg. 6. Смотрим стек. Выписываем - по какому адресу сколько байт (в моих случаях 6 байт пишутся на OEP) и откуда. Выписываем эти байты. 7. В папке с прогой уже должен появиться файл game32.img или <название_игры>.wrp (аттрибуты hidden+system) . Открываем этот файл в любом hex-редакторе и вписываем нужные байты по соответствующему адресу (записанному ранее). 8. Старую <название_игры>.exe выкидываем, переименовываем game32.img или <название_игры>.wrp в <название_игры>.exe Все. |
|
Создано: 06 июля 2007 11:59 · Личное сообщение · #29 |
|
Создано: 06 июля 2007 15:27 · Личное сообщение · #30 laminy Баянить и плагиатить методы не стоит, это уже давно всё известно... Kindly пишет: в свежих выпусках - как менялись шесть байт так и меняются, только сделали, чтобы существующие анврапперы не брали. от безысходности наверное, честно говоря мне вообще непонятна позиция относительно новой защиты, наверное порекламить игры хотят, зная заранее что новейшая защита совсем скоро падёт... ----- Ламер - не профессия :)) |
|
Создано: 06 июля 2007 17:23 · Личное сообщение · #31 Ну может и не только от безысходности... Т.к. воспользоваться анвраппером может любой человек, даже приблизительно не знакомый с понятим OEP, Asprotect и т.д. А вот заменить в хекс редакторе 6 байт, даже меняемых по одинаковой схеме - дано не каждому. Т.е. защиту они по отношению к профи (не смог другого слова подобрать) не улучшили , а вот массовый взлом рядовыми пользователеми - убрали. ----- Я ещё не волшебник, я только учусь... |
<< . 1 . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 10 ... 15 . 16 . >> |
eXeL@B —› Крэки, обсуждения —› Взлом Alawar игр (отучим от триала) |