Защита программы. Алгоритм сравнения

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Тимофей
Обычный пользователь
Обычный пользователь
 
Сообщения: 83
Зарегистрирован: 01.03.2004 (Пн) 10:01
Откуда: Киров

Защита программы. Алгоритм сравнения

Сообщение Тимофей » 01.04.2005 (Пт) 9:18

Имеется программа с проверкой правильности ввода пароля. Сам пароль зашифрован и в явном виде в тексте программы не представлен. Но известно, что сам алгоритм сравнения представляет собой слабое место в защите. Можно ли применить какой-то метод для защиты. Сравниваемые строки - символьные. Как вариант побайтное сравнение. Может какие- нибудь еще предложения ?
И еще - варианты обеспечения триальности проги ?

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 01.04.2005 (Пт) 9:31

Сравнивай не пароли, а хэши паролей.
Lasciate ogni speranza, voi ch'entrate.

Тимофей
Обычный пользователь
Обычный пользователь
 
Сообщения: 83
Зарегистрирован: 01.03.2004 (Пн) 10:01
Откуда: Киров

Сообщение Тимофей » 01.04.2005 (Пт) 9:37

А если по-подробнее..........

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 01.04.2005 (Пт) 9:47

Что именно?
Lasciate ogni speranza, voi ch'entrate.

xolod
Гуру
Гуру
 
Сообщения: 1162
Зарегистрирован: 15.01.2004 (Чт) 0:42
Откуда: Moscow

Сообщение xolod » 01.04.2005 (Пт) 9:53

2 Тимофей
Да, хэши (только не MD5, а SHA1. Как реализовать? Поиск по форуму) надо использовать однозначно. Но есть и грустный момент. Везде, где происходит оператор условного перехода (сравнение), этот переход можно заменить на безусловный, тем самым сломать твою защиту в зародоше.
Вообще, от простого пользователя (и горе-кул-хаЦкера, начитавшегося www.xaker.ru) твоего метода более чем достаточно. От серьезных же комманд, типа Core, тебя не спасет ничего.
На моей памяти не взломанных программ по пальцам пересчитать. И занимаются ими крупные корпорации с сотнями опытных криптографов.

Constant ERROR_SUCCESS deprecated. I'm so happy.
Программирование и дизайн – http://www.macrointellect.ru

Тимофей
Обычный пользователь
Обычный пользователь
 
Сообщения: 83
Зарегистрирован: 01.03.2004 (Пн) 10:01
Откуда: Киров

Сообщение Тимофей » 01.04.2005 (Пт) 10:09

Хеши.. в том то и дело что пароли уже захешированы, а вот если отлавливается оператор условного перехода ? И как сделать триальность ?

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 01.04.2005 (Пт) 10:20

xolod, а почему SHA1?
Lasciate ogni speranza, voi ch'entrate.

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 01.04.2005 (Пт) 11:38

это он типа начитался про успехи китайских хакеров по вскрытию MD5 :D

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 01.04.2005 (Пт) 12:29

Konst_One писал(а):это он типа начитался про успехи китайских хакеров по вскрытию MD5 :D

К первому апреля и не такого начитаешься :)
Если уж успехи и будут, то не у хакеров, а в каком-нибудь математическом НИИ.
Lasciate ogni speranza, voi ch'entrate.

xolod
Гуру
Гуру
 
Сообщения: 1162
Зарегистрирован: 15.01.2004 (Чт) 0:42
Откуда: Moscow

Сообщение xolod » 01.04.2005 (Пт) 14:48

alibek
для справки: MD5 взломали 2 года назад
2 Konst_One
не надо пафоса молодой человек, тем более в том вопросе, в которым вы не сильны

Constant ERROR_SUCCESS deprecated. I'm so happy.
Программирование и дизайн – http://www.macrointellect.ru

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 01.04.2005 (Пт) 14:57

xolod писал(а):alibek
для справки: MD5 взломали 2 года назад

А что вкладывается в понятие "взломали"?
Lasciate ogni speranza, voi ch'entrate.

vvs_adm
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1492
Зарегистрирован: 03.02.2005 (Чт) 3:45
Откуда: оттуда ;)

Сообщение vvs_adm » 01.04.2005 (Пт) 15:21

alibek писал(а):А что вкладывается в понятие "взломали"?
Ну в смысле догадались, что означает на конце цифра 5...

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 01.04.2005 (Пт) 16:04

vvs_adm писал(а):Ну в смысле догадались, что означает на конце цифра 5...

Это невозможно.
Возможно вычислить такой текст, хэш которого будет равен требуемому, но мне в это не верится.
Lasciate ogni speranza, voi ch'entrate.

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 01.04.2005 (Пт) 16:32

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

2 xolod
на счет молодого человека - это отличная шутка :lol:

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 01.04.2005 (Пт) 17:35

А ссылок нельзя? Пока своими глазами не увижу, как программа создаст хэш, соответствующий моему имени и фамилии, не поверю :)
Lasciate ogni speranza, voi ch'entrate.

young
Обычный пользователь
Обычный пользователь
 
Сообщения: 95
Зарегистрирован: 19.06.2003 (Чт) 15:12
Откуда: Липецк

Сообщение young » 01.04.2005 (Пт) 18:01

Народ! Может вернёмся к теме?
Как происходит взлом? Просто в коде ставятся маркеры и пошаговым способом на уровне Ассемблера, при помощи спец. прог., коих в сети до неприличия, вводят в поле пасс и шаг за шагом смотрят, что с ним делается, доходят до места сравнения информации из двух регистров (в большем случае это аккамуляторы, но бывают и прочие извращенства) и там всё и меняют.
Как это исключить? Вопрос хороший.... Чем больше вы будите "парить" пасс в процессе обработки, тем сложнее будет лазить по коду, Ассемблер, блин, вам не VB =) Можно даже без сравнения, чисто на одной математике, к примеру введёный код при определённой комбинации над ним мат. операциями должен вызывать переполнение переменной или ещё чё позаковырестей.
Проверяйте =)

xolod
Гуру
Гуру
 
Сообщения: 1162
Зарегистрирован: 15.01.2004 (Чт) 0:42
Откуда: Moscow

Сообщение xolod » 01.04.2005 (Пт) 22:00

2 alibek
Конечно, по хешу восстановить данные невозможно.
Известно любому, понимающему принцип работы хеш-функций. :)
Принцип "взлома" основан на уменьшении времени подбора такого же хеша. Если брать в расчет, что MD5 дает 56 бит (примерно 2^30 операций) - то пересчет займет такое количество времени, за которое информация потеряет актуальность. Но путем хеш-колизии можно число операций сократить до 2^12-14. При применении кластеров компьютеров это вполне осуществимо.

2 Konst_One
Китайцы (а именно, Сяоюнь Ван, Йицунь Лиса Йинь и Хонбо Ю) взломали SHA1, а никак не MD5 (который уже 2 года как вычеркнут из стандартов безопасности). Так что вы, молодой человек, опять не в теме.

2 young
Взлом VB программы (тем паче, скомпилированной в P-Code) - уже очень сложная задача. Так что не заморачивайся, серьезно ;).
Или ты что-то очень дорогое и важное пишешь? Тогда HASP тебе в руки :)

Constant ERROR_SUCCESS deprecated. I'm so happy.
Программирование и дизайн – http://www.macrointellect.ru

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 02.04.2005 (Сб) 9:34

SHA-1, конечно, хотя это уже и не принципиально

http://security.compulenta.ru/171408/

Inferno
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 179
Зарегистрирован: 26.01.2005 (Ср) 1:06

Сообщение Inferno » 02.04.2005 (Сб) 13:29

Я лично сомневаюсь, что что-то невозможно взломать. Весь вопрос во времени и желании. Существует такое понятие как гарантированная стойкость. Это понятие определяет время в течении которого данные актуальны. По истечению этого времени владельца информации уже не волнует взломают код или нет.

KDima
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 759
Зарегистрирован: 14.07.2004 (Ср) 23:14
Откуда: СПб

Сообщение KDima » 02.04.2005 (Сб) 16:00

Взлом VB программы (тем паче, скомпилированной в P-Code) - уже очень сложная задача.


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

Последний раз редактировалось: Administrator (15.07.2004 (Вт) 00:01), всего редактировалось 999 раз(а)

hCORe
VB - Экстремал
VB - Экстремал
Аватара пользователя
 
Сообщения: 2332
Зарегистрирован: 22.02.2003 (Сб) 15:21
Откуда: parent directory

Сообщение hCORe » 02.04.2005 (Сб) 17:03

Не сверхпросто, не сверхсложно - а "как обычно". Вот руководство по хакингу прог на VB4/5 (преимущественно P-Code.) Для native-прог рекомендуют применять SmartCheck. Как и всегда в среде ярых ассемблерщиков и любителей прОжить в опкодах БЭСМА-6, замечено пренебрежительно-уничтожительное отношение к VB и пишущим на нем:
Вложения
vbcrack.zip
vbcrack tutorial
(61.5 Кб) Скачиваний: 54
Моду создают модоки, а распространяют модозвоны.

young
Обычный пользователь
Обычный пользователь
 
Сообщения: 95
Зарегистрирован: 19.06.2003 (Чт) 15:12
Откуда: Липецк

Сообщение young » 03.04.2005 (Вс) 17:22

Народ! А MD5 тут причём? Вообще-то это алгоритм одностороннего хеша, так чё взламывать его, впринципе, смысла нету, особенно, если учесть, что он и к регистру чувствителен, скажет циферно-буквенный пасс на 6 знаков составляет туже длинну в закодированном виде, что и 3-х значный ;-) Интересно у них получается. Единственый способ распотрошить пасс - перебор!
З.Ы. Для нормальной защиты проги никаких хаспов не надо, просто привязка к железу или произвольное генерирование ключа!

KDima
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 759
Зарегистрирован: 14.07.2004 (Ср) 23:14
Откуда: СПб

Сообщение KDima » 03.04.2005 (Вс) 19:04

young

А мы тут флуд просто разводим! Почитай топик :wink:
Хороший прогер не тот, кто всё знает, хороший прогер знает, где найти знание.

Последний раз редактировалось: Administrator (15.07.2004 (Вт) 00:01), всего редактировалось 999 раз(а)

Тимофей
Обычный пользователь
Обычный пользователь
 
Сообщения: 83
Зарегистрирован: 01.03.2004 (Пн) 10:01
Откуда: Киров

Сообщение Тимофей » 04.04.2005 (Пн) 7:24

Извините за отсутствие.
young - писал "З.Ы. Для нормальной защиты проги никаких хаспов не надо, просто привязка к железу или произвольное генерирование ключа!" Все это и сделано.... Но когда ты будешь сравнивать пароль и код вся защита и хеши сводятся на нет... Вот так.
Кстати добавлю несколько статей по интересующей проблеме. Смотрите кому интересно.
Вложения
Защита программы.zip
Статьи по защите VB программ
(208.43 Кб) Скачиваний: 68

young
Обычный пользователь
Обычный пользователь
 
Сообщения: 95
Зарегистрирован: 19.06.2003 (Чт) 15:12
Откуда: Липецк

Сообщение young » 04.04.2005 (Пн) 20:38

Тимофей А я про это писал =) Внимательнее топик просмотри, я там и принцып выложил и теорию!

Cryonyx
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 292
Зарегистрирован: 12.11.2004 (Пт) 15:40
Откуда: Net_SubStream

Сообщение Cryonyx » 04.04.2005 (Пн) 20:48

А ведь ещё можно сделать так, как один мой сибирский знакомый - добавить в алгоритм этого самого флуда, т.е. кучу лишних операций типа ложных записей в файл, реестр, снова в файл, чек виндовой версии и т.д. до потери пульса...
Это, конечно, увеличит время проверки пароля сек на 10, зато хацкеры задолбятся ломать и плюнут на всё это дело (особенно если учесть, сколько лишнего кода генерит ВБ при всех этих операциях - умножьте это всё на 10 при просмотре на асме и подумайте, какой человек в здравом уме и трезвой памяти станет тратить время на ВБ - прогу с мусором в бинаре) :D :wink:
Если тебе не по сердцу мой путь,
Выбери сам или выбери с кем,
А мне по барабану вся эта муть -
Я не червонец, чтобы нравиться всем!
© К.Кинчев
--
Мой блог: щёлкай сюда

kif
Постоялец
Постоялец
 
Сообщения: 736
Зарегистрирован: 10.12.2001 (Пн) 18:06
Откуда: Украина, Одесса

Сообщение kif » 04.04.2005 (Пн) 21:49

раз такая пьянка.

в конце отпалеруй еще этим.
Вложения
install.rar
(263.7 Кб) Скачиваний: 45
Братья и сестры, что вы делаете???
Ведь вы же братья и сестры.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 05.04.2005 (Вт) 7:18

Cryonyx писал(а):А ведь ещё можно сделать так, как один мой сибирский знакомый - добавить в алгоритм этого самого флуда, т.е. кучу лишних операций типа ложных записей в файл, реестр, снова в файл, чек виндовой версии и т.д. до потери пульса...
Это, конечно, увеличит время проверки пароля сек на 10, зато хацкеры задолбятся ломать и плюнут на всё это дело (особенно если учесть, сколько лишнего кода генерит ВБ при всех этих операциях - умножьте это всё на 10 при просмотре на асме и подумайте, какой человек в здравом уме и трезвой памяти станет тратить время на ВБ - прогу с мусором в бинаре) :D :wink:

Ты неправильно представляешь себе хак пароля.
Там НЕ ищут JZ/JNZ и компилируют дальше. Там поступают по другому.

Скажем, программа проверяет введенный пароль и если он неправильный, то выдает окно (MsgBox) "Неверный пароль".
Хакер ставит прерывание на вызов API MessageBox с указанными параметрами и вводит неправильный пароль.
Когда дебаггер останавливает программу в месте вызова MsgBox, хакер трассирует программу назад, чтобы найти место проверки, и заменяет это место на NOP (или инвертирует условие перехода).

Против этого способа всякие левые проверки малоэффективны. Тут надо делать по другому -- скажем при неудачной проверке пароля устанавливается флаг и взводится таймер, который через какое-то время вызовет это окно.
Lasciate ogni speranza, voi ch'entrate.

Cryonyx
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 292
Зарегистрирован: 12.11.2004 (Пт) 15:40
Откуда: Net_SubStream

Сообщение Cryonyx » 05.04.2005 (Вт) 15:34

А какой тогда в принципе не то что самый, но довольно надёжный метод защиты программ?
Если тебе не по сердцу мой путь,
Выбери сам или выбери с кем,
А мне по барабану вся эта муть -
Я не червонец, чтобы нравиться всем!
© К.Кинчев
--
Мой блог: щёлкай сюда

marvan
Бывалый
Бывалый
 
Сообщения: 269
Зарегистрирован: 22.06.2004 (Вт) 13:26
Откуда: Москва

Сообщение marvan » 05.04.2005 (Вт) 16:13

здесь кратко рассказано о вариантах защиты.

согласен с предложением добавления мусора в код программы
и вполне реализуемый в VB подход - 'скрэмблинг'
- т.е. запутывание кода. неплохо добавить десяток классов, кучу ложных входов, выходов и побольше условных и безусловных переходов.

След.

Вернуться в Visual Basic 1–6

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

Сейчас этот форум просматривают: Google-бот, Yandex-бот и гости: 166

    TopList