|
|
Регистрация | << Правила форума >> | 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. |
#10
|
||||
|
||||
Я бы вообще пакеты зырил бы, выцепил бы и мейл и прочее и на свой бы заменил, сэмулировав запрос.
— Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#11
|
|||
|
|||
все зависит от уровня взломщика
задача - обломать 99% кулхацкеров в попытке что то изменить в программе остальные 1% реальные хакеры, способные это сделать не будут это делать, у них заботы поважнее вот еще накопал: данный способ не сможет полностью защитить Ваш программный продукт от взлома, но прекратить выполнение секретного кода - запросто. Для этого мы будем использовать API функцию IsDebuggerPresent. Теперь посмотрим как эту функцию реализовать в Delphi: Код:
function DebuggerPresent: boolean; type TDebugProc = function: boolean; stdcall; var Kernel32: HMODULE; DebugProc: TDebugProc; begin Result := False; Kernel32 := GetModuleHandle('kernel32.dll'); if Kernel32 <> 0 then begin @DebugProc := GetProcAddress(Kernel32, 'IsDebuggerPresent'); if Assigned(DebugProc) then Result := DebugProc; end; end; Последний раз редактировалось Pcrepair, 07.06.2013 в 23:21. |
#12
|
||||
|
||||
Ну суть защиты и заключается в массивности геморроя, который словит крякер (кулхацкеры в основном другим занимаются), которого заинтересует ваш софт, но так как софт это не Skype и врятли будет так популярен, то скорее всего, врятли его будут ломать мега крякеры.
Также можно часть данных спрятать заюзав алго стеганографии (вроде так как то называется) и альтернативные файловые потоки, данные передавать юзая закрытые и открытые ключи... |
#13
|
||||
|
||||
Цитата:
Весится хук на эту ф-ю и в ней eax устанавливается в 0, вся заSHITа опять коту под хвост. З.Ы. Ощущение, что мои предыдущие посты невидимые. — Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию Последний раз редактировалось M.A.D.M.A.N., 08.06.2013 в 08:03. |
#14
|
|||
|
|||
они видимые но неприемлимо пессемистичные
больше оптимизьму, не бывает нерешаемых задач |
#15
|
||||
|
||||
То, что ты приводишь - старо как мир.
Еще раз, что там с мейлом? Ты со своего мейла логинишься куда-то? — Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |