Что вы думаете насчет этого типа защиты программ?

Разговоры на любые темы: вы можете обсудить здесь какой-либо сайт, найти единомышленников или просто пообщаться...
SeRRg
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 343
Зарегистрирован: 25.11.2003 (Вт) 20:14
Откуда: Тюмень!

Что вы думаете насчет этого типа защиты программ?

Сообщение SeRRg » 27.06.2005 (Пн) 10:02

Здравствуйте!
Я знаю что на форуме есть люди разбирающиеся в асме и умеющие "исследовать защиту программ" :). Опять я возвращаюсь к этому избитому вопросу: что вы думаете насчет такой защиты программы? (в архиве) Скажу сразу для облегчения задачи, что пароль цифровой. Верхнее поле - имя пользователя (любое), нижнее - пароль. Ваша задача - найти правильное имя и пароль или понять сам принцип защиты и высказаться. (и рассказать как вы его нашли :)
При неправильном пароле программа просто скажет "выполнила недопустимую операцию и все" При правильном - сами увидите :)
Вложения
Rabochii CrackMe.zip
Вот он.
(10.06 Кб) Скачиваний: 122
VB - это звучит!

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 27.06.2005 (Пн) 12:08

Особенно меня порадовал следующий код: :)

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


Насколько я смог понять с помощью того барахла, что у меня есть сейчас... Афтар делает MD5-хэш логина, заменяет в нём A на 1, B на 2, C на 3, D на 4, E на 5, D на 6, берёт 6 первых символов получившейся строки, переводит в Long (видать, чтобы избежать перехвата по vbaStrComp? ню-ню...), берёт пасворд, переводит в Long, сравнивает, если не равно, выполняется приведённый выше код с последующим call eax, при этом в eax всякий гон, что приводит к вылету...

Интересно, нафига всё это? :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 27.06.2005 (Пн) 12:33

Ага, не совсем...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 27.06.2005 (Пн) 12:57

Код: Выделить всё
// Command1_Click
[edi+38] = CLng(password)
[edi+3C] = CLng(Left$(Replace(Replace(Replace(Replace(Replace(Replace(MD5Hash(login), "A", "1"), "B", "2"), "C", "3"), "D", "4"), "E", "5"), "F", "6"), 6))
[edi+3C] = [edi+3C] XOR [edi+38]
eax = [edi+3C]
call [eax]


Иными словами, нужно подобрать такой пароль, чтобы, после того как его сксорят с первыми символами хэша, получился адрес, по которому лежит адрес вызываемой процедуры.
Не имею ни малейшего желания подбирать эту разницу, хотя и могу таким образом направить на выполнение любую часть программы :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

uhm
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1597
Зарегистрирован: 02.12.2004 (Чт) 15:21

Сообщение uhm » 27.06.2005 (Пн) 13:12

Прикольно, я практически угадал, не видя код :)

Когда-то видел нечто подобное, только слегка более продвинуто: программа на основе пароля генерировала кусок кода, который затем запускался. Если пароль был неправильный, вместо кода, соответственно, была белиберда...

На практике все такие методы неприменимы - любой человек, который знает пароль, может получить правильный код и распространять его.

Павлуша
Не годный к строевой
Не годный к строевой
Аватара пользователя
 
Сообщения: 884
Зарегистрирован: 01.01.2005 (Сб) 19:31
Откуда: Смотря кто?

Сообщение Павлуша » 27.06.2005 (Пн) 13:17

я где то слышал про защиту виртуальной машино...
там чё-то про то что дизассемблером промежуточный код не читается и все прочее... никто ничего не подскажет по этому поводу?
Пошли все на фиг, я фея! :flower:

SeRRg
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 343
Зарегистрирован: 25.11.2003 (Вт) 20:14
Откуда: Тюмень!

Сообщение SeRRg » 27.06.2005 (Пн) 13:36

МАЛАДЕЦ GSerg!

2uhm
Я видел тоже такую защиту только там код не генерировался а расшифровывался и без ключа никак не мог правильно расшифроваться. Тока это опасно было - мало ли что там расшифруется :) Плюс я не представляю, как это можно сделать на бейсике

Ты говоришь, что любой человек знающий пароль... А как он узнает? Я не собираюсчь распространять.Если он купит, то я думаю что он не будет его распространять... И как он его распространит? В ассемблерном виде? Я думаю, что это надежнее чем банальная проверка совпадает-несовпадает...
VB - это звучит!

SeRRg
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 343
Зарегистрирован: 25.11.2003 (Вт) 20:14
Откуда: Тюмень!

Сообщение SeRRg » 27.06.2005 (Пн) 13:43

uhm прикольно скзал: любой человек знающий пароль будет распространять код. А почему бы не распространять сам пароль :)
VB - это звучит!

uhm
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1597
Зарегистрирован: 02.12.2004 (Чт) 15:21

Сообщение uhm » 27.06.2005 (Пн) 14:46

Не-е, смотри:

Допустим, ты делаешь коммерческую программу, которая всем нужна. И допустим, есть злобный хакер, который хочет твою программу вскрыть и сделать, хммм... "условно-бесплатной" :) Ясно, думаю, что такой способ не пройдет (а уж что распространять - пароль или "правильный" экзешник - дело десятое).

"Генерировался" или "расшифровывался" - в данном случае, примерно одно и то же. А что получается в результате расшифровки с неправильным паролем - это, по идее, уже не твои проблемы (твоя же программа тоже выполняла "недопустимые операции").

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 27.06.2005 (Пн) 15:35

Да, и по поводу самой защиты :)

Для написания кейгена достаточно либо узнать правильный адрес перехода, либо один раз увидеть правильную пару логин-пароль :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

SeRRg
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 343
Зарегистрирован: 25.11.2003 (Вт) 20:14
Откуда: Тюмень!

Сообщение SeRRg » 27.06.2005 (Пн) 16:36

Нет. Надо еще узнать и сам алгоритм вычисления адреса! :)
(у меня ведь здесь всего лишь упрощенный случай) - а ведь можно усложнить и напихать докучи мусора...

Допустим, ты знаешь правильный адрес перехода. И знаешь логин. Соответсвенно, вся трудность будет заключаться в алгоритме генерации... А при сравнении просто сравнилось-несравнилось надо знать только алгоритм генерации и больше ничего. То есть это

все-таки лучше чем просто сранение пароля и логина?
VB - это звучит!

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 27.06.2005 (Пн) 16:45

Боже, а какие возможности по code injection и встариванию разных троянов и вирей, это открывает.....

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 27.06.2005 (Пн) 17:15

А можно вопрос к автору?
У тебя все ключи моментально испортятся при перекомпиляции программы, что ли?
Каждый раз, обновляя свою копию, легальным юзерам придётся получать новый ключ?
Изображение

SeRRg
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 343
Зарегистрирован: 25.11.2003 (Вт) 20:14
Откуда: Тюмень!

Сообщение SeRRg » 27.06.2005 (Пн) 18:03

Хмм. Ну это смотря насколько глобально отличаются версии друг от друга. В моем случае я три раза немножко подправлял код и адрес процедуры не менялся. Хотя в целом, да, каждый раз придется получать новые ключи. Но это и хорошо с другой стороны - кое-кому придется каждый раз при выходе новой версии делать новые кейгены. А если они заплатят, то я буду готов отправлять им не только новые ключи, но и версии программы :)
VB - это звучит!

gaidar
System Debugger
System Debugger
 
Сообщения: 3152
Зарегистрирован: 23.12.2001 (Вс) 13:22

Сообщение gaidar » 28.06.2005 (Вт) 0:16

The difficult I’ll do right now. The impossible will take a little while. (c) US engineers in WWII
I don't always know what I'm talking about, but I know I'm right. (c) Muhammad Ali

Alexander N. Samarin
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 397
Зарегистрирован: 05.03.2005 (Сб) 20:59
Откуда: Интернат 18 (СУНЦ МГУ), комната 214А, кровать посередине

Сообщение Alexander N. Samarin » 28.06.2005 (Вт) 19:45

Вот подручными средствами (ДОСовская debug) получил asm. Это оно? :oops: :oops:
Вложения
crme_rel.zip
Это я пытался дизассемблировать ту прогу
(13 Кб) Скачиваний: 120
На это не смотрите! Это не подпись!!!!!!

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 28.06.2005 (Вт) 21:40

Лол :lol: :lol:

Alexander, то что ты дизассемблировал - это досовская заглушка, выводящая на экран "эта прога без Винды не запустится".

Досовский debug при работе с виндовыми прогами тебе совершенно, совершенно никак не поможет.
Изображение

A.A.Z.
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3035
Зарегистрирован: 30.06.2003 (Пн) 13:38

Сообщение A.A.Z. » 28.06.2005 (Вт) 21:46

Офф
Народ, а если брать готовый exe, вырезать откуда-нибудь из середины небольшой кусок кода и давать его пользователю в индивидуальном порядке (только если он заплатит)? Для "вставления" можно даже прогу отдельную написать :roll: Ведь если он введет что-то другое, прога просто не запустится :roll:

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 29.06.2005 (Ср) 3:50

Купят, вставят и будут распространять :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

A.A.Z.
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3035
Зарегистрирован: 30.06.2003 (Пн) 13:38

Сообщение A.A.Z. » 29.06.2005 (Ср) 13:37

Хм :) Но хотя бы один раз-то купят ;)

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 29.06.2005 (Ср) 14:33

Один раз и так можно впарить кому-нибудь, поднапрягшись :)

Alexander N. Samarin
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 397
Зарегистрирован: 05.03.2005 (Сб) 20:59
Откуда: Интернат 18 (СУНЦ МГУ), комната 214А, кровать посередине

Сообщение Alexander N. Samarin » 21.08.2005 (Вс) 17:15

tyomitch писал(а):Лол :lol: :lol:

Alexander, то что ты дизассемблировал - это досовская заглушка, выводящая на экран "эта прога без Винды не запустится".

Досовский debug при работе с виндовыми прогами тебе совершенно, совершенно никак не поможет.

Бить - то меня за что???
На это не смотрите! Это не подпись!!!!!!

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 21.08.2005 (Вс) 17:31

Как за что.

Наподнимал архивных тем по всему форуму - раз, орфография постов на нуле - два, Достоевского не читал - три.
Почему-то хочется тебя в игнор занести.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

IvanTheTerrible
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 94
Зарегистрирован: 20.07.2005 (Ср) 11:47
Откуда: Moscow

Сообщение IvanTheTerrible » 24.08.2005 (Ср) 13:35

A.A.Z. писал(а):Офф
Народ, а если брать готовый exe, вырезать откуда-нибудь из середины небольшой кусок кода и давать его пользователю в индивидуальном порядке (только если он заплатит)? Для "вставления" можно даже прогу отдельную написать :roll: Ведь если он введет что-то другое, прога просто не запустится :roll:


Возможно, что и сработает, если добавить следующие прибамбасы:
1. Пусть установленная у юзера программа автоматически с определенной периодичностью (скажем, еженедельно) скачивает через интернет некоторый пароль.

2. Этот пароль генерируется владельцем авторских прав на программу в зависимости от текущей даты и "отпечатка пальца" компа юзера (например, операционка + HDD Serial Number + ...). Таким образом, он будет годиться только для конкретного компа и его передача другим лицам бессмыслена.

3. Полученный ключ используется для дешифрации некоторого множества зашитых в программу констант, используемых разными блоками программы.

4. Добавить еще одно преобразование полученных в результате дешифрации значений через некоторую функцию от текущей даты.

5. Результат работы програмной ф-ий/процедур должен зависеть помимо прочего от полученных в (3) и (4) значений.

6. Сделать так, чтобы при "неправильных" значениях (3) и (4) включалось самоуничтожение. :lol:

Все это пока "весьма сыро"...
Надо бы пообсуждать, послушать критику...

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 24.08.2005 (Ср) 15:13

1. А если у юзера нет Интернета?
2. А если 1 чел купит программу, расшифрует её кусок, и выпустит "патч", расшифровывающий её и без твоего ключа?
Изображение

_Мика_
Гуру
Гуру
 
Сообщения: 1459
Зарегистрирован: 24.10.2003 (Пт) 15:05
Откуда: г. Москва, м.Речной вокзал

Сообщение _Мика_ » 24.08.2005 (Ср) 15:13

IvanTheTerrible писал(а):
A.A.Z. писал(а):Офф
Народ, а если брать готовый exe, вырезать откуда-нибудь из середины небольшой кусок кода и давать его пользователю в индивидуальном порядке (только если он заплатит)? Для "вставления" можно даже прогу отдельную написать :roll: Ведь если он введет что-то другое, прога просто не запустится :roll:


Возможно, что и сработает, если добавить следующие прибамбасы:
1. Пусть установленная у юзера программа автоматически с определенной периодичностью (скажем, еженедельно) скачивает через интернет некоторый пароль.

2. Этот пароль генерируется владельцем авторских прав на программу в зависимости от текущей даты и "отпечатка пальца" компа юзера (например, операционка + HDD Serial Number + ...). Таким образом, он будет годиться только для конкретного компа и его передача другим лицам бессмыслена.

3. Полученный ключ используется для дешифрации некоторого множества зашитых в программу констант, используемых разными блоками программы.

4. Добавить еще одно преобразование полученных в результате дешифрации значений через некоторую функцию от текущей даты.

5. Результат работы програмной ф-ий/процедур должен зависеть помимо прочего от полученных в (3) и (4) значений.

6. Сделать так, чтобы при "неправильных" значениях (3) и (4) включалось самоуничтожение. :lol:

Все это пока "весьма сыро"...
Надо бы пообсуждать, послушать критику...


Это все хорошо если у пользователя есть интернет....а если нету? :wink:
-Папа, а правда, что форумы делают людей дибилами?
-гы гы гы, сынок, лол!

IvanTheTerrible
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 94
Зарегистрирован: 20.07.2005 (Ср) 11:47
Откуда: Moscow

Сообщение IvanTheTerrible » 24.08.2005 (Ср) 15:39

tyomitch писал(а):1. А если у юзера нет Интернета?
2. А если 1 чел купит программу, расшифрует её кусок, и выпустит "патч", расшифровывающий её и без твоего ключа?


Абсолютной защиты не существует по-определению. Любая программа может быть взломана. Задача защиты - сделать этот процесс ЭКОНОМИЧЕСКИ невыгодным.

Вариант "нет интернета" не рассматриваю. То, что предлагаю, предназначено для случаев, когда он есть.

Как вариант, возможно и такое решение (но, подчеркиваю, только для On-line реализаций). В программу вставляется функция, результат которой возвращается сервером. Можно сделать так, что возвращаемое значение будет сложно предсказать (не 0 или 1, а что-нибудь посложнее).

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 24.08.2005 (Ср) 17:52

IvanTheTerrible писал(а):Как вариант, возможно и такое решение (но, подчеркиваю, только для On-line реализаций). В программу вставляется функция, результат которой возвращается сервером. Можно сделать так, что возвращаемое значение будет сложно предсказать (не 0 или 1, а что-нибудь посложнее).

Как вариант, можно вместо программы написать веб-сервис, тогда на машине пользователя не будет ни байта кода, и нечего будет ломать :lol:
Изображение

IvanTheTerrible
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 94
Зарегистрирован: 20.07.2005 (Ср) 11:47
Откуда: Moscow

Сообщение IvanTheTerrible » 24.08.2005 (Ср) 18:28

tyomitch писал(а):Как вариант, можно вместо программы написать веб-сервис, тогда на машине пользователя не будет ни байта кода, и нечего будет ломать :lol:


Ломать начнут веб-сервер :lol:

MeMBus
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 450
Зарегистрирован: 23.02.2005 (Ср) 7:03
Откуда: Из леса...

Сообщение MeMBus » 25.08.2005 (Чт) 6:51

Самый лучший вариант вообще ничего не писать, тогда и ломать не будут :lol:
Бороться и искать, найти и перепрятать!

След.

Вернуться в Народный треп

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

    TopList