![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Делаю авторизацию пользователей. Окошко для ввода логина и пароля. Данные пользователя хранятся в БД. Воопрос как лучше реализовать защиту от взлома программы. Программа используется на предприятии, особо защищать не придётся, так как сеть локальная без выхода в интернет, но уж сам вопрос интересный. И вот тут мои размышления:
1. Допустим пароли как таковые я хранить в открытом виде не буду, а будет в базу данных записываться их хэш. 2. При реализации условий логина (нажатие кнопки и обработка сравнения паролей) возможен взлом кода программы с подменой битов (как взламывают экзешники любимых программ). Весь вопрос в том, как усложнить взлом с использованием подмены бытов самого модуля логина, чтобы логин был неудачен даже при получении true, что якобы пароли совпадают...?????? Все модули, в том числе модуль логина, дата модуль и прочие - это bpl пакеты... Помогите с данным вопросом, первый раз с этим сталкиваюсь... Спасибо! |
|
#2
|
|||
|
|||
|
Почитал тут статейку
http://www.codenet.ru/progr/delphi/stat/delphi.php и подумал: хоть и не рекомендует автор делать функции проверки пароля, но если эту функцию запихнуть в datamodule.bpl и там же сравнивать CRC этого модуля с изначальным, то взломщику не удастся подменить изменить сам модуль... Только вот как получить CRC модуля, не зная его CRC, которое должно быть зашито в сам модуль ))))))))) |
|
#3
|
|||
|
|||
|
Например, скомпилить модуль, посчитать CRC, а проверку делать в основной программе, которая компилится после и она уже может знать нужный CRC. Хотя в этом случае нет возможности защитить саму программу... тоже проблема...
|
| Этот пользователь сказал Спасибо lmikle за это полезное сообщение: | ||
~TB~ (19.10.2012)
| ||
|
#4
|
||||
|
||||
|
Цитата:
Для повторного подсчета достаточно отобразить exe-файл в память с отбрасыванием изменений, прочитать контрольную сумму из заголовка PE, сохранить в переменной. Вписать 0 в это поле (который будет отброшен после закрытия файла), посчитать контрольную сумму заново и сравнить. Но прежде чем заниматься фигней, представить ситуацию, когда злые хакеры ломают программу прямо в локальной сети предприятия. |
|
#5
|
||||
|
||||
|
Защитить её VMProtect'ом. Антивирусные компании даже не пытаются понять смысл того, что им защищено, потому что человек со здоровой головой понять это не сможет.
Я пробовал его реверсить. Там виртуалка с шифрованными опкодами, шифрованные адреса обработчиков опкодов, шифрованные данные и ни единой функции. Весь код так сказать прямым текстом, только после каждых 1-10 команд стоит jmp или call (который юзается как jmp) куда-нибудь ещё, и код превращается в беспорядочное месиво. Стек там используется как большая помойка, почти все регистры - тоже. Код виртуалки загаживается огромнейшим количеством совершенно тупых и бесполезных команд, среди которых реальный смысл даже маленького кусочка восстановить очень тяжело. И хоть все алгоритмы шифрования сами по себе там элементарные (xor, add/sub, rol/ror и различные их комбинации), разобрать это вручную невозможно. Слышал где-то на хакерских форумах обитают скрипты для снятия VMP старых версий, однако для новых что-то не слышал и не видел. Если не хочется платить за VMP, можно написать свой упрощенный аналог. ![]() Цитата:
З.Ы. +1 к Цитата:
Последний раз редактировалось Bargest, 17.10.2012 в 03:46. |
| Этот пользователь сказал Спасибо Bargest за это полезное сообщение: | ||
~TB~ (19.10.2012)
| ||
|
#6
|
||||
|
||||
|
Возложить авторизацию на сервер, чтоб он только ответ выдавал, валидны логины/пароли или нет.
|
| Этот пользователь сказал Спасибо M.A.D.M.A.N. за это полезное сообщение: | ||
~TB~ (19.10.2012)
| ||
|
#7
|
||||
|
||||
|
Цитата:
|
|
#8
|
||||
|
||||
|
Цитата:
Это самый правильный способ! Я так подозреваю логины и пароли ты хранишь самостоятельно в таблице на серваке, если это так то в базу ты попадаешь под общим паролем и логином (для того чтоб считать данные из таблицы), тогда метод взлома такой БД заключается в том чтоб в хекс редакторе посмотреть пароль/логин, цепануться к базе считать пароли логины пользователей, даже если общий пароль/логин шифрованы то умному хакеру не составит труда их достать |
|
#9
|
||||
|
||||
|
SSL + Хеши
![]() |
| Этот пользователь сказал Спасибо M.A.D.M.A.N. за это полезное сообщение: | ||
~TB~ (19.10.2012)
| ||
|
#10
|
|||
|
|||
|
Во первых я невижу смысла алгоритма потому что!
1. Если вашу программу захотят сломать, ее все равно сломают. 2. Защиту организовывают сторонние программы. За деньги! И если программа имеет высокий спрос...ЕЕ все равно сломают! 3. Вам не надо париться, логин и пароль стандартными методами защитят вашу прогу от доступа случайных людей не имеющих знаний взлома. 4. Если вы хотите защитить программу от взлома людей обладающими базовыми знаниями взлома, постарайтесь не писать логины и пароли в реестр, в файл, и в exe коде не вязать все 1 переменной. ЧТОБЫ ПОНЯТЬ КАК ЗАЩИТИТЬ СВОЮ ПРОГРАММУ ПОСТАРАЙТЕСЬ ЕЕ САМИ ВЗОЛМАТЬ! Лучшая защита пограммы от взлома, это нестандартный методы проверки! |
|
#11
|
||||
|
||||
|
ТС писал:
Цитата:
|
|
#12
|
|||
|
|||
|
Цитата:
Я высказал позицию человека ценящего время, что овичинка выделки не стоит, и лучше свободное время посвятить более важным и полезным делам. Мой ответ попытка направить человека в нормальное русло, поскольку вопросы по защите, несколько изжили себя. Последний раз редактировалось Heneken, 19.10.2012 в 14:40. |