03.08.2024

Создаём патч для всех версий Crystal Player Pro

Vortex777

Интересующийся
Регистрация
27.06.2022
Сообщения
98
Реакции
0
Гарант продажи
0
Гарант покупки
0
Депозит
0 р
Попытаемся сделать универсальный пат4ер для всех версий Crystal Player Pro, которая нагло просит заругистрировать, 4то проявляется в показе длительного нага каждые 5 минут при просматривании фильмов поверх него самого. Это не радует. так 4то грузим жертву в ольку. распаковываем.

00775001 > 90 NOP
00775002 60 PUSHAD
00775003 E8 03000000 CALL Crystal.0077500B
00775008 -E9 EB045D45 JMP 45D454F8
0077500D 55 PUSH EBP
0077500E C3 RETN
трейсим по F7 p заходом в подфункции до команды восстановления предыдущего состояния регистров.
007753B0 61 POPAD
007753B1 75 08 JNZ SHORT Crystal.007753BB
007753B3 B8 01000000 MOV EAX,1
007753B8 C2 0C00 RETN 0C
попадаем на OEP. можем дампить и без проблем восстанавливать импорт импреком.
004E3253 6A 60 PUSH 60
004E3255 . 68 08585300 PUSH Crystal.00535808
004E325A . E8 F5EAFFFF CALL Crystal.004E1D54
004E325F . BF 94000000 MOV EDI,94
004E3264 . 8BC7 MOV EAX,EDI
004E3266 . E8 35EDFFFF CALL Crystal.004E1FA0
004E326B . 8965 E8 MOV DWORD PTR SS:[EBP-18],ESP
004E326E . 8BF4 MOV ESI,ESP
004E3270 . 893E MOV DWORD PTR DS:[ESI],EDI
004E3272 . 56 PUSH ESI ; /pVersionInformation
004E3273 . FF15 2C124F00 CALL DWORD PTR DS:[4F122C] ; \GetVersionExA
004E3279 . 8B4E 10 MOV ECX,DWORD PTR DS:[ESI+10]
004E327C . 890D DC065B00 MOV DWORD PTR DS:[5B06DC],ECX
004E3282 . 8B46 04 MOV EAX,DWORD PTR DS:[ESI+4]
004E3285 . A3 E8065B00 MOV DWORD PTR DS:[5B06E8],EAX
004E328A . 8B56 08 MOV EDX,DWORD PTR DS:[ESI+8]
004E328D . 8915 EC065B00 MOV DWORD PTR DS:[5B06EC],EDX
004E3293 . 8B76 0C MOV ESI,DWORD PTR DS:[ESI+C]
004E3296 . 81E6 FF7F0000 AND ESI,7FFF
004E329C . 8935 E0065B00 MOV DWORD PTR DS:[5B06E0],ESI
004E32A2 . 83F9 02 CMP ECX,2
004E32A5 . 74 0C JE SHORT Crystal.004E32B3
дамп пофиксен, рабо4ий файл создан, теперь можно искать функции регистрации. поскольку они более "интерфейсны" и реализуют лишь визуальное оповещение пользователя о вводе верного\неправильного регкода(4то я обнаружил в изу4ении прошлых релизов исследуемого продукта), то достато4но найти\править код, выводящий наг каждые 5мин и работаться жизни. Я в свое время нашел код проверки (немного поразмыслив, нужно искать вызовы функций CreateCompatibleDC, BitBlt, SelectObject, SetTimer и т.д., вызывающиеся в коде "рядом") - это .0041AB59 для последней 1.97 версий.
0041AB59 |. FF15 88104B00 CALL DWORD PTR DS:[<&gdi32.CreateCompati>; \CreateCompatibleDC
Для любого релиза найти его просто - поставив бряк на CreateCompatibleDC (бряков будет до 10) и
найдя нижележащий код около вызова:
0041AB06 |. 53 PUSH EBX ; /hWnd
0041AB07 |. 895C24 44 MOV DWORD PTR SS:[ESP+44],EBX ; |
0041AB0B |. 895C24 48 MOV DWORD PTR SS:[ESP+48],EBX ; |
0041AB0F |. 895C24 4C MOV DWORD PTR SS:[ESP+4C],EBX ; |
0041AB13 |. 895C24 50 MOV DWORD PTR SS:[ESP+50],EBX ; |
0041AB17 |. C74424 54 BC02>MOV DWORD PTR SS:[ESP+54],2BC ; |
0041AB1F |. 885C24 58 MOV BYTE PTR SS:[ESP+58],BL ; |
0041AB23 |. 885C24 59 MOV BYTE PTR SS:[ESP+59],BL ; |
0041AB27 |. 885C24 5A MOV BYTE PTR SS:[ESP+5A],BL ; |
0041AB2B |. C64424 5B 01 MOV BYTE PTR SS:[ESP+5B],1 ; |
0041AB30 |. C64424 5C 03 MOV BYTE PTR SS:[ESP+5C],3 ; |
0041AB35 |. C64424 5D 02 MOV BYTE PTR SS:[ESP+5D],2 ; |
0041AB3A |. C64424 5E 01 MOV BYTE PTR SS:[ESP+5E],1 ; |
0041AB3F |. C64424 5F 22 MOV BYTE PTR SS:[ESP+5F],22 ; |
0041AB44 |. 895424 68 MOV DWORD PTR SS:[ESP+68],EDX ; |
0041AB48 |. 894424 6C MOV DWORD PTR SS:[ESP+6C],EAX ; |
0041AB4C |. 894C24 7C MOV DWORD PTR SS:[ESP+7C],ECX ; |
0041AB50 |. FF15 44134B00 CALL DWORD PTR DS:[<&user32.GetDC>] ; \GetDC
Это и есть отрисовка нага. На пару десятков байт выше будет процедура проверки.
00476F3A |. E8 3C67FFFF CALL dumped_.0046D67B ; \dumped_.0046D67B
00476F3F |. 84C0 TEST AL,AL
00476F41 |. 0F84 AD010000 JE dumped_.004770F4
00476F47 |. A1 98D15200 MOV EAX,DWORD PTR DS:[52D198]
00476F4C |. 8945 B4 MOV DWORD PTR SS:[EBP-4C],EAX
00476F4F |. A1 9CD15200 MOV EAX,DWORD PTR DS:[52D19C]
Нам достато4но подменить выдаваемые ей результаты на


0041AAD2 . FEC8 DEC AL
0041AAD4 . E9 06020000 JMP cracked.0041ACDF
0041AAD9 90 NOP

где JMP прыгает на команду вида

0041ACDF > 8B77 08 MOV ESI,DWORD PTR DS:[EDI+8]

за 10-40 байт перед самим RET из функции

Результирующая сигнатура для пат4а будет выглядеть как


E8 ?? ?? FF FF 84 c0 0F 84! ?? ?? 00 00

она в файле встре4ается только 1 раз, и 4тобы сделать универсальный пат4ер для любой версии проигрывателя в ка4естве домашнего задания (никогда не думал 4то такое скажу) нужно сделать простенький парсер для подс4ета зна4ения 9ого байта в сигнатуре (этот байта равен смещению команды MOV ESI, XXX относительно JE XXX)

E8 ?? ?? FF FF FE c8 E9 A2! ?? ?? 00 00

ЗЫ: на ошибки и смыслой брейнфак не обращаем внимания - писалось в своебразном состоянии сознания

ЗЫЫ: gl hff!
 

Performance

Проверенный продавец
Проверенный продавец
Бар "Собрание"
Регистрация
05.12.2021
Сообщения
63
Реакции
2
Гарант продажи
0
Гарант покупки
0
Депозит
0 р
Спасибо за статью)
 
Сверху