![]() |
eXeL@B —› Крэки, обсуждения —› Подскажите, в чем прикол? |
Посл.ответ | Сообщение |
|
Создано: 07 ноября 2006 23:31 · Личное сообщение · #1 Вот значит какая история... Вкратце: Нарыл я тут недавно скринсевер, называется SeaStorm 3D Screensaver (сам скринсевер впринципе отстой) взял чисто от делать нечего, решил просмотреть за что хотят 14.95$, ну так вот: установил, значится запакован он ASProtect 1.23 RC4 - 1.3.08.24 -> Alexey Solodovnikov, но это ничего страшного - распаковал ручками без особых проблем (у Stripper 2.07 как-то коряво получилось) После исследования нарыл функцию: 00406DE0 /$ 8B5424 04 MOV EDX,DWORD PTR SS:[ESP+4] 00406DE4 |. 55 PUSH EBP 00406DE5 |. 57 PUSH EDI 00406DE6 |. 8BFA MOV EDI,EDX 00406DE8 |. 83C9 FF OR ECX,FFFFFFFF 00406DEB |. 33C0 XOR EAX,EAX 00406DED |. F2:AE REPNE SCAS BYTE PTR ES:[EDI] ; <- серийник 00406DEF |. 8B4424 14 MOV EAX,DWORD PTR SS:[ESP+14] 00406DF3 |. F7D1 NOT ECX 00406DF5 |. 49 DEC ECX ; <- длина серийника 00406DF6 |. 8BE9 MOV EBP,ECX 00406DF8 |. D1ED SHR EBP,1 ; длина/2 00406DFA |. 3BE8 CMP EBP,EAX ; <- сравниваем с 256 00406DFC |. 7E 02 JLE SHORT unpacked.00406E00 00406DFE |. 8BE8 MOV EBP,EAX 00406E00 |> 33C0 XOR EAX,EAX 00406E02 |. 85ED TEST EBP,EBP 00406E04 |. 7E 65 JLE SHORT unpacked.00406E6B 00406E06 |. 53 PUSH EBX 00406E07 |. 56 PUSH ESI 00406E08 |. 8B7424 18 MOV ESI,DWORD PTR SS:[ESP+18] 00406E0C |. 8BFA MOV EDI,EDX 00406E0E |> C60430 00 /MOV BYTE PTR DS:[EAX+ESI],0 00406E12 |. 33D2 |XOR EDX,EDX 00406E14 |> 8B0D 9C844700 |/MOV ECX,DWORD PTR DS:[47849C] ASCII "ABCDFGHKMNPRSTXZ" 00406E1A |. 8A1F ||MOV BL,BYTE PTR DS:[EDI] 00406E1C |. 8A0C11 ||MOV CL,BYTE PTR DS:[ECX+EDX] 00406E1F |. 3ACB ||CMP CL,BL 00406E21 |. 75 03 ||JNZ SHORT unpacked.00406E26 00406E23 |. 081430 ||OR BYTE PTR DS:[EAX+ESI],DL 00406E26 |> 42 ||INC EDX 00406E27 |. 83FA 10 ||CMP EDX,10 00406E2A |.^7C E8 |JL SHORT unpacked.00406E14 00406E2C |. 33D2 |XOR EDX,EDX 00406E2E |> 8B0D 9C844700 |/MOV ECX,DWORD PTR DS:[47849C] 00406E34 |. 8A5F 01 ||MOV BL,BYTE PTR DS:[EDI+1] 00406E37 |. 8A0C11 ||MOV CL,BYTE PTR DS:[ECX+EDX] 00406E3A |. 3ACB ||CMP CL,BL 00406E3C |. 75 0D ||JNZ SHORT unpacked.00406E4B 00406E3E |. 8A1C30 ||MOV BL,BYTE PTR DS:[EAX+ESI] 00406E41 |. 8ACA ||MOV CL,DL 00406E43 |. C0E1 04 ||SHL CL,4 00406E46 |. 0AD9 ||OR BL,CL 00406E48 |. 881C30 ||MOV BYTE PTR DS:[EAX+ESI],BL 00406E4B |> 42 ||INC EDX 00406E4C |. 83FA 10 ||CMP EDX,10 00406E4F |.^7C DD |JL SHORT unpacked.00406E2E 00406E51 |. 40 |INC EAX 00406E52 |. 83C7 02 |ADD EDI,2 00406E55 |. 3BC5 |CMP EAX,EBP 00406E57 |.^7C B5 JL SHORT unpacked.00406E0E 00406E59 |. 8B5424 20 MOV EDX,DWORD PTR SS:[ESP+20] 00406E5D |. 5E POP ESI 00406E5E |. 5B POP EBX 00406E5F |. 5F POP EDI 00406E60 |. 892A MOV DWORD PTR DS:[EDX],EBP 00406E62 |. B8 01000000 MOV EAX,1 00406E67 |. 5D POP EBP 00406E68 |. C2 1000 RETN 10 00406E6B |> 8B4424 18 MOV EAX,DWORD PTR SS:[ESP+18] 00406E6F |. 5F POP EDI 00406E70 |. 8928 MOV DWORD PTR DS:[EAX],EBP 00406E72 |. B8 01000000 MOV EAX,1 00406E77 |. 5D POP EBP 00406E78 . C2 1000 RETN 10 После процедуры проверка что EBP = 2, то есть длина серийника должна быть 4 или 5 символов - эт очень странно! Потом сравнение результата (*00406918*) WORD PTR DS:[EAX+ESI] с 3F2B, если совпали то зарегины. Ну эт тоже не беда... Переписал на С++, забадяжил маленький брутфорс из символов этого массива "ABCDFGHKMNPRSTXZ", и секунд за 5 перебора получил серийник! Имя вроде в генерации нигде не учавствует. name: RSI serial: RCZD Значит ввел я его мне написали, мол все круто мы зарегины... Вот теперь самое интересное, перезапустил я его - исчез MessageBox с предупреждением, в About пешет Registered to: RSI вроде все круто, НО когда запускаешь заставку через 30 секунд появляется летающий наг с просьбой зарегистрироваться... Как не искал - я не смог найти откуда он вызывается(юзает DirectX), а самое главное ПОЧЕМУ???? Поэтому, мож если кто сталкивался с подобной шнягой или кого заинтересовало, то просветите! УЖ очень ИНТЕРЕСНО.... ;) P.S. Кста смотрел другие продукты этой фирмы и заметил что процедура генерации таже, только отличается строка "ABCDFGHKMNPRSTXZ", и число с которым сравниваем. Вот ссылки(вроде для работы хватает одного экзешника): Распакованный экзешник(с исходниками брутфорса): hxxp://slil.ru/23370796 (650Kb) (чтоб запускалась заставка параметр "s" или переименовать в *.scr) Сам сайт скринсевера: hxxp://www.digimindsoft.com/seastorm3d.exe (800Kb) ![]() |
|
Создано: 08 ноября 2006 00:32 · Личное сообщение · #2 Посмотри все функции, которые определяют размер Экзешника, FindFirst, FindNext, GetFileSize, GetFileSizeEx, и некоторые другие. Посмотри еще CreateFileA (W), может CRC проверяет. Скорее всего прога просто определила, что ее распаковали. Попробуй проделать это на запакованном файле. Автор мог проявить оригинальность, и куда-нить флажок в реестрфайл сунуть, что типа распаковали. ![]() |
|
Создано: 08 ноября 2006 00:47 · Личное сообщение · #3 |
|
Создано: 08 ноября 2006 00:52 · Личное сообщение · #4 |
|
Создано: 08 ноября 2006 00:56 · Личное сообщение · #5 |
|
Создано: 08 ноября 2006 01:12 · Личное сообщение · #6 |
|
Создано: 08 ноября 2006 01:12 · Личное сообщение · #7 |
|
Создано: 08 ноября 2006 01:17 · Поправил: NIKOLA · Личное сообщение · #8 RSI пишет: может вспомнишь точное название темы Попробуй по названию скрина. //add нашёл: http://exelab.ru/f/action=vthread&topic=735&forum=1&page=- 1 ![]() |
|
Создано: 08 ноября 2006 01:46 · Личное сообщение · #9 |
![]() |
eXeL@B —› Крэки, обсуждения —› Подскажите, в чем прикол? |
Эта тема закрыта. Ответы больше не принимаются. |