|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
Защита данных от хака
Добрый день. Есть необходимость защитить данные типа строка(HTML-код) от удаления или подмены
Например такой способ: 1. шифруем строку(до пограммы), делаем ее хеш и размещаем гдето в программе в виде констант1 и 2 2. функция, которой нужны данные заключенные в константе1 (HTML-код), вызывает специальную функцию, которая: - получает константу1 и делает ее хеш - получает константу2(ранее сделанный хеш) и сравнивает хеши если хеш1 = хеш2 тогда спец.функция расшифровывает константу1(ключ встроен в функцию) и передает параметр в вызвавшую функцию и записывает значение TRUE в ГлобПерем иначе (хеши различны) спец.функция возвращает FALSE в ГлобПерем все основные процедуры программы в начале кода имеют обращение к этой ГлобПерем и если она FALSE идут в Exit(не выполняют свой код), что приведет к сбою в работе программы Вопрос: в достаточной ли мере подобный подход затруднит работу взломщиков? и вообще |
#2
|
||||
|
||||
Первое, что сделает взломщик - инвертирует условие
Цитата:
jmp $ ; Happy End! The Cake Is A Lie. |
#3
|
|||
|
|||
до того чтобы понять что это условие сеть надо еще долго ковыряться в коде, это ведь побочная ветка поиска где данные которые нужно подменить
|
#4
|
||||
|
||||
Долго ковыряться не надо. Есть динамический анализ и хардварные брейк-поинты.
jmp $ ; Happy End! The Cake Is A Lie. |
#5
|
||||
|
||||
лучше не делать так, чтобы приходилось защищать. если это по сети передается, можно засесть сниффером и вся заSHITа пойдет коту под хвост.
— Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#6
|
||||
|
||||
Чтобы усложнить: сделай несколько функций с разными названиями и реализацией сравнения (т.е. по сути все функции делают одно и то же, но по-разному и их имена различны), вызывай эти функции несколько раз в теле программы (явная или неявная проверка), сделай проверку CRC программы по аналогии с описанным выше алгоритмом, используй заглушки против отладки, дампа и т.п., используй навесную защиту.
|
#7
|
||||
|
||||
Цитата:
Совет MADMAN - а самый дельный. jmp $ ; Happy End! The Cake Is A Lie. |
#8
|
|||
|
|||
Цитата:
допустим кто то хочет заменить данные(в частности свой емейл подсунуть вместо моего) в кнопке "Контакты" он видит мой емейл(данные кстати полностью доступны), дальнейшие действия кулхацкера: - начинает искать в коде программе этот емейл(поскольку зашифрованно, он его просто не находит) - начинает в отладчике вызывать форму в которой прописан емейл, идет до спец.функции, которая выдает константа1 в расшифрованном виде - проходит мимо ГлобПерем, поскольку он ее и не ищет - находит таки константа1. в зашифрованном виде(о том что все зашифрованно кулхацкер пока ничего не знает) - вырезает константу1 в блокнот начинает смотреть где там что, ничего не находит - возвращается к спец.функции и долго думает чего оно делает - находит всетаки ключ с помощью которого функция расшифровывает константа1?????? если это возможно - но код спец.функции дизаассемблировать нельзя, долго ломает голову над кодом функции, переберет все доступные - все таки находит код(в принципе он там простой, хотя можно и усложнить) - создает свою константу1 и влеивает ее в файл - запускает прогамму и тут обнаруживает что ничего не работает(о передаче флага в ГлобПЕРЕМ ведь ничего неизвестно) - начинает возится с спец.функцией воображая что там ошибка ...... и еще много ненужных телодвижений в изнеможении стирает нафиг все и форматирует свой диск Ц насколько такое реально? |
#9
|
||||
|
||||
Цитата:
Цитата:
Цитата:
Это один вариант развития. А другой - посмотреть, где при смене все валится (почему идет другой код), и найдет флаг. jmp $ ; Happy End! The Cake Is A Lie. Последний раз редактировалось Bargest, 07.06.2013 в 23:11. |