Здравствуйте, SSSerg, Вы писали:
SSS>А нельзя писать в себя? В exe файл? с MZ заголовком?
Первый же антивирусник назовёт такой софт неизвестным науке мегавирусотрояночервём, замигает всеми красными лампочками, завоет всеми сиренами, и вот тут-то репутация софта и накроется медным тазом раз и навсегда...
Re[8]: Как правильно сделать 30ти дневную версию программы
Здравствуйте, SSSerg, Вы писали:
SSS>Здравствуйте, FDSC, Вы писали: FDS>>По моему лучше делать контроль числа запусков или времени работы в программе. Пользователю приятнее и самому удобнее. SSS>Тут такая ситуация что заказчик может ее не выключать более после первого запуска. SSS>Я думал но тогда 30 запусков могут проходить больше года
Дак попробуй считать время работы программы! Впрочем, не знаю, стоит ли — получается, что 30-дневная копия, что время работы программы — одно и тоже.
Между прочим над этим ещё подумать надо.
Re[2]: Как правильно сделать 30ти дневную версию программы
Здравствуйте, SSSerg, Вы писали:
SSS>А нельзя писать в себя? В exe файл? с MZ заголовком? SSS>Была бы отличная система опрделения первого запуска.. SSS>Хотя если конечно сам ехе-шник тоже юзер не поменяет...
Вся проблема в том, куда можно записать файл так, что бы пользователь его не мог стереть.
Что-нибудь вроде этого подойдёт C:\Windows\System32\SuDrv.vxd ?
С антивирусами проблемы особой, наверное, не будет. Но exe файл явно находится в той же директории, что и он сам — стереть директорию и всё.
Re[3]: Как правильно сделать 30ти дневную версию программы
"FDSC" <42583@users.rsdn.ru> wrote in message news:1250053@news.rsdn.ru... > Здравствуйте, SSSerg, Вы писали: > Вся проблема в том, куда можно записать файл так, что бы пользователь его не мог стереть. > Что-нибудь вроде этого подойдёт C:\Windows\System32\SuDrv.vxd ?
Есть еще интересный метод (только для NT+ и програм запускаемых как сервис). Создается в реестре ключ с правами NO ACCESS и владельцем ключа делается пользователь SYSTEM. Такой ключ нельзя удалить обычным регедитом. Хотя от продвинутых юзеров это увы не поможет.
Posted via RSDN NNTP Server 1.9
Re[4]: Как правильно сделать 30ти дневную версию программы
Здравствуйте, wellwell, Вы писали:
>> Здравствуйте, SSSerg, Вы писали: >> Вся проблема в том, куда можно записать файл так, что бы пользователь его не мог стереть. >> Что-нибудь вроде этого подойдёт C:\Windows\System32\SuDrv.vxd ?
W>Есть еще интересный метод (только для NT+ и програм запускаемых как сервис). Создается в реестре ключ с правами NO ACCESS и владельцем ключа делается пользователь SYSTEM. Такой ключ нельзя удалить обычным регедитом. Хотя от продвинутых юзеров это увы не поможет.
Тут ка раз обсуждаем, как без реестра обойтись.
Re[5]: Как правильно сделать 30ти дневную версию программы
я думаю просто демки делать, которые будут работать до определенного срока.
К примеру юзер скачал демку, а она работает до 1 сентября 2005. Если он поставит ее 29 августа, то и работать будет 2 дня
Re[6]: Как правильно сделать 30ти дневную версию программы
"devic" <37574@users.rsdn.ru> wrote in message news:1250280@news.rsdn.ru... > я думаю просто демки делать, которые будут работать до определенного срока. > К примеру юзер скачал демку, а она работает до 1 сентября 2005. Если он поставит ее 29 августа, то и работать будет 2 дня
Это отламывется не сложнее, достаточно найти вызов GetSystem(Local)Time и дело в шляпе, программа будет вечная.
Posted via RSDN NNTP Server 1.9
Re: Как правильно сделать 30ти дневную версию программы
Здравствуйте, SSSerg, Вы писали:
SSS>Необходимо что бы программа отработала на компьютере не более 30 дней. SSS>Варианты с проверкой системного времени — отпадают в силу легкого его иземенения.. SSS>Вопросы SSS>- как замерять (есть задумка с интернет синхронизацией) SSS>- где и как лучше хранить дату начала использования программы?
Самый, на мой взглад, безопасный способ хранения — выдавать тридцати дневные ключи лицензии с твоего Интернет сервера (если у тебя есть такая возможность). На сервере можно генерировать ключ, например, такого содержания (в форме ini):
[key]
Created=2005-06-30 (17:41) UTC
Expires=2006-07-29 (17:41) UTC
Где Value раздела Signature будет цифровой подписью, созданной с помощью закрытого ключа, хранящегося на сервере, к параметрам Created и Expires. В программе останется проверить верность подписи с помощью открытого ключа.
Все это несколько надежней чем реестр, откуда данные можно легко удалить (в нашей ситуации прога не запустится без ключа). Правда придется внедрять криптографию; нужно позаботиться о том, чтобы никто не мог подменить открытый ключ (для этого его можно сохранить в исполняемый файл, и при запуске файла проверять его целостность чем-нибудь вроде CSR32, MD5 или SHA1). Закрытый ключ на сервере нужно защитить от воровства, да и к тому же от проверок перевода часов тебя это тоже не освободит, зато таким образом можно легко создать систему выдачи лицензий, как триал, так и целостных. В общем, решать тебе ибо это очень трудоемкая работа, но по-моему она стоит того. А идея с реестром очень бональна и к тому же его легко отследть с помощью программ типа RegMon.
PS
Если есть деньги (около 100 вечно зеленых) покупай ASProtect (http://www.aspack.com/ может и ру — не помню) и не парься: в этой программе есть все (она использует механизмы, подобные описанным выше). Защиту обеспечит надежную.
PPS
Горькой правдой будней остается то, что прогу скорее всего всеравно поломают — главное чтобы не каждый дилетант и середнечек в области крякинга смог это сделать.
acta non est fabula — представление не окончено
Re[7]: Как правильно сделать 30ти дневную версию программы
Здравствуйте, wellwell, Вы писали:
W>"devic" <37574@users.rsdn.ru> wrote in message news:1250280@news.rsdn.ru... >> я думаю просто демки делать, которые будут работать до определенного срока. >> К примеру юзер скачал демку, а она работает до 1 сентября 2005. Если он поставит ее 29 августа, то и работать будет 2 дня
W>Это отламывется не сложнее, достаточно найти вызов GetSystem(Local)Time и дело в шляпе, программа будет вечная.
а вот и нет
1. Можно не только вызов делать, а к примеру смотреть дату какого нибудь файла.
2. Смотреть с разных мест по определенным событиям. Юзер отркыл, закрыл, написал, нажал и т.д.
ну а самое главное, демка на то и демка, в ней нету каких-нибудь важных операций.
Не типа ЕСЛИ РЕГАНА ТОГДА ИНАЧЕ, а кода нету там вообще. Ломать нечего
Так, что мое мнение это самый лучший вариант.
Re[8]: Как правильно сделать 30ти дневную версию программы
"devic" <37574@users.rsdn.ru> wrote in message news:1250425@news.rsdn.ru... > 1. Можно не только вызов делать, а к примеру смотреть дату какого нибудь файла.
Ага, у меня вот тут как раз файл лежит, создан в 2010 году
> 2. Смотреть с разных мест по определенным событиям. Юзер отркыл, закрыл, написал, нажал и т.д. > ну а самое главное, демка на то и демка, в ней нету каких-нибудь важных операций.
Тоже вариант (и тоже ненадежный .
Posted via RSDN NNTP Server 1.9
Re[9]: Как правильно сделать 30ти дневную версию программы
W>Ага, у меня вот тут как раз файл лежит, создан в 2010 году
а я этот файл трогать не буду Ну а если юзер ради моей демки, в которой ограничены возможности, готов менять дату на файлы, то пусть пользуется
А еще можно несколько файлов анализировать на дату
W>Тоже вариант (и тоже ненадежный .
Надежнее я не вижу, поэтому так я и собираюсь делать для себя, чего советую и автору топика.
Re[4]: Как правильно сделать 30ти дневную версию программы
wellwell пишет: > Есть еще интересный метод (только для NT+ и програм запускаемых как
сервис). Создается в реестре ключ с правами NO ACCESS и владельцем ключа
делается пользователь SYSTEM. Такой ключ нельзя удалить обычным
регедитом. Хотя от продвинутых юзеров это увы не поможет.
Здравствуйте, SSSerg, Вы писали:
SSS>Необходимо что бы программа отработала на компьютере не более 30 дней. SSS>Варианты с проверкой системного времени — отпадают в силу легкого его иземенения..
а ты подумай над Windows и WinAPI. там есть такая уйма мест где можно глянуть время а дальше все просто — чтото с чемто не совпало — GPF или молча закрываемся.
с интернетом связываться не рекомендую ... фаерволы и тп.
Здравствуйте, <Аноним>, Вы писали:
А>Здравствуйте, SSSerg, Вы писали:
SSS>>Забыл добавить...программа 16 битная. Пишу на MSVC v1.5 SSS>>О реестрах можно только мечтать — только ini файлы...
А>Простите, а какой у вас там сейчас год?
Год то наш.. просто проект староват..
... << RSDN@Home 1.1.3 stable >>
Re: Как правильно сделать 30ти дневную версию программы
Здравствуйте, SSSerg, Вы писали:
SSS>Необходимо что бы программа отработала на компьютере не более 30 дней. SSS>Варианты с проверкой системного времени — отпадают в силу легкого его иземенения.. SSS>Вопросы SSS>- как замерять (есть задумка с интернет синхронизацией) SSS>- где и как лучше хранить дату начала использования программы?
Я сделал так.
1) Отвязался от системного времени. — использую интернет сервера..
2) При первом (надеюсь первом ) запуске прога создает файлик DLL в SYSTEM
Туда пишется всякая отвлекаюшая информация из заголовка обычной dll.В середине
пишется шифрованная дата начала запуска.
3) При запуске программа сравнивает текущее интернет время с начальным.
Минус в том что если юзер просечет файл...
... << RSDN@Home 1.1.3 stable >>
Re[8]: Как правильно сделать 30ти дневную версию программы
MNZ>Так в том и смысл. Константные строки в программе можно посмотреть, открыв исполняемый файл в том же блокноте. Шифрование приведёт к тому, что сделать это будет невозможно, но не более того. В реестр-то всё записывается в прежнем, расшифрованном виде. Я имею в виду, имена веток реестра в функции API передаются расшифрованными. Более того, сам факт записи в реестр по прежнему присутствует. А такие утилиты как RegMon позволяют проследить, какие ветки реестра открывало, читало, изменяло, записывало и удаляло приложение. И хоть зашифруйся. Теперь понятней?
можно же писать не в одну а в несколько сотен. Чисто чтобы ручками было это трудно сделать. причем как в свои сознаыые так и в существующие.
Re[2]: Как правильно сделать 30ти дневную версию программы
Здравствуйте, SSSerg, Вы писали:
SSS>Здравствуйте, SSSerg, Вы писали:
SSS>>Необходимо что бы программа отработала на компьютере не более 30 дней. SSS>>Варианты с проверкой системного времени — отпадают в силу легкого его иземенения.. SSS>>Вопросы SSS>>- как замерять (есть задумка с интернет синхронизацией) SSS>>- где и как лучше хранить дату начала использования программы?
..........
SSS>Минус в том что если юзер просечет файл...
FileMon, можно просто IDA....
....упаковщик нужен все равно, или хотя бы самомодифицирующийся код для всех сохранений и проверок, так что бы выполнялись 5-10 ASM комманд, и тут же стирались (если 1 проверка при запуске) или упаковывались обратно.
Делать придется в три этапа:
1. Макросики на C, что т вроде:
#define START asm { \
jmp $+6}\
__emmit__ {0x01,0x02,0x03,0x04,0x05,0x06} — это вроде как сигнатура + место для твоего кода мутанта
+ 2й define для пометки конца
2. Планируем мутируемый код так, чтобы всяких goto и return из него не было, иначе пары начало/конец завалишь.
3. Делаем внешний доп. ехе, который просканить твою прогу компильнутую на предмет сигнатур и там первоначально замутирует чистый код, вырежет JMP.
...да, не знаю как под Вынь-16, а под Вынь-32 на сегмент кода этого нада еще разрешение на запись толи ручками exe выставь, то-ли VirtualProtect вызывай...
....это конечно не подробное руководство, но думаю обрисовал примерно, желательно блоков таких поболее и покороче...
...хотя снова же не совершенно это, IDA давно их ловит, потому что все простое и эффективное есть в коммерческих пакерах...
Re: Как правильно сделать 30ти дневную версию программы
Здравствуйте, SSSerg, Вы писали:
SSS>Необходимо что бы программа отработала на компьютере не более 30 дней. SSS>Варианты с проверкой системного времени — отпадают в силу легкого его иземенения.. SSS>Вопросы SSS>- как замерять (есть задумка с интернет синхронизацией) SSS>- где и как лучше хранить дату начала использования программы?
Мысль пришла...
Как бороться будете, если у меня всегда есть чистая винда под VMWare и в любой момент я смогу ваш триал установить заново и юзать?
Re[2]: Как правильно сделать 30ти дневную версию программы
Здравствуйте, Колян, Вы писали:
К>Мысль пришла... К>Как бороться будете, если у меня всегда есть чистая винда под VMWare и в любой момент я смогу ваш триал установить заново и юзать?