Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 12 ноября!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

Исследование Magic Utilities 2003 2.40

Обсудить статью на форуме

Массу крэкерских инструментов, видеоуроков и статей вы сможете найти на видеокурсе от нашего сайта. Подробнее здесь.

Автор: suff <sdeisider@mail.ru>

Intro

Привет! Признаюсь сразу, что пишу статью впервые, так что помидорами не кидаться!
Из инструментов:

-SoftIce в зависимости от Вашей платформы, WinDasm, а лучше IDA для наглядности.

Info

Magic Utilities 2003 v.2.40 Прекрасный твикер Win XP. В состав входят:
- Uninstller Plus (грамотный деинсталлятор
программ),
- StartUp Organizer (настройщик автозапуска),
- Process Killer (киллер приложений
и процессов). Приятный интерфейс в стиле apple. Живет здесь http://www.magictweak.com.

 

Начнем

Прога упакована PECompact 1.68 - 1.84 -> Jeremy Collake. Можно конечно распаковать, что я и сделал, только для того чтобы написать эту статью, использовав код для наглядности. Распаковать можно вручную либо любым подходящим анпакером (UnPECompact). Мы все исследование проделаем в SoftIce, хотя можно все проделать и в IDA, но не в WinDasme дальше поймете почему.

Запускоем прогу, та сразу предлагает зарегистрироваться путем ввода имени и пароля. Ну, что пишем что угодно. Нажимаем OK и получаем сообщение вида Thanks for your registrating. Please restart the program to validate the registration code, что на родном означает типо спасибо, перезапустите прогу для проверки кода. И все - ты опять в системе. Запускаем опять и получаем болт с петровского завода, т.е. тоже самое. Можно конечно нажать Continue evaluation и попользоваться 15 дней, а затем ну Вы сами знаете... На первый взгляд может показаться, неопытному крэкеру, что сложновато будет, а на самом деле защита - котяшочек.

Давайте чуток поразмыслим. Прога должна где-то сохранить введенную нами инфу. Это можно проверить с помощью прог RegMon и FileMon, если конечно исследуемая прога вам позволит это зделать,а можно найти место с помощью SoftIce, что мы и проделаем, чтоб так сказать не отвлекаться. Сразу скажу в реестре прога ничего не сохраняет, ту инфу, которая нас могла-бы заинтересовать.

Итак, запускаем вводим в окно регистрации инфу в SoftIce ставим бряк (bpx) на функцию MessageBoxA. Нажимаем на ОК и попадаем в отладчик:

 * Reference To: USER32.MessageBoxA, Ord:0000h
                                   |
 :0046797B FF1528154800            Call dword ptr [00481528] 
 :00467981 5E                      pop esi
 :00467982 C20C00                  ret 000C
 
 
 Пару раз жмем F10 и попадаем по ret сюда:
 :00438F0F 8B867C100000            mov eax, dword ptr [esi+0000107C]
 
 * Reference To: KERNEL32.WritePrivateProfileStringA, Ord:0000h
                                   |
 :00438F15 8B3D34124800            mov edi, dword ptr [00481234] 
 :00438F1B 6860894900              push 00498960  -"mgutil_win.ini"
 :00438F20 50                      push eax
 :00438F21 6854894900              push 00498954  -"UserName"
 :00438F26 6850894900              push 00498950
 :00438F2B FFD7                    call edi
 :00438F2D 8B8678100000            mov eax, dword ptr [esi+00001078]
 :00438F33 6860894900              push 00498960
 :00438F38 50                      push eax
 :00438F39 6848894900              push 00498948  -"RegCode"
 :00438F3E 6850894900              push 00498950
 :00438F43 FFD7                    call edi
 

Все ясно, имя и код записываем в файл mgutil_win.ini с пощью функции WritePrivateProfileStringA. Теперь bc* в Sice и ставим бряк на функцию GetPrivateProfileStringA - логично, я думаю.Запускаем прогу и прерываемя, жмем F5 пока не дойдем четыре раза, чтобы оказаться в нужном месте. Почему именно четыре, спросит начинающий.Я сам не люблю когда так пишут, так что немного поясню. После срабатывания бряка жмем F12, чтобы выйти из функции в прогу и опять F5. Первые три остановки прога загружает составляющие инерфейса (английский язык, скины и т.д.) это можно проверить в регистрах перед вызовом функции, а вот четвертый раз перед вызовом процедуры в регистрах мы найдем наши данные о регистрации.

 :0042035A 8D9424B0000000          lea edx, dword ptr [esp+000000B0] -наш рег.номер
 :00420361 8BCD                    mov ecx, ebp
 :00420363 52                      push edx
 :00420364 E887140000              call 004217F0 -процедура проверки
 :00420369 85C0                    test eax, eax
 :0042036B 0F85EE010000            jne 0042055F -если код верен, то переход

На этом можно было-бы закончить поменяв jne на je, но это патч. А патчить нужно тогда, когда сложно разобраться или лень. И не забывайте, что прога упакована. Значи поковыряемся еще чуток, мы же не в жопе ковыряемся. Давайте заглянем в процедуру проверки:

 :004217F0 B8FC2A0000              mov eax, 00002AFC
 :004217F5 E8C6F10200              call 004509C0
 :004217FA 66A134AD4900            mov ax, word ptr [0049AD34]
 :00421800 53                      push ebx
 :00421801 56                      push esi
 :00421802 57                      push edi
 --------------------------cut----------------------------------------
 :00421850 BF9CA54900              mov edi, 0049A59C -вообще такие вещи должны всегда 
 настораживать(фиксированные адреса). Заглянем в edi.
 Да это серийные номера. Ниже еще и еще.
 :00421855 F2                      repnz
 :00421856 AE                      scasb
 :00421857 F7D1                    not ecx
 :00421859 2BF9                    sub edi, ecx
 :0042185B 8D9424D8190000          lea edx, dword ptr [esp+000019D8]
 :00421862 8BC1                    mov eax, ecx
 :00421864 8BF7                    mov esi, edi
 :00421866 C1E902                  shr ecx, 02
 :00421869 8BFA                    mov edi, edx
 :0042186B 8D542410                lea edx, dword ptr [esp+10]
 :0042186F F3                      repz
 :00421870 A5                      movsd
 :00421871 8BC8                    mov ecx, eax
 :00421873 33C0                    xor eax, eax
 :00421875 83E103                  and ecx, 00000003
 :00421878 F3                      repz
 :00421879 A4                      movsb
 :0042187A BFBC9D4900              mov edi, 00499DBC
 :0042187F 83C9FF                  or ecx, FFFFFFFF
 :00421882 F2                      repnz
 :00421883 AE                      scasb
 :00421884 F7D1                    not ecx
 :00421886 2BF9                    sub edi, ecx
 :00421888 8BC1                    mov eax, ecx
 :0042188A 8BF7                    mov esi, edi
 :0042188C 8BFA                    mov edi, edx
 :0042188E 8D9424A8080000          lea edx, dword ptr [esp+000008A8]
 :00421895 C1E902                  shr ecx, 02
 :00421898 F3                      repz
 :00421899 A5                      movsd
 :0042189A 8BC8                    mov ecx, eax
 :0042189C 33C0                    xor eax, eax
 :0042189E 83E103                  and ecx, 00000003
 :004218A1 F3                      repz
 :004218A2 A4                      movsb
 :004218A3 BFE4954900              mov edi, 004995E4
 :004218A8 83C9FF                  or ecx, FFFFFFFF
 :004218AB F2                      repnz
 :004218AC AE                      scasb
 :004218AD F7D1                    not ecx
 :004218AF 2BF9                    sub edi, ecx
 :004218B1 8BC1                    mov eax, ecx
 :004218B3 8BF7                    mov esi, edi
 :004218B5 8BFA                    mov edi, edx
 :004218B7 8D942440110000          lea edx, dword ptr [esp+00001140]
 :004218BE C1E902                  shr ecx, 02
 :004218C1 F3                      repz
 :004218C2 A5                      movsd
 :004218C3 8BC8                    mov ecx, eax
 :004218C5 33C0                    xor eax, eax
 :004218C7 83E103                  and ecx, 00000003
 :004218CA F3                      repz
 :004218CB A4                      movsb
 :004218CC BFB0924900              mov edi, 004992B0
 :004218D1 83C9FF                  or ecx, FFFFFFFF
 :004218D4 F2                      repnz
 :004218D5 AE                      scasb
 :004218D6 F7D1                    not ecx
 :004218D8 2BF9                    sub edi, ecx
 :004218DA 8BC1                    mov eax, ecx
 :004218DC 8BF7                    mov esi, edi
 :004218DE 8BFA                    mov edi, edx
 :004218E0 C1E902                  shr ecx, 02
 :004218E3 F3                      repz
 :004218E4 A5                      movsd
 :004218E5 8BC8                    mov ecx, eax
 :004218E7 83E103                  and ecx, 00000003
 :004218EA F3                      repz
 :004218EB A4                      movsb
 :004218EC BFD88A4900              mov edi, 00498AD8
 --------------------------cut----------------------------------------
 :00421927 8BBC24142B0000          mov edi, dword ptr [esp+00002B14] -а здесь наш 
 рег.номер, который мы вводили.
 :0042192E 83C408                  add esp, 00000008
 :00421931 85C0                    test eax, eax
 :00421933 744A                    je 0042197F
 :00421935 8BF7                    mov esi, edi
 :00421937 8A10                    mov dl, byte ptr [eax]
 :00421939 8A1E                    mov bl, byte ptr [esi]
 :0042193B 8ACA                    mov cl, dl	
 :0042193D 3AD3                    cmp dl, bl
 :0042193F 751E                    jne 0042195F	
 :00421941 84C9                    test cl, cl
 :00421943 7416                    je 0042195B
 :00421945 8A5001                  mov dl, byte ptr [eax+01]
 :00421948 8A5E01                  mov bl, byte ptr [esi+01]
 :0042194B 8ACA                    mov cl, dl
 :0042194D 3AD3                    cmp dl, bl
 :0042194F 750E                    jne 0042195F
 :00421951 83C002                  add eax, 00000002
 :00421954 83C602                  add esi, 00000002
 :00421957 84C9                    test cl, cl
 :00421959 75DC                    jne 00421937
 
 

Это кусок я вырезал с WinDasmа предварительно распаковав, но если воспользоваться IDA листинг я приведу ниже, то все станет ясно без всяких коментариев, так как IDA делает все сам. Раньше для меня WinDasm был просто супер прогой. Но как только я познакомился с IDA, от результатов работы которого я чуть не обоссался, то WinDasm оказался просто погремушкой. Выделеный диапазон - проверка номера. Ну тут все предельно ясно. Вводишь любой номер, который находится в регистре ide и вперед с песней. А вот два куска, но только с IDA:

 pec1:00438F0F                 mov     eax, [esi+107Ch]
 pec1:00438F15                 mov     edi, ds:WritePrivateProfileStringA
 pec1:00438F1B                 push    offset aMgutil_win_ini ; "mgutil_win.ini"
 pec1:00438F20                 push    eax
 pec1:00438F21                 push    offset aUsername ; "UserName"
 pec1:00438F26                 push    offset AppName
 pec1:00438F2B                 call    edi ; WritePrivateProfileStringA
 pec1:00438F2D                 mov     eax, [esi+1078h]
 pec1:00438F33                 push    offset aMgutil_win_ini ; "mgutil_win.ini"
 pec1:00438F38                 push    eax
 pec1:00438F39                 push    offset aRegcode ; "RegCode"
 pec1:00438F3E                 push    offset AppName
 pec1:00438F43                 call    edi ; WritePrivateProfileStringA
 
 Этот кусок есть чуть выше:
 
 pec1:004217F0                 mov     eax, 2AFCh
 pec1:004217F5                 call    __alloca_probe
 pec1:004217FA                 mov     ax, ds:word_49AD34
 pec1:00421800                 push    ebx
 pec1:00421801                 push    esi
 pec1:00421802                 push    edi
 pec1:00421803                 mov     word ptr [esp+0AA38h+var_AA2A], ax
 pec1:00421808                 mov     ecx, 226h
 pec1:0042180D                 xor     eax, eax
 pec1:0042180F                 lea     edi, [esp+0AA38h+var_9060]
 pec1:00421816                 repe stosd
 pec1:00421818                 mov     ecx, 226h
 pec1:0042181D                 lea     edi, [esp+0AA38h+var_AA28]
 pec1:00421821                 repe stosd
 pec1:00421823                 mov     ecx, 226h
 pec1:00421828                 lea     edi, [esp+0AA38h+var_A190]
 pec1:0042182F                 repe stosd
 pec1:00421831                 mov     ecx, 226h
 pec1:00421836                 lea     edi, [esp+0AA38h+var_98F8]
 pec1:0042183D                 repe stosd
 pec1:0042183F                 mov     ecx, 226h
 pec1:00421844                 lea     edi, [esp+0AA38h+var_87C8]
 pec1:0042184B                 repe stosd
 pec1:0042184D                 or      ecx, 0FFFFFFFFh
 pec1:00421850                 mov     edi, offset a9gddccg939dgcf ; 
 "9GDDCCG9,39DGCFG9,9F9DG29C,D9G2G4FE,E4E"...
 pec1:00421855                 repne scasb
 pec1:00421857                 not     ecx
 pec1:00421859                 sub     edi, ecx
 pec1:0042185B                 lea     edx, [esp+0AA38h+var_9060]
 pec1:00421862                 mov     eax, ecx
 pec1:00421864                 mov     esi, edi
 pec1:00421866                 shr     ecx, 2
 pec1:00421869                 mov     edi, edx
 pec1:0042186B                 lea     edx, [esp+0AA38h+var_AA28]
 pec1:0042186F                 repe movsd
 pec1:00421871                 mov     ecx, eax
 pec1:00421873                 xor     eax, eax
 pec1:00421875                 and     ecx, 3
 pec1:00421878                 repe movsb
 pec1:0042187A                 mov     edi, offset aEl4icge4Gfa4cg ; 
 "EL4ICGE4,GFA4CGGB,E6GLGGAC,DFG6D6LF,E4C"...
 pec1:0042187F                 or      ecx, 0FFFFFFFFh
 pec1:00421882                 repne scasb
 pec1:00421884                 not     ecx
 pec1:00421886                 sub     edi, ecx
 pec1:00421888                 mov     eax, ecx
 pec1:0042188A                 mov     esi, edi
 pec1:0042188C                 mov     edi, edx
 pec1:0042188E                 lea     edx, [esp+0AA38h+var_A190]
 pec1:00421895                 shr     ecx, 2
 pec1:00421898                 repe movsd
 pec1:0042189A                 mov     ecx, eax
 pec1:0042189C                 xor     eax, eax
 pec1:0042189E                 and     ecx, 3
 pec1:004218A1                 repe movsb
 pec1:004218A3                 mov     edi, offset aDckjdgdkDekc6j ; 
 "DCKJDGDK,DEKC6JGD,EKK6EBKJ,KKJDDJ6J,JKG"...
 pec1:004218A8                 or      ecx, 0FFFFFFFFh
 pec1:004218AB                 repne scasb
 pec1:004218AD                 not     ecx
 pec1:004218AF                 sub     edi, ecx
 pec1:004218B1                 mov     eax, ecx
 pec1:004218B3                 mov     esi, edi
 pec1:004218B5                 mov     edi, edx
 pec1:004218B7                 lea     edx, [esp+0AA38h+var_98F8]
 pec1:004218BE                 shr     ecx, 2
 pec1:004218C1                 repe movsd
 pec1:004218C3                 mov     ecx, eax
 pec1:004218C5                 xor     eax, eax
 pec1:004218C7                 and     ecx, 3
 pec1:004218CA                 repe movsb
 pec1:004218CC                 mov     edi, offset aKk8kkbkeJeekdk ; 
 "KK8KKBKE,JEEKDKKD,8FKGEFEB,JKHFK2JK,DGG"...
 pec1:004218D1                 or      ecx, 0FFFFFFFFh
 pec1:004218D4                 repne scasb
 pec1:004218D6                 not     ecx
 pec1:004218D8                 sub     edi, ecx
 pec1:004218DA                 mov     eax, ecx
 pec1:004218DC                 mov     esi, edi
 pec1:004218DE                 mov     edi, edx
 pec1:004218E0                 shr     ecx, 2
 pec1:004218E3                 repe movsd
 pec1:004218E5                 mov     ecx, eax
 pec1:004218E7                 and     ecx, 3
 pec1:004218EA                 repe movsb
 pec1:004218EC                 mov     edi, offset aXc2c2fxcH3xlze ; 
 "XC2C2FXC,H3XLZE2F,XHH2XFZE,CZ3EYFA3,FZF"...
 pec1:004218F1                 or      ecx, 0FFFFFFFFh
 pec1:004218F4                 xor     eax, eax
 pec1:004218F6                 lea     edx, [esp+0AA38h+var_87C8]
 pec1:004218FD                 repne scasb
 pec1:004218FF                 not     ecx
 pec1:00421901                 sub     edi, ecx
 pec1:00421903                 mov     eax, ecx
 pec1:00421905                 mov     esi, edi
 pec1:00421907                 mov     edi, edx
 pec1:00421909                 lea     edx, [esp+0AA38h+var_9060]
 pec1:00421910                 shr     ecx, 2
 pec1:00421913                 repe movsd
 pec1:00421915                 mov     ecx, eax
 pec1:00421917                 and     ecx, 3
 pec1:0042191A                 repe movsb
 pec1:0042191C                 lea     ecx, [esp+0AA38h+var_AA2A]
 pec1:00421920                 push    ecx             ; char *
 pec1:00421921                 push    edx             ; char *
 pec1:00421922                 call    _strtok
 pec1:00421927                 mov     edi, dword ptr [esp+0AA40h+VersionInfo.szCSDVersion+78h]
 pec1:0042192E                 add     esp, 8
 pec1:00421931                 test    eax, eax
 pec1:00421933                 jz      short loc_42197F
 pec1:00421935 
 pec1:00421935 loc_421935:                             ; CODE XREF: unknown_libname_44+1ECDj
 pec1:00421935                 mov     esi, edi
 pec1:00421937 
 pec1:00421937 loc_421937:                             ; CODE XREF: unknown_libname_44+1EA9j
 pec1:00421937                 mov     dl, [eax]
 pec1:00421939                 mov     bl, [esi]
 pec1:0042193B                 mov     cl, dl
 pec1:0042193D                 cmp     dl, bl
 pec1:0042193F                 jnz     short loc_42195F
 pec1:00421941                 test    cl, cl
 pec1:00421943                 jz      short loc_42195B
 pec1:00421945                 mov     dl, [eax+1]
 pec1:00421948                 mov     bl, [esi+1]
 pec1:0042194B                 mov     cl, dl
 pec1:0042194D                 cmp     dl, bl
 pec1:0042194F                 jnz     short loc_42195F
 pec1:00421951                 add     eax, 2
 pec1:00421954                 add     esi, 2
 pec1:00421957                 test    cl, cl
 pec1:00421959                 jnz     short loc_421937
 pec1:0042195B 
 pec1:0042195B loc_42195B:                             ; CODE XREF: unknown_libname_44+1E93j
 pec1:0042195B                 xor     eax, eax
 pec1:0042195D                 jmp     short loc_421964
 

Как говорится - почувствуйте разницу. Успехов Вам, мои дорогие коллеги:-)

Обсуждение статьи: Исследование Magic Utilities 2003 2.40 >>>


Комментарии к статье: Исследование Magic Utilities 2003 2.40

MozgC 07.04.2004 22:04:56
Дело в том, что там онлайн проверка. За версию 2.40 не отвечаю (хотя почти уверен) но в версии 3.00 точно есть. Там надо в реестре в ветке Software\\EFREESKY SOFTWARE\\MagicTweak\\Main создать ключ Settings со значением \"1\"
---
RottingCorpse 17.04.2004 22:58:19
Тутор может быть и ничего.... только вот такие длинные листинги ни к чему... надо локализовать очаг \"проблемы\" и показывать его, а не еще половину программы :)
---
Bad_guy 04.03.2006 17:42:13
Тестовый коммент
---

Материалы находятся на сайте https://exelab.ru



Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS