|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Сен 9, 2003 08:53:18 · Поправил: Fenix Решил тут уговорить жадную прогу Atropos-SB ver.2003.07.16 (URL http://www.cyteg.com) - без проблем нашел нужную процедуру поставил в SIce на нее бряк ... и нифига. SIce отказывается реагировать на выполнение этой процедуры. Подскажите, в чем грабли. ЗЫ SIce v.4.05 в Win98SE. ЗЗЫ Адресок процедурки, если кто заинтерисовался - 0x00519FB4. |
|
|
Дата: Сен 9, 2003 22:11:29 На другие адреса бряки нормально? |
|
|
Дата: Сен 10, 2003 01:24:15 На другие, вне этой процедуры, вроде все ОК. Может там как-то до выполнения этой процедуры чего-то проверяющее стоит? |
|
|
Дата: Сен 14, 2003 12:14:15 Fenix Ну, конечно сосулька не будет брякаться, т.к. 00519FB4 не выполняется!... и вообще там кажись какой-то мусор валяется, чего тебя туда занесло :)... Значится, тут картина следующая: процедура проверки начинается здесь 017F:00521B3E 8BC0 MOV EAX,EAX 017F:00521B40 E8E3FCFFFF CALL 00521828 017F:00521B45 C3 RET в ней тебя интересует 017F:00521828 55 PUSH EBP 017F:00521829 8BEC MOV EBP,ESP 017F:0052182B 81C4E0FDFFFF ADD ESP,FFFFFDE0 017F:00521831 53 PUSH EBX 017F:00521832 56 PUSH ESI 017F:00521833 33D2 XOR EDX,EDX 017F:00521835 8995ECFDFFFF MOV [EBP-0214],EDX 017F:0052183B 8995E8FDFFFF MOV [EBP-0218],EDX 017F:00521841 8995E4FDFFFF MOV [EBP-021C],EDX 017F:00521847 8995E0FDFFFF MOV [EBP-0220],EDX 017F:0052184D 8995FCFEFFFF MOV [EBP-0104],EDX 017F:00521853 8995F8FDFFFF MOV [EBP-0208],EDX 017F:00521859 8995F4FDFFFF MOV [EBP-020C],EDX 017F:0052185F 8995F0FDFFFF MOV [EBP-0210],EDX 017F:00521865 8BF0 MOV ESI,EAX 017F:00521867 33C0 XOR EAX,EAX 017F:00521869 55 PUSH EBP 017F:0052186A 68581A5200 PUSH 00521A58 017F:0052186F 64FF30 PUSH DWORD PTR FS:[EAX] 017F:00521872 648920 MOV FS:[EAX],ESP 017F:00521875 33DB XOR EBX,EBX 017F:00521877 8B4604 MOV EAX,[ESI+04] 017F:0052187A 8B15B8584C00 MOV EDX,[004C58B8] 017F:00521880 E8C327EEFF CALL 00404048 017F:00521885 0540070000 ADD EAX,00000740 017F:0052188A 8D9628080000 LEA EDX,[ESI+00000828] 017F:00521890 E88F19EEFF CALL 00403224 017F:00521895 8B4604 MOV EAX,[ESI+04] 017F:00521898 8B15B8584C00 MOV EDX,[004C58B8] 017F:0052189E E8A527EEFF CALL 00404048 017F:005218A3 E82430FAFF CALL 004C48CC <- вот этот вызов 017F:005218A8 83C0FE ADD EAX,-02 017F:005218AB 83E802 SUB EAX,02 017F:005218AE 0F83A2000000 JAE 00521956 017F:005218B4 68681A5200 PUSH 00521A68 это я к тому привел, что может ты захочеш повтыкать в алгоритм генерации ключей, так уже будеш ориентироваться в последовательности вызовов. По себе знаю, как трудно бывает ковырять что-нить, когда не знаеш где одна процедура расположена относительно другой, тк.скз. не ориентироваться на местности. Чуствуеш себя как в темном лесу и ни одного проблеска вокруг... Короче, далее - в этом вызове самое интересное 017F:004C4995 8B45F8 MOV EAX,[EBP-08] 017F:004C4998 E81B07F4FF CALL 004050B8 <- здесь !!! 017F:004C499D 0F94C0 SETZ AL 017F:004C49A0 84C0 TEST AL,AL 017F:004C49A2 741A JZ 004C49BE <- здесь !!! 017F:004C49A4 8B55F8 MOV EDX,[EBP-08] 017F:004C49A7 8BC3 MOV EAX,EBX 017F:004C49A9 E80AFEFFFF CALL 004C47B8 017F:004C49AE 89B3640B0000 MOV [EBX+00000B64],ESI 017F:004C49B4 33C0 XOR EAX,EAX 017F:004C49B6 8945FC MOV [EBP-04],EAX 017F:004C49B9 E926010000 JMP 004C4AE4 017F:004C49BE 46 INC ESI 017F:004C49BF 83FE21 CMP ESI,21 <- и здесь !!! 017F:004C49C2 0F8552FFFFFF JNZ 004C491A CALL 004050B8 непосредственное сравнение введенного ключа с настоящим с возвращением установленного флага ZF, если ключ правильный. На входе в процедуру в edx содержится адресс введенного ключа, а в eax истинного. Проверка выполняется 32 раза (cmp esi,21) c генерацией нового проверочного ключа в каждом цикле (JNZ 004C491A ^), если введенный не совпадает в предыдущем. Ну тут понятно. Прога ведь имеет 6 отдельных лицензий, 1 канал/ 2 канала/ 4 канала/ 16 каналов/ LAN-монитор/ WEB-монитор соответственно 25/50/100/200 баксов... поэтому среди 32-х проверок эти 6 лицензий (в смысле ключей) и пробегают ;)... А именно, в следующих циклах: 0Bh - 1 канал 0Сh - 2 канала 0Dh - 4 канала 0Eh - 16 канала 0Fh - LAN-монитор 10h - WEB-монитор Кстати похоже, что выше лежащие процедуры и отвечают за создание проверочных ключей, поэтому начинай с них если что... Ну и все. Остается во время проверки перезаписать введенный ключ настоящим. Заменяеш этот 017F:004C4998 E81B07F4FF CALL 004050B8 на 017F:004C4998 E963A30F00 JMP 005BED00 Это секция ресурсов, cмещение в файле - 0x001B6D00 (смещение в файле CALL 004050B8 - 0x000C3D98). А там херячиш следующее 017F:005BED00 83FE10 CMP ESI,0Сh <- любая лицензия, на выбор :) 017F:005BED03 0F85945CF0FF JNZ 004C499D 017F:005BED09 96 XCHG EAX,ESI 017F:005BED0A 87FA XCHG EDI,EDX 017F:005BED0C 83C904 OR ECX,04 017F:005BED0F F3A5 REPZ MOVSD <- заменяем введенный ключ настоящим 017F:005BED11 96 XCHG EAX,ESI 017F:005BED12 87FA XCHG EDI,EDX 017F:005BED14 E98B5CF0FF JMP 004C49A4 Получается авторегистрация (гы-гы). Заходиш в последнюю, набираеш ник и любые 16(!) символов в качестве ключа. Шо нЭ ясн0! :) |
|
|
Дата: Сен 14, 2003 12:16:38 А прошка симпатичная. Я кстати себе без всяких выё скромно поставил на 2 канала, ну типа 25 баксов :)... Защита так себе, фонарненькая. Самое трудное было добраться до процедуры 004050B8, а там уже по накатаному (точнее не трудно, а муторно). Вообще, насколько я вижу, все современные проги, давным давно перестали напрямую использовать GetWindowTextA и GetDlgItemTextA, а hmemcpy в 2k вроде нету ?! Вот и в данном случае это наблюдается и во многих других прогах... приходится перегружатся под 98x, чтобы юзать спасительное hmemcpy, либо идти долго долго в обход. Наверняка есть альтернатива? |
|
|
Дата: Сен 15, 2003 01:15:29 2 Godness ГРОМАДНОЕ СПАСИБО!!! С меня причитается пиво :-) Когда сел и разобрался как вся защитка пашет, то аж обалдел от простоты :-) Всем спасибо, тему можно считать закрытой! |
|
|
Дата: Сен 15, 2003 14:53:33 Небольшое продолжение - весь мой пост относится к последней версии Atropos-SB ver.2003.09.09, просто сразу не заметил :)... |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.071 |