Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

C++

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.56
Varlock
365 / 68 / 2
Регистрация: 25.09.2008
Сообщений: 402
#1

Запустить файл в оперативной памяти - C++

19.03.2009, 14:38. Просмотров 1128. Ответов 2
Метки нет (Все метки)

Вобщем озадачили нас на военной кафедре вот как:
сказали раз уж мы специалисты по инф. безопасности, то практическая работа, которую мы должны сдать примерно через 3-4 недели такова:
разработать програмку, обеспечивающую защиту любого другого приложения от копирования при помощи юсб ключа. Т.е. некоторая другая програмка должна запускаться только при наличии вставленной флешки с ключевым файлом.
Я себе это представляю примерно так:
Делаю два приложения:
первое приложение получает на вход путь к файлу, и содержимое ключевого файла (даже с интерфейсом париться не буду, все через консоль вводитсЯ, две строчки.)
оно просто с использованием введённого ключа шифрует файл по указанному адресу(библиотеку для шифрования возьму какую-нить из готовых), и создаёт файл ключа на флешке (это всё как сделать я знаю, труда не составит )
второе приложение будет получать (либо опять через консоль вводить адрес, либо, в принцыпе т.к. от нас мультизадачности не требуют особо, заранее будет знать адрес где лежит) адрес зашифрованного файла, потом лезть на флешку и искать там файл ключа, после чего пытаться расшифровать файл с помощью этого ключа и запустить его.
Требования - расшифрованный файл не должен нигде храниться, кроме оперативной памяти, т.е. нельзя создать временного файла, и должен быть удалён после завершения работы приложения.
Собственно из всего этого я незнаю вот что - после того, как я расшифрую этот файл, у меня будет полное содержимое экзешника в бинарном виде в некотором массиве, или ещё где-то неважно, где надо будет туда и загоню, это не проблемма, проблемма в том, как его запустить после этого на исполнение, не создавая временного файла с ним? (т.е. вариант создать файл с этим экзешником и обратиться к нему прост, но не подходит... надо именно в оперативной памяти, этот бинарный массив куда-то загнать и заставить начать исполняться, какими функциями и т.п. тут можно воспользоваться?)) )

З.Ы. в принцыпе если кто-то предложит другую логику работы приложения, я рассмотрю тоже с удовольствием)) начать реализовывать я планирую в эти выходные, счас пока собираю недостающие мне для этого знания +)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.03.2009, 14:38
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Запустить файл в оперативной памяти (C++):

Снимок оперативной памяти - C++
Возможно ли на си++ написать консольную программу, которая бы делала снимок ОП, как это делает Snapshot RAM (без интерфейса)?

Данные из оперативной памяти - C++
Подскажите пожалуйста, как нам перехватить данные любого приложения, которые "уходят" в оперативную память. То есть нам надо поймать их до...

Сбор и анализ данных в оперативной памяти - C++
Подскажите пожалуйста, какие вы знаете способы сбора данных из оперативной памяти(абсолютно любые способы) и соответственно что нить об...

Как сделать так, чтобы две разные программы могли работать с одной и той же областью оперативной памяти? - C++
Собственно даже незнаю куда копать. Пробовал в одной программе вывести указатель на массив, а в другой указателю присвоить это значение...

Остаток оперативной памяти - C++ Builder
Добрый день! Подскажите, есть ли способ программно определить сколько осталось свободной оперативной памяти?

Chart'у не хватает оперативной памяти - C++ Builder
Всем привет. Писал программу в C++ Builder 6 для графического отображения информации в Chart считанной из двоичного файла. Из-за огромного...

2
Gretskiy
Сообщений: n/a
20.03.2009, 14:32 #2
Цитата Сообщение от Varlock Посмотреть сообщение
разработать програмку, обеспечивающую защиту любого другого приложения от копирования при помощи юсб ключа. Т.е. некоторая другая програмка должна запускаться только при наличии вставленной флешки с ключевым файлом.
Начнем с того, что юсб ключ!=флешке с ключевым файлом. Это совсем другое устройство. Юсб флешка с файлом - ущербный вариант с точки зрения безопасности, потому как может быть скопирована за десяток секунд. Если это исключительно учебная работа - так и быть, принимаем что надо флешка с файлом-ключем.

Твоя идея понятна, но как-то все затянуто, можно проще.
Есть одна программа, которая должна что-то делать при наличии файлика и она же проверяет его правильность. Тут еще вопрос чем генерировать ключ, но это разово, у клиента ее не будет.

1. Проверяешь все removable диски на наличие у них по известному пути файла с предопределенным именем.
2. Не находишь - выкидываешь текст, что нефиг запускать без ключа и выходишь.
3. Проверяешь правильность ключа по твоему алгоритму.
4. Ключ неправильный - выкидываешь текст, что нефиг подсовывать лжеключи и выходишь
5. Делаем, что надо.

Дополнительно можно сделать регулярную проверку наличия люча в процессе работы и ее завершать, если ключ выдернули, но это лишние проблемы, советую избежать такого пунктика в ТЗ.

Как-то так
Varlock
365 / 68 / 2
Регистрация: 25.09.2008
Сообщений: 402
23.03.2009, 18:55  [ТС] #3
Цитата Сообщение от Gretskiy Посмотреть сообщение
Твоя идея понятна, но как-то все затянуто, можно проще.
Есть одна программа, которая должна что-то делать при наличии файлика и она же проверяет его правильность.
Собственно с одной стороны предложенное вами, конечно проще, но идея к сожалению не моя... от нас, насколько я понял со слов препода, хотят именно оболочку для защиты произвольной программы. Т.е. наша программа не сама должна запускаться при наличии ключа (это совсем халява), а должна обеспечивать защиту произвольного стороннего приложения(которое храниться в зашифрованном виде. наличие шифрования "полезного" кода тоже обязательное условие... над защитой кода самой оболочки разрешили не париться). Задание конечно чисто учебное, поэтому такие тонкости, как неравенство юсб с ключевым фалом и токена, мы опускаем, как и проверку наличия ключа в течении работы программы, нам даже разрешили опустить проверку всех съёмных носителей - сделать обращение по заранее забитому адресу(заранее изестно на какоймашине будем проверять работоспособность), и если там ничего нет, то отвечать отказом ))
поэтому мой вопрос остаётся в силе - как залить бинарник из некоторого массива в ОП и запустить его на исполнение?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.03.2009, 18:55
Привет! Вот еще темы с ответами:

Определение частоты оперативной памяти - C++ Builder
Может кто подскажет код для определения типа или частоты оперативной памяти, что бы можно было сказать DDR1 или DDR2

Есть ли способ запустить программу, ограничив время ее выполнения и потребность оперативной памяти? - CMD/BAT
Подскажите пожалуйста, есть ли способ из cmd запустить программу, при этом ограничив время выполнения ее и потребность оперативной памяти?...

временный файл в оперативной памяти - Visual C++
Можно ли создать временный файл ! в оперативной памяти !, чтобы во время исполнения приложения в него шла запись, а после выполнения...

Создать файл отчета по оперативной памяти - CMD/BAT
Прошу помощи В зависимости от введенной с экрана буквы создать файл отчета по оперативной памяти с именем БУКВА+ДАТА Код: SET...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru