Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > Самоуничтожение программы


Автор: tumanovalex 17.8.2007, 21:21
Товарищ написал программу, теперь хочет ее защитить от некоторых недобросовестных пользователей. Можно сделать так, чтобы программа запускалась с любого носителя и потом сама себя стирала? Т.е. он хочет, чтобы запустили 1 раз с носителя, поработали с ней, оценили достоинства и недостатки, потом она бы стерлась. Можно ли это сделать? Может быть есть еще какие-нибудь эффективные способы защиты программы? 

Автор: zkv 18.8.2007, 20:13
tumanovalex, любая защита может быть снята - вопрос времени и ресурсов. 
По-этому, для начала определись, от кого защищаетесь. 
Вариант с удалением исполняемых файлов приложения защитит, разве что, от домохозяек (достаточно убить процесс во время выполнения - и файл(ы) останется нетронутым). 

Цитата(tumanovalex @  17.8.2007,  21:21 Найти цитируемый пост)
Может быть есть еще какие-нибудь эффективные способы защиты программы?  

те свой способ тоже называешь эффективным  smile 
все зависит от контекста задачи, например от того, в каких масштабах собираешься распространять демо-версии.

Пожалуй самый простой путь - это лишить прогу в демо-версии части функционала (к примеру если прогу типа MS Word лишить возможности сохранения документов, то можно будет оценить функционал программы, а вот пользоваться  будет мягко говоря неудобно)
Неплохой вариант для, например,  демонстрации выполненной работы фрилансером.
 
И вообще, на форуме есть ветка посвященная защите ПО, сходи сначала почитай, чего там люди говорят  smile 

Автор: sentry 18.8.2007, 20:41
Цитата(zkv @  18.8.2007,  21:43 Найти цитируемый пост)
Пожалуй самый простой путь - это лишить прогу в демо-версии части функционала

Например, "забыть" дать некую dll, реализующую какие-либо функции...

А вообще, чтобы писать защиту, надо определить целевую аудиторию. Как уже сказал zkv, любую защиту снимут, если захотят.

Автор: jonie 18.8.2007, 23:06
Цитата

Можно сделать так, чтобы программа запускалась с любого носителя и потом сама себя стирала?
фига технологии дошли... стираются даже с ReadOnly носителей...
Существуют критерии оценки надобности защиты... если вашу программу никто не бует ломать , то нужна ли она вообще?!
По поводу защиты : делать версию демку, где физически нет функций - пусть пробуют. Для конечных юзеров кто купит прогу делать ее зашифрованной  и ключ привязвать к железу... скажем, так поступают программы Cerber и им подобные....(http://www.securityprint.ru/cerber.html) ... правда в опред кругах взломанную ее найти можно... криптование там ГОСТ вроде...по крайней мере было 8)

Автор: evkwarrior 21.11.2007, 05:44
Товарищи, но всё же!!!
Скажите, как реализовать тот метод, который предлагал tumanovalex?
Очень нужно!
Exe-ник находится на жестком диске, права доступа администратора.

Автор: pompei 21.11.2007, 07:32
Я помню делал так: экзешник "А" содержал бинарный ресурс другого экзешника "Б". "А" вытаскивал его в файл в оперативной памяти, запускал и выходил. "Б" при запуске пытался удалить "А" до тех пор, пока у него это не получалось (когда он полностью завершит работу и система освободит все его дескрипторы). После этого "Б" выполнял работу программы. В "А" можно поместить и другие файлы для "Б" и выгрузить их в виртуальные файлы в оперативной памяти. Есть недостаток этого метода: если "Б" большой, то нужно много ОЗУ, хотя свап спасает отлично.

Кстати я тоже самое делал и в линуксе

Я ещё делал так, чтобы можно было запускать несколько раз. Для этого в ресурсах "А" хранил целую переменную - количество оставшихся запусков. "Б" корректировал эту переменную, и если она становилась 0, то удалял "А".

Потом ещё добавил такую фишку. Перед удалением "А" записывал в "А" одни нули, чтобы нальзя было потом анделетить.

Потом хотел создать такую прогу, которая превращает какой-то нормальный экзешник в удаляемый, но до этого руки и не дошли.

Автор: evkwarrior 21.11.2007, 19:02
Цитата(pompei @ 21.11.2007,  07:32)
Я помню делал так: экзешник "А" содержал бинарный ресурс другого экзешника "Б". "А" вытаскивал его в файл в оперативной памяти, запускал и выходил. "Б" при запуске пытался удалить "А" до тех пор, пока у него это не получалось (когда он полностью завершит работу и система освободит все его дескрипторы). После этого "Б" выполнял работу программы. В "А" можно поместить и другие файлы для "Б" и выгрузить их в виртуальные файлы в оперативной памяти. Есть недостаток этого метода: если "Б" большой, то нужно много ОЗУ, хотя свап спасает отлично.

Т.е. "Б" полностью содержался в виртуальной памяти. И после его завершения никаких файлов не оставалось?
А можете привести пример, как создать бинарный ресурс с екзешником, и как потом его извлечь и запустить, пожалуйста?

Цитата

Потом хотел создать такую прогу, которая превращает какой-то нормальный экзешник в удаляемый, но до этого руки и не дошли.


А это что за штука, вкратце?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)