защита исполняемых файлов
ос - windows
язык - visual C++
исполняемый файл типа PE
привязкка к паролю, директрии, к конкретному компьютеру.
защита встраивается в исполняемый файл (как мне обьяснили в момент инсталяции, и данная защита не обязана действовать абсолютно для всех исполняемых файлов).
это описание курсовой работы. просьба к людям разбирающимся в системном прораммировании:
подскажите плз возможный путь реализации, и страницы где можно что то почитать по этому поводу(на русском).
так же прошу подбросить линки на пару программ выполняющие подобное.
да хочу подчеркнуть, защита именно уже существующих откомпилированных файлов (читай с недоступными исходниками), а не разрабатываемых программ.
Разработка инструментария для установки защиты исполняемого файла от несанкционированного использования.
ос - windows
язык - visual C++
исполняемый файл типа PE
привязкка к паролю, директрии, к конкретному компьютеру.
защита встраивается в исполняемый файл (как мне обьяснили в момент инсталяции, и данная защита не обязана действовать абсолютно для всех исполняемых файлов).
это описание курсовой работы. просьба к людям разбирающимся в системном прораммировании:
подскажите плз возможный путь реализации, и страницы где можно что то почитать по этому поводу(на русском).
так же прошу подбросить линки на пару программ выполняющие подобное.
да хочу подчеркнуть, защита именно уже существующих откомпилированных файлов (читай с недоступными исходниками), а не разрабатываемых программ.
Шифрование, шифрование, и еще раз шифрование. Ключи на основе пароля, файла или системной информации. Подругому никак.
Шифрование, шифрование, и еще раз шифрование. Ключи на основе пароля, файла или системной информации. Подругому никак.
а каким образом вшить в файл систему дешифровки?
т.е. запускаешь файл, а он требует пароль и только после этого запускается. не запуск специальной утилиты, ввод пароля, а потом запуск нужного файла, а именно сам файл просит пароль.
Шифрование, шифрование, и еще раз шифрование. Ключи на основе пароля, файла или системной информации. Подругому никак.
да, еще просьба подкинуть пару сслок где есть нормальные статьи по шифровке+c++. и не посылайте на яндекс, там добра на эту тему навалом, а вот действительно качественных статей, днем с огнем...
а каким образом вшить в файл систему дешифровки?
т.е. запускаешь файл, а он требует пароль и только после этого запускается. не запуск специальной утилиты, ввод пароля, а потом запуск нужного файла, а именно сам файл просит пароль.
Зачем в файл? Пишится загрузщик. Схема примерно такова:
Запускается загрузщик.
Загрузщик получает информацию по которой получает ключи для дешифровки основного модуля.
Дешифрует основной модуль.
Проверяет некоторым образом, например по хешу или части файла корректность результата.
Запускает оснавной модуль.
Зачем в файл? Пишится загрузщик. Схема примерно такова:
Запускается загрузщик.
Загрузщик получает информацию по которой получает ключи для дешифровки основного модуля.
Дешифрует основной модуль.
Проверяет некоторым образом, например по хешу или части файла корректность результата.
Запускает оснавной модуль.
да эта идея мне тоже сразу же пришла в голову, но дело в том что это задание курсача, и одним из необходимых условий является "защита встраивается в исполняемый файл"... и никуда отсюда не денешься...
да эта идея мне тоже сразу же пришла в голову, но дело в том что это задание курсача, и одним из необходимых условий является "защита встраивается в исполняемый файл"... и никуда отсюда не денешься...
Посмотри как работают вирусы которые прописывают тело в .ехе файлы. Я же не говорил о том сколько должно быть файлов(я говорил о модулях)... Можно все в один запихнуть. Только не делай просто проверку пароля, такие функции легко обрезаются. Защита либо есть, либо нет. А кроме криптографии защиту ничто не гарантирует. Все остальное это имитация защиты.
Посмотри как работают вирусы которые прописывают тело в .ехе файлы. Я же не говорил о том сколько должно быть файлов(я говорил о модулях)... Можно все в один запихнуть. Только не делай просто проверку пароля, такие функции легко обрезаются. Защита либо есть, либо нет. А кроме криптографии защиту ничто не гарантирует. Все остальное это имитация защиты.
ну почему, есть же система прав доступа и в винде, насколько я знаю еще мощнее чем в unix, но там нужно учитывать защиту еще на этапе разработки программы, а мне надо защитить уже готовый экзешник.
К тому же это не заказчику, а курсач, хотя и серьезный...
Идею с шифрованием я обработаю (спасибо), но хотелось бы еще услышать варианты, даже если они не гарантируют 100% защиты по вашему мнению.
И по поводу вшивания в екзешник, если кто знает обьясните подробнее или ссылочки.
ну почему, есть же система прав доступа и в винде, насколько я знаю еще мощнее чем в unix,
Миф. Если я получу доступ к винчестеру, то кроме шифрования не спасет ничего.
Посмотри как работают вирусы которые прописывают тело в .ехе файлы. Я же не говорил о том сколько должно быть файлов(я говорил о модулях)... Можно все в один запихнуть. Только не делай просто проверку пароля, такие функции легко обрезаются. Защита либо есть, либо нет. А кроме криптографии защиту ничто не гарантирует. Все остальное это имитация защиты.
Если ты начнёшь изменять PE файл на жёстком диске, то любой нормальный антивирус интерпретирует вой криптограф как потенциальный вирус и поместит его на карантин. Внедряешь код в виртуальную память процесса - нет проблем. А вот бинарник изменить не получается. Я вот, кстати, тоже сейчас разрабатываю код, связанный с внедрением некоторой функции в другой бинарник на жёстком диске...
Если ты начнёшь изменять PE файл на жёстком диске, то любой нормальный антивирус интерпретирует вой криптограф как потенциальный вирус и поместит его на карантин. Внедряешь код в виртуальную память процесса - нет проблем. А вот бинарник изменить не получается. Я вот, кстати, тоже сейчас разрабатываю код, связанный с внедрением некоторой функции в другой бинарник на жёстком диске...
народ, еще раз говорю, эта программа не будет использоваться по назначению. это курсач, и внедрить НУЖНО, а что антивирус не позволит или что это не логично, это дело десятое.
тем не менее буду рад любому мнению на эту тему (к курсачу еще записку писать надо, вот тут альтернативные пути решения их плюсы и минусы весьма пригодятся :) ). по прежнему жду человека который обьяснит (или даст ссылку) как вшить код в исполняемый файл.
HarryAxe - раз делаешь, то где то об этом читаешь, брось ссылки наиболее толковых статей и пр.
народ, еще раз говорю, эта программа не будет использоваться по назначению. это курсач, и внедрить НУЖНО, а что антивирус не позволит или что это не логично, это дело десятое.
тем не менее буду рад любому мнению на эту тему (к курсачу еще записку писать надо, вот тут альтернативные пути решения их плюсы и минусы весьма пригодятся :) ). по прежнему жду человека который обьяснит (или даст ссылку) как вшить код в исполняемый файл.
HarryAxe - раз делаешь, то где то об этом читаешь, брось ссылки наиболее толковых статей и пр.
http://www.wasm.ru/article.php?article=apihook_2
http://www.wasm.ru/article.php?article=1021007
народ, еще раз говорю, эта программа не будет использоваться по назначению. это курсач, и внедрить НУЖНО, а что антивирус не позволит или что это не логично, это дело десятое.
тем не менее буду рад любому мнению на эту тему (к курсачу еще записку писать надо, вот тут альтернативные пути решения их плюсы и минусы весьма пригодятся :) ). по прежнему жду человека который обьяснит (или даст ссылку) как вшить код в исполняемый файл.
HarryAxe - раз делаешь, то где то об этом читаешь, брось ссылки наиболее толковых статей и пр.
Тебе нужно именно ВНЕДРИТЬ? Всмысле использовать посторонние методы для встройки кода защиты. Или достаточно вкомпилированного модуля защиты? И насколько сложной должна быть защита?
Если ты начнёшь изменять PE файл на жёстком диске, то любой нормальный антивирус интерпретирует вой криптограф как потенциальный вирус и поместит его на карантин. Внедряешь код в виртуальную память процесса - нет проблем. А вот бинарник изменить не получается. Я вот, кстати, тоже сейчас разрабатываю код, связанный с внедрением некоторой функции в другой бинарник на жёстком диске...
Да щасс... Вот если ты попробуешь внедрять свой код на стороне пользователя, то заорет благим матом. А на криптооперации АВП смотрят спустя рукова. Я работаю не с одной системой банк-клиент и криптоопераций, за день, на сервере происходит как минимум порядка 10^5 ни Norton ни Dr. Web ничего не пишут.
Да щасс... Вот если ты попробуешь внедрять свой код на стороне пользователя, то заорет благим матом. А на криптооперации АВП смотрят спустя рукова. Я работаю не с одной системой банк-клиент и криптоопераций, за день, на сервере происходит как минимум порядка 10^5 ни Norton ни Dr. Web ничего не пишут.
ну как всегда, разведут между собой дискуссию....
вы мне лучше скажите как можно внедрить (или упаковать) используя c++, чем лучше закриптовать(какипе классы криптования и пр) и т.д. и т.п.
я сейчас остановился на варианте протектора-упаковщика как наиболее простом варианте из соотваетствующих задаче... да да не кричите что если сломать его пара минут, мне нужно именно сделать, а сколько потратит крякер на взлом этого моего 'детища' меня ни сколько не волнует, т.к. это курсач...
ну как всегда, разведут между собой дискуссию....
вы мне лучше скажите как можно внедрить (или упаковать) используя c++, чем лучше закриптовать(какипе классы криптования и пр) и т.д. и т.п.
я сейчас остановился на варианте протектора-упаковщика как наиболее простом варианте из соотваетствующих задаче... да да не кричите что если сломать его пара минут, мне нужно именно сделать, а сколько потратит крякер на взлом этого моего 'детища' меня ни сколько не волнует, т.к. это курсач...
ya.ru или google.ru Строка поиска Crypto API, Криптопровайдеры, хеширование, zlib, алгоритмы сжатия. Еще можно на intuit.ru там статьи Безопасность информационных технологий.
ya.ru или google.ru Строка поиска Crypto API, Криптопровайдеры, хеширование, zlib, алгоритмы сжатия. Еще можно на intuit.ru там статьи Безопасность информационных технологий.
Да на данный момент речь идёт не о криптографии, а о встраивании кода защиты в исполняемый модуль. А общая схема работы криптосистемы вполне понятна: генерим ключ (исходя из введённых пользователем данных, или, скажем, адреса сетевой карты или серийного номера жёсткого диска/процессора), генерим код декриптования (в классическом варианте - RSA), кодируем модуль выбранным алгоритмом (полностью или только исполняемый код), используя сгенерированный ключ; встраиваем в модуль алгоритм дешифрования, встраиваем проверку ключа с помощью хэш-суммы, чтобы предотвратить попытку раскодировать модуль с помощью неверного ключа. Дешифрование выглядит проще: заново генерим ключ (или запрашиваем данные у пользователя), верифицируем его, дешифруем по вшитому алгоритму, используя новый ключ. В конце можно ещё CRC полученного файла сверить на всякий случай. Причём весь процесс дешифровки должен происходить на стороне закодированного модуля, вот в этом-то и загвоздка! А по какому алгоритму кодировать он и сам найдёт (чай, курсовой-то не по экономике или химии, должен разбираться...)