Страница: 1 | 2 |
Вопрос: Защита программы от взлома! Давайте обсудим!
Добавлено: 06.03.07 22:55
Автор вопроса: Lanback | ICQ: 271-209-305
Всем привет!
Столкнулся с необходимостью защитить свою программу от несанкционированного использования!
Ход мыслей таков - сгенерировать Installation ID на компе где будет ставиться прога, на основе него выбрать в проге зашитый захэшированный пароль(пароль1). Хэш пароля, вводимого юзером должен совпасть с пароль1.
Подскажите 2 вещи - как можно сгенерировать Installation ID(чтоб для разных компов он был разным, но для одного компа чтоб каждый раз генерировался один и тот же). Я слышал что можно на основе серийных номеров проца, винта или ещё какого-то железа...Если да - то как их программно узнать?!
Ну и есть ли в VB ф-ции, или может какие-то библиотеки, которые хэшируют строки, например как ф-ция crypt в php?
Ответы
Всего ответов: 22
Номер ответа: 1
Автор ответа:
vito
Разработчик Offline Client
Вопросов: 23
Ответов: 879
Web-сайт:
Профиль | | #1
Добавлено: 06.03.07 23:27
Ставим брак на кнопку и прыгаем в функцию которую вызывает нажатие.
А там будет что- то вроде.
cmp xxx,yyy // сранение
jne ttt // если равно
Останется только открыть нех - редактор и заменить условие на противоположное.
Если нужно, пропатчить можно и автоматизированно.
И здесь даже не нужен сайс, вполне хватит отладчика уровня приложения.
Это не защита.
Номер ответа: 2
Автор ответа:
ANDREY Z5Z
Вопросов: 38
Ответов: 125
Web-сайт:
Профиль | | #2
Добавлено: 07.03.07 00:30
На основе железа говоришь? А знаешь насколько легко к твоей программе придумать генератор ключа по этому же железу?
Номер ответа: 3
Автор ответа:
vito
Разработчик Offline Client
Вопросов: 23
Ответов: 879
Web-сайт:
Профиль | | #3
Добавлено: 07.03.07 03:40
У тебя есть проблемы, в самой идее.
Подскажите 2 вещи - как можно сгенерировать Installation ID(чтоб для разных компов он был разным, но для одного компа чтоб каждый раз генерировался один и тот же).
Сгенерировать пароль, не проблема. Допустим на основании серийника винта. Ок. Сгенерировали, выбрали зашитый в проге пароль.
Ну а дальше? Какой пароль ты отошлешь юзеру? Чтобы узнать, что там выбрала твоя прога, тебе необходимо получать от нее информацию. А если юзер против, чтобы лазили по его компу, или у него нет интернета? Или антивирусы заблокируют отправку данных? И какой пароль ты ему пришлешь?
Тогда, как вариант тебе нужно делать, какой- нибудь активизирующий ключ(скорее всего это и будет сгенерированным прогой ключ), получив который (допустим по почте, или тебе по телефону позвонят), ты сможешь выслать(продиктовать) правильный пароль.
И вот здесь ,можно, как вариант, нписать генератор пароля. (если конечно охота париться, или это оплачено).
Почему? Да потому что пароль должен быть простой. Невозможно продиктовать по телефону пароль, к примеру, из 50 символов, который включает разную "абракадбру" и учитывает регистр.
И следовательно, как вариант, его даже иногда можно "вскрыть" простым перебором.
Номер ответа: 4
Автор ответа:
Arseny
ICQ: 298826769
Вопросов: 53
Ответов: 1732
Профиль | | #4
Добавлено: 07.03.07 09:38
Vito телепат.... Я тоже так и делал.
Дома кейген, по телефону диктую: мне - пароль, я - отзыв. ))
Номер ответа: 5
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #5
Добавлено: 07.03.07 09:43
Пароль от проги проще всего терморелаксацией вытягивать... работает безпроигрышно
Номер ответа: 6
Автор ответа:
Arseny
ICQ: 298826769
Вопросов: 53
Ответов: 1732
Профиль | | #6
Добавлено: 07.03.07 09:47
2 HACKER: терморектальным анализом ты имеешь ввиду?
Номер ответа: 7
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #7
Добавлено: 07.03.07 10:24
да-да считайте очепятка, да и слово редкое, забыл я его Ну суть самого метода очень эффективная
Номер ответа: 8
Автор ответа:
»VladikComper«
ICQ: 419668582
Вопросов: 23
Ответов: 147
Web-сайт:
Профиль | | #8
Добавлено: 07.03.07 11:37
Зачем программу от взлома защищать.
У меня есть программа для взлома...
Она приложения скомпилированные на VB взломать не может...
Номер ответа: 9
Автор ответа:
MIRC
ICQ: 254226129
Вопросов: 6
Ответов: 6
Профиль | | #9
Добавлено: 07.03.07 11:54
Можно просто вычислить дату создания БИОСа и творить с ним что хочешь, умножаешь, делишь. Я так одну из своиз прог защитил, на другой комп фиг закинешь Может и по-простому, но попробуй вычислить пароль...
Номер ответа: 10
Автор ответа:
D o c a l
ICQ: 408802757
Вопросов: 76
Ответов: 985
Web-сайт:
Профиль | | #10
Добавлено: 07.03.07 16:10
Любую прогу можна зламать і з етим не чево не поделаеш а если хотите штоб не зламивали тогда не мтавте пароль от мой совет
или продавать прогу в руки но деньги вперед.
 oc
Номер ответа: 11
Автор ответа:
EUGY
Вопросов: 0
Ответов: 454
Профиль | | #11
Добавлено: 07.03.07 19:35
Все это ерунда, программным методом не решить вопроса имеющего в основе "человеческий фактор",
Прикольнее всего проги а-ля "1с".
Основой Random-генератора в них по сути служит наше ..баное законодательство.
Номер ответа: 12
Автор ответа:
Lanback
ICQ: 271-209-305
Вопросов: 23
Ответов: 48
Профиль | | #12
Добавлено: 07.03.07 22:54
Немножко уточню:
Я беру, например, серийник винта(это й будет Install-ID). Потом на его основе путём каких-то махинаций(умножение, деление,... - чтоб разобраться взломщику было тяжелее) выбираю в своей проге скажем один захешированный пароль из ста заданных жёстко (его в принципе можно и в БД хранить). Потом человек мне звонит, называет свой Install-ID, я говорю ему пароль, он его вводит в проге и если хэш введённого пароля совпадёт с захешированным паролем, который ему был определён на основе его Install-ID, то с проги снимутся ограничения демо-версии! Вроде всё классно, но меня беспокоит тот факт, что после всех этих тяжёлых махинаций с хэшами и т.д. прога всё-равно должна будет тупо сравнить введённый пароль и зашитый пароль(if-else), что как ты уже и сказал элементарно изменяется с помощью редактора кода.
Но что же в таком случае делать???
Спасибо за интерес к теме!
Номер ответа: 13
Автор ответа:
Lanback
ICQ: 271-209-305
Вопросов: 23
Ответов: 48
Профиль | | #13
Добавлено: 07.03.07 22:59
to EUGY:
<div style='border:1px solid #AAAA33; background:#FFFFCC; margin-left:20pt; padding:1pt 5pt 1.5pt 5pt; font-family:verdana; font-size:11px'>Основой Random-генератора в них по сути служит наше ..баное законодательство.
<br>
Что ты имеешь ввиду?!
Номер ответа: 14
Автор ответа:
vito
Разработчик Offline Client
Вопросов: 23
Ответов: 879
Web-сайт:
Профиль | | #14
Добавлено: 08.03.07 00:13
Lanback
Здесь ты не учел один простой момент - антиотладку.
Эащиту от отладки можно попытаться создать самому. Но это долгая история. Хотя собственные неожиданные и нетривиальные решения, могут сильно усложнить процесс взлома.
Используй готовую "навесную" защиту. Подробнее об этом можешь почитать (и скачать нужные программы) на wasm.ru.
Обычно все навесные защиты проверяют наличие активного отладчика, и в случае наличия оного, завершают процесс.
Впрочем это тоже легко обходится, но если интерес к твоей проге не велик, возможно будет лень ее ломать. Потому как, в этом случае, начинающему взломщику будет тяжеловато.
Как вариант, твою прогу могут дизассеблировать, и точно также найти нужное место.
В этом случае программа должна быть упакована.
Но ее точно так же могут распаковать...
Но даже если распаковать ее, в силу каких-то причин не получится, всегда можно получить дамп работающей программы. Но это уже, требует еще большей квалификации.
Следовательно, наращивание защиты, отсекает малоопытных взломщиков.
Вот собственно и все.
Единственное что могу еще посоветовать, создай дублирующую функцию для проверки на валидность.
Т.е. допустим если пароль принят, проверяй его в другой функции, при каждом запуске программы.
Это несколько усложнит процесс патча.
Номер ответа: 15
Автор ответа:
vito
Разработчик Offline Client
Вопросов: 23
Ответов: 879
Web-сайт:
Профиль | | #15
Добавлено: 08.03.07 00:43
Ах да еще не все. Тут еще проблемка.
В этом случае ты должен будешь генерить случайные числа в промежутке 1..100 (если у тебя сто паролей) и точно нарвешся на повторение. То есть на разных компах у тебя будет одинаковый пароль. Понятно что я имею в виду?
Поэтому подобный способ неприемлем.
Ты можешь зашить и миллион паролей, но вероятность нарваться на повторение, все равно будет слишком высока. Потому как псевдогенераторы не отличаются равномерным распределением случайных величин.
Все же тебе прийдется генерить Install-ID, и на его основе (это чтобы самому потом можно было нужный пароль получить) тоже псевдослучайно генерить пароль.
То есть пароль будет некоей функцией Install-ID. Это с одной стороны обеспечит тебе уникальность пароля(возможность повторения будет несравнимо меньше), но с другой, делает простым написание кейгена.