Как разбить видео файл 9210

Смартфоны и коммуникаторы Nokia 9500, 9300, 9210 + Nokia 7710 + платформы Symbian Series 60 + смартфоны Symbian UIQ
Аватара пользователя
Gorby
Доктор (4 lvl)
Сообщения: 324
Зарегистрирован: Ср июн 04, 2003 15:03

Сообщение Gorby » Вт апр 20, 2004 14:34

Не-а. А надо? Тогда попробую сегодня. ;) Результаты постить сюда? ;) Или ты имеешь в виду защиту диска?

Аватара пользователя
KM
Истинный зышщтовец
Сообщения: 659
Зарегистрирован: Ср июн 04, 2003 15:03

Сообщение KM » Вт апр 20, 2004 14:43

Да нет, не надо (в смысле, нет необходимости). Просто было интересно.
Самой проги, конечно же (не диска).

Аватара пользователя
Gorby
Доктор (4 lvl)
Сообщения: 324
Зарегистрирован: Ср июн 04, 2003 15:03

Сообщение Gorby » Вт апр 20, 2004 16:33

Хм. И тем не менее... Надеюсь, вы понимаете, любое изменение кода программы будет уголовно наказуемо... ;) Слава богу, по листингу это сделать невозможно, так что вот, этот листинг с моими комментариями:

Код: Выделить всё

Display_Registration_Dialog

; ███████████████ S U B	R O U T	I N E ███████████████████████████████████████


Display_Registration_Dialog				; CODE XREF: .text:10000???

var_10C= -0x10C
arg_0=	0

    STMFD SP!, {R4,LR}
    SUB	SP, SP,	#0x104
    MOV	R4, R0
    ADD	R0, SP,	#0x5C
    MOV	R1, #0x50
    BL	sub_10006600		; Определяем объект.

    MOV	R3, #0
    STR	R3, [SP,#0x10C+var_10C]
    MOV	R0, #0x14
    BL	sub_100065D0		; Выделяем память.

    CMP	R0, #0			; Удачно?
    ADDNE R1, SP, #0x5C
    MOVNE R2, SP
    BLNE sub_10005030		; Тогда	инициализируем переменные 
				; для ввода серийника.


Проинициализировали стек, выделили память для обьекта 
Registration_Dialog, который грузим из .rsc- файла. 
Структура объекта следующая: 

ResourceID: 204DA010
Type: Unknown

лRegistrationd-єлIMEIлUser name2Registration codeMл
If you want to register	later press  Cancel 
You can	try program for	21 days.

    LDR	R1, =0x204DA010		; Загружаем ResourceID.
    BL	sub_10006390		; Выдергиваем из файла строки в	формате	
				; WidePascal Unicode, запускаем	диалог 
				; регистрации, сохраняем данные	в переменных.

    CMP	R0, #0			; Выясняем, не был ли нажат Cancel.
    BEQ	loc_10005114		; Если "да", то выходим из процедуры 
				; с флагом "Незарегистрирован".

    MOV	R0, R4
    ADD	R1, SP,	#0x5C
    LDR	R2, [SP,#0x10C+var_10C]	; Подготавливаем данные	для процедуры 
				; верификации серийного	номера со 
				; свежевведенным.
    BL	sub_10008680		; Прыгаем на процедуру проверки	двух номеров: 
				; введенного и того, который будет рассчитан 
				; на основании IMEI. Расчет будет происходить
				; внутри SDRIVE.DLL в процедуре	с ординалом 30h.
				; (вынос процедуры проверки из основного 
				; исполняемого файла в библиотеку - единственное
				; отличие от других программ SymbianWare/Wave).

    CMP	R0, #0			; Самое	интересное: процедура SDRIVE_30	возвращает "0", 
				; если регистрация неудачная и что-то другое, если 
				; удачная.
    BEQ	loc_100050D4		; Если "0", то считаем, что регистрация не 
				; прошла и прыгаем на кусок кода, который 
				; выводит соответствующий текст.

    MOV	R0, #1			; Регистрация удачна и мы делаем соответствующую
				; отметку в регистре R0.
    B	loc_10005118		; Прыгаем на выход из процедуры, огибая
				; присвоение 0 для результата регистрации.

; ───────────────────────────────────────────────────────────────────────────
dword_100050D0 DCD 0x204DA010	; DATA XREF: D_R_D+38
; ───────────────────────────────────────────────────────────────────────────

loc_100050D4			; CODE XREF: D_R_D+5C
    ADD	R0, SP,	#4		; Здесь	и далее	выводим	строки на экран, 
				; которые говорят о неверности серийника.
    MOV	R1, #0x28
    BL	sub_10006600

    BL	sub_10006CB0

    MOV	R4, R0
    ADD	R1, SP,	#0x5C
    LDR	R2, =0x204DA05B
    BL	sub_10006C90

    MOV	R0, R4
    ADD	R1, SP,	#4
    LDR	R2, =0x204DA05C
    BL	sub_10006C90

    ADD	R0, SP,	#0x5C
    ADD	R1, SP,	#4
    MOV	R2, #0
    BL	sub_10008370		; Диалог в виде	строчки	на экране в рамочке. ;)


loc_10005114			; CODE XREF: D_R_D+44
    MOV	R0, #0			; Вот здесь присваивают	значение функции в 
				; случае неудачной регистрации.

loc_10005118			; CODE XREF: D_R_D+64
    B	loc_10005124		; Прыгаем на выход.

; ───────────────────────────────────────────────────────────────────────────
dword_1000511C DCD 0x204DA05B	; DATA XREF: D_R_D+84
dword_10005120 DCD 0x204DA05C	; DATA XREF: D_R_D+94
; ───────────────────────────────────────────────────────────────────────────

loc_10005124			; CODE XREF: D_R_D+B0
    ADD	SP, SP,	#0x104
    LDMFD SP!, {R4,LR}		; Очищаем стек.
    BX	LR			; Возвращаемся.	R0 содержит "0", если регистрация 
				; неудачна и "1", если удачна. Вуаля! ;)

; End of function D_R_D
Надеюсь, что это будет интересно хоть кому-нибудь... ;)

2КМ: Удовлетворен? ;)

Аватара пользователя
KM
Истинный зышщтовец
Сообщения: 659
Зарегистрирован: Ср июн 04, 2003 15:03

Сообщение KM » Вт апр 20, 2004 17:08

Не, я совершенно в этом ничего не понимаю, так что листинг можно было не приводить. И я таки не понял, получилось или нет? (Заработал ли он).

Аватара пользователя
Gorby
Доктор (4 lvl)
Сообщения: 324
Зарегистрирован: Ср июн 04, 2003 15:03

Сообщение Gorby » Вт апр 20, 2004 17:37

Ты ж меня на подсудное дело толкаешь, провокатор! ;) Хотя... Если ты гарантируешь, что вы меня не будете преследовать по закону, не будете какими-либо иными способами ущемлять мои права и требовать компенсаций при условии нераспространения информации, которую я получил из анализа дизассемблированного кода... То я попробую. ;) Договорились? ;)

PS И неужели ты действительно ничего не понимаешь в листинге, что я привел? :( Не верю! (с). ;) Там же все понятно!

PPS И почему это не может работать, вы что там хитрую защиту придумали? ;)

PPPS Залез в sdrive.dll. Интерееесно... Интерееесно...

Аватара пользователя
KM
Истинный зышщтовец
Сообщения: 659
Зарегистрирован: Ср июн 04, 2003 15:03

Сообщение KM » Вт апр 20, 2004 17:46

Да просто было дело, один перец ломал-ломал SDrive, да так и не сломал. А другие проги поломаны. Вот и весь интерес.

Листинги приводить абсолютно бесполезно, я не программист. Мне лучше человеческим языком: "да, поломал, работает" или "не получилось" :)

Насчет преследования: прикалываешься что ли 8)

Аватара пользователя
Gorby
Доктор (4 lvl)
Сообщения: 324
Зарегистрирован: Ср июн 04, 2003 15:03

Сообщение Gorby » Вт апр 20, 2004 17:46

Dllка-то, оказывается, просто заглушка для взаимодействия с сервером-процессом SDriveSrv.exe... ;) Прикольно. Идем тогда далее. Функция 16h служит для вызова процедуры проверки серийника. Идем глубже. Хорошо, на работе чуть приутихло все. Могу спокойно ковыряться. ;)

Аватара пользователя
Gorby
Доктор (4 lvl)
Сообщения: 324
Зарегистрирован: Ср июн 04, 2003 15:03

Сообщение Gorby » Вт апр 20, 2004 19:23

Так, прошло полтора часа. Нашел саму процедуру калькуляции кода из IMEI и имени. Сделано, конечно, через задницу.. ;) В смысле, рассказываю: сам диалог для сериала вызывается через программу-интерфейс, дальше эти данные передаются в библиотеку-заглушку, оттуда передаются основному фоновому процессу, который через очередную заглушку их сравнивает с данными, получаемыми от процедуры расчета кода. Вот так. Осталось сделать красивый патч и через полчасика будет все готово. Сообщу, как получится. ;) Спасибо за приятно проведенное время. ;) По моему рейтингу защита тянет процентов на двадцать. ;) Лучше на Series 80 был защищен только Contacts Manager. ;) Поздравляю!

PS Обожаю ИЗВРАЩЕННЫЕ процедуры генерации кода от SymbianWare/Wave. ;) В сам алгоритм расчета даже не лезу... ;) Ибо просто писец. ;)

Аватара пользователя
Gorby
Доктор (4 lvl)
Сообщения: 324
Зарегистрирован: Ср июн 04, 2003 15:03

Сообщение Gorby » Вт апр 20, 2004 19:50

Ну, в общем, все. Почистил файл, убрал все проверки. Проверок было аж три штуки. ;) Первая - про вводе номера, вторая при чтении из файла, третья при проверке на шароварность (истек или нет 21 день). Все. Пишите письма. ;) Если не веришь, могу выслать .dif-файл. Изменений аж 9 байтов ;) Из них 4 лишних. Можно было не менять. Но я оставил, лень исправлять. Теперь вопрос. Что делать с получившимся SDriveSrv.exe? Может, подскажешь? ;)

Аватара пользователя
KM
Истинный зышщтовец
Сообщения: 659
Зарегистрирован: Ср июн 04, 2003 15:03

Сообщение KM » Вт апр 20, 2004 20:15

Ясненько, спасибо. Правда, ты так и не ответил на вопрос, заработал ли он или нет.

> Что делать с получившимся SDriveSrv.exe? Может, подскажешь?

Я не понимаю смысла этого вопроса и какой ответ ты хочешь получить. Попугать, побравировать или еще что?

Аватара пользователя
Gorby
Доктор (4 lvl)
Сообщения: 324
Зарегистрирован: Ср июн 04, 2003 15:03

Сообщение Gorby » Вт апр 20, 2004 20:37

Определенно, тон твоего письма поменялся... :( Раньше ты был доброжелательный, типа "А ну ка сломай"! А последнее сообщение меня расстроило... :( Скажи пожалуйста, ты являешься совладельцем Симбиан Варов/Вавов? Если да, тогда понятно.
Отвечаю на твой вопрос: да, сломал. Да, работает. Да, вроде без глюков. Да, если даты на машине откручивать вперед-назад. Да, если создавать и убивать защищенные диски. Да, все это прекрасно функционирует.
Ни пугать, ни бравировать я не хочу. Я просто хочу сказать, что нельзя недооценивать нужность защиты программ. Вот и все. Я просто хотел поприкалываться. И посмотреть твою реакцию. А еще хочу пообщаться с разработчиками. И хочу, чтобы ты дал им ссылку на этот thread. Вот и все, вроде. А еще я расстроен, блин, твоим отношением. Сначала берешь на слабо, а потом обижаешься, если получилось. И твоим, блин, горе-разработчикам, передай, что в этом SecureDrive просто идеально было бы на основе хэша серийника, имей и имени генерить ключ для доступа к дискам. Тогда крякеры будут сосать еще достаточно долго... И если в их, блин, "светлые" головы не приходит такая идея, то пусть деньги, блин, теряют на кряках. Софтварники, е-мое. Удручен я, честное слово...

И можно еще личный вопрос: а чем, вообще, по жизни, занимаешься? ;)

Аватара пользователя
KM
Истинный зышщтовец
Сообщения: 659
Зарегистрирован: Ср июн 04, 2003 15:03

Сообщение KM » Вт апр 20, 2004 20:49

Гы :) Перечитай еще раз сначала: я нигде не только не говорил "слабо?", но даже нигде не было подобного тона. Потому что разговор вообще не об этом был. Я всего лишь интересовался, ломал ли ты, и работал ли поломанный СД. И даже объяснил причину интереса.

А измененный тон в ответе в точности равен тону вопроса, который я процитировал.

По поводу защиты обсуждение было и суть его такова: ЛЮБАЯ защита ломается. Про хэши ты говоришь, потому что, видимо, никогда не программировал под Симбиан, потому что в противном случае не говорил бы того, что говоришь 8)

Аватара пользователя
Gorby
Доктор (4 lvl)
Сообщения: 324
Зарегистрирован: Ср июн 04, 2003 15:03

Сообщение Gorby » Вт апр 20, 2004 21:01

Ты так и не сказал, чем занимаешься... ;) По поводу хэшей я тебе скажу, что специфика SecureDrive - это генерация DCA/RCA ключей для криптования защищенного диска на основе массива случайных чисел. Нужно быть совсем софтверником ;), чтобы не понять, что в массив случайных чисел можно и нужно засунуть хэш от серийника. Это просто, как два байта переслать. Стойкость системы в данном случае не зависит от защиты кода, вот принципиальное отличие от других программ друзей твоих. Не нужно защищать код, достаточно просто сделать так, чтобы на заломанной программе нельзя было открыть диск, который зашифрован. Все диалоги будут говорить о том, что прога зарегистрирована, а диски работать не будут. Вот тебе стойкая защита! И хрен я чего со своим битхаком сделаю... Да, в симбиане код и ресурсы защитить практически невозможно. Но вы защищаете данные! С данными даже в симбиан можно делать все, что угодно. Напряги думалку. ;) Безалаберность это. ;)

Аватара пользователя
KM
Истинный зышщтовец
Сообщения: 659
Зарегистрирован: Ср июн 04, 2003 15:03

Сообщение KM » Вт апр 20, 2004 21:13

И не скажу :)

Угу, вот сам и представь ситуацию: юзер триалит прогу (кода нет). Затем он ее покупает, вводит код и... опа?
А если вдруг он захочет ее перерегистрировать или просто перенести диск на другой девайс?
В общем, сложно придумать что-то хуже этого. Предлагать перекриптовывать диск не надо: если что-то случится в процессе перекриптовывания, с данными можно попрощаться навсегда. Именно по этой причине в СД отсутствует возм-ть сменить пароль.

Аватара пользователя
Gorby
Доктор (4 lvl)
Сообщения: 324
Зарегистрирован: Ср июн 04, 2003 15:03

Сообщение Gorby » Ср апр 21, 2004 11:14

Ты не понял. Хэш не привязан только к самому IMEI, это функция, которая зависит от трех параметров: IMEI, серийник и имя владельца. И ее значение будет ОДИНАКОВЫМ на всех коммуникаторах, для всех SecureDrive. Но это значение будет вычисляться каждый раз во время выполнения программы. В реальном времени. И без долбаггера невозможно будет получить правильное значение хэша, которое открывает диск. А долбаггеров для Symbian в свободном распространении нет. Слышал я краем уха, что он, возможно, существует, но реально не видел. Может, это слухи все. У меня, во всяком случае, его нету. По поводу триальности. Да, самый сложный момент - это триальность. Его тупо можно обойти, предлагая в незарегенной версии создавать диски без криптования. Типа, криптование будет доступно после регистрации. Пусть я даже отломал регистрацию. Даже вводятся какие-то данные, сохраняются в ini-файле, на основании которых криптуется диск. Вот здесь самое интересное: вы используете симметричный алгоритм шифрования, где ключи совпадают. Если перейти на ассимметричный, типа PGP, то заломанная регистрация позволит шифровать диск, а расшифровывать его без уникального хэша (см выше) будет невозможно. Вуаля! Кряк не работает. Я отсасываю. ;)

Еще по поводу триальности. Можно и с этим справится (создавать зашифрованные диски в триальной версии). Я подумаю, какая для этого должна быть хэш-функция. Денег заплатите? ;) Или, может, project-manager'ом возьмете по совместительству? ;)

Закрыто

Вернуться в «Symbian Series 90, Series 80, Series 60, Symbian UIQ»