значит найти сернум не реально? Блин. Откуда я знаю? Очень может быть, что и реально. Однако здесь требуется навык обращения с числами - знание теории чисел и криптографии в достаточном объеме. Я тебе же уже дал методику. Берешь и делаешь. Однако ты не захотел так поступить. Так чего еще ждать?
всё очень просто сделать в ollydbg, я даже туториал написал на эту программу, тем более аспак этой версии распаковывается в два-три действия допустим вы уже распаковали аспак, теперь ищем все возможные строки в ексешнике (all referenced strings), ищем что-то похожее на "UI70ME" ставим бряк (F2) и так раз семь-восемь, теперь возвращаемся к первому найденому "UI70ME", убираем бряк, жмём enter (вернулись к коду), чуть ниже есть цикл проверки серийника на валидность, я сделал так: занопил все jnz'шки. Это проделываем со всеми "UI70ME" далее берём кейген от любой версии uiso и регаем, have fun
Av0id далее берём кейген от любой версии uiso и регаем, have fun То есть я так понимаю, алгоритм генерации s/n от версии к версии не меняется, а просто где-то ещё учитывается номер версии. А тут как бы на всё это забивается. Круто (я бы до этого сам год доходил). Просьба дать ссылочку на статью. Заранее спасибо.
volodya Однако ты не захотел так поступить. Так чего еще ждать? На самом деле я попробовал, нифига не получилось (нехватило ума разобраться, буду учиться).
На самом деле я попробовал, нифига не получилось (нехватило ума разобраться, буду учиться). В действительности все не так уж и страшно. Код (Text): .text:004027AF lea ecx, [ebp+p] .text:004027B5 push ecx ; p .text:004027B6 lea eax, [ebp+_s] .text:004027BC push eax ; s .text:004027BD call GetPassword .text:004027C2 add esp, 8 .text:004027C5 mov status_flag, eax .text:004027CA mov edx, status_flag .text:004027D0 test edx, edx .text:004027D2 jz short loc_4027F1 .text:004027D4 lea ecx, [ebp+p] .text:004027DA push ecx .text:004027DB lea eax, [ebp+_s] .text:004027E1 push eax .text:004027E2 call CheckPassword .text:004027E7 add esp, 8 .text:004027EA mov status_flag, eax GetPassword - извлекает пароль из регистра. Расшифровывает и т.п. CheckPassword - уже выполняет проверку. Пароль преобразуется пакетом LIP в целое число - функция zhsread. Потом считают экспоненту (zexpmod), потом пишут ее в буфер (zswrite). Активно развлекаются со временем (_time) - было лень разбираться почему. Потом считают MD5 от полученных результатов. В моем релизе от ROR это место просто западчили Через MD5 так просто не пробиться Потом еще чего-то там делают и мне, ей-богу, надоело. Разбирайся. Тебе ведь ломать надо.
Если писать кейген - то надо инвертировать взятие экспоненты - т.е. посчитать дискретный логарифм. По-моему, придется также инвертировать CRC16 из GetPassword. А MD5 придется просто падчить - его не обмануть пока. Вот тебе и пример кейгена + падча.
volodya Разбирайся. Тебе ведь ломать надо. Решил, что когда буду в уме считать дискретный логарифм, то тогда и буду такие проги исследовать.(Пока буду ковыряться в Softice, ломать чё попроще.) На самом деле большое спасибо за участие в данном вопросе тебе и всем остальным. Av0id ок, буду дома скину ps. ещё один ньюанс, статья на английском языке Жду с нетерпением.
насколько я знаю экспоненты можно заменить своими, множество кейген-патчей сделано именно так, взять хотя был кейген-патч для TheBat v3 туториал есть, инета дома нету, блин, придётся на работу тащить
//Скомпилил LIP, сделал сигнатурки, запихал в иду -> получил фигу. Не та версия LIP'a? Не та версия compiler'a?
Не та версия LIP'a? Не та версия compiler'a? Хм... Справедливое замечание! Но я вообще не знаю, сколько версий LIP'а есть в природе. Что до компилятора - и опять ты прав...