я видел программы, которые генерировали уникальный код, и если дать код разработчику, то он даст уникальный ключ который подходит только для моего ПК! (лицензия)
Покажите пожалуйста как на языке LUA сгенерировать такой уникальный код для каждого ПК.
Заранее спасибо!
P.S. не спрашивайте зачем мне это.
Другие языки программирования и технологии
Как сделать лицензию на языке lua?
Это делают сами прогеры! То есть создавая прогу они сразу пишут для нее генератор ключей (отдельно от проги) и вшивают в свою прогу проверку лицензии !
Я делал лично свой генератор ключей и свою проверку для программы !
Мне всего понадобилось несколько переменных (дополнительных ) - которые оприделяли в какой контент можно поподать а в какой нужен ключь регистрации !
Тут есть много способов как такое реализовать (но основа практически одна) - в начале есть два пути
1) генерировать случайное число (функция randomize (c++) - или rnd )
2) Написать самому алгоритм случайного числа в зависимости от ПО (брать зависимость оборудования которое в компе - Регестрационные коды внутриностей и скажем просто их всех сплюсовать) - есть плюс (згенерированный однажды ключь - будет подходить всегда только для данного ПК )
Отталкиваться от оборудования весьма не плохо но написать алгоритм не так легко как с простым Рандомным числом !
Далее нужно работать с файлом (я работал с txt) - при первом запуске нужно проверить существует ли txt если нет То создать рандомное число и записать в него (тут можно работать с реестром вместо Тхт) - если Тхт существует то это уже не первый запуск - считываем Тхт в переменную и храним пароль !
При желании пользователя получить ключь - он жмет скажем регестрация - у него всплывает окошко с просьбой Отправить этот универсальный код (который мы сгенерировали случайно ) - на такой то адрес - ниже сделать ввод для ответа и кнопку зарегестрироватся - вам приходит некое число и далее все зависит от того как вы организуете проверку у себя в нутри программы !
Скажем что наш алгоритм проверки в нутри проги нашей проверяет различия между сгенерированным числом и присланным на почту нашим - причем операции могут быть самыми разными !
Ну например самое легкое - если число присланное нами должно быть на 356 быть больше - то олгаритм прост
int system_pass = 244 (Обычно цифр от 8 и выше)
int Mail_pass = TextBox->Text (Введенное пользователем) - Должно быть 600 (на 356 больше)
If (abs(system_pass - Mail_pass ) == 356)
{
//прошли проверку ключа успешно
License(true) // Функция которая создаст файл лицензии и внесет некие данные ну для подтверждения
}
Получается при запуске проги нужно пытаться открыть два файла - первый файл лиценции а если его нет тогда файл случайного сгенерированного кода !
int - это тип переменной (числовая 4 бита ) - без точки
abs () - функция уберает знак - делает результат положительным
Это что бы ты понял пример приблезительно
Проверку ключа можешь навернуть как пожелаешь - я делал и с корнем и с MD5 проверкой
Теперь есть небольшая осечка - скопировав файл лицензии и перенести его на другой камп прога станет
лицензионной на другом кампе - что бы этого небыло создавать нужно файл лицензии Бинарным и загонять туда данные сильно зависящие от первичного кода (особенно если он зависит от оборудования)
Конечно такая защита только для Юзеров и темнеменее я на тот момент думал что ее не так легко взламать (я представлял как они сделают перебор поролей хотя я сильно ошибался ) - всего один шаг до взлома подобного !
Надеюсь было позновательно - генератор ключей пишеться как отдельная прога с тем же олгаритмом что и в нутри твоей проги только немного измененный !
Далее зависит все от твоей фонтазии !
Я делал лично свой генератор ключей и свою проверку для программы !
Мне всего понадобилось несколько переменных (дополнительных ) - которые оприделяли в какой контент можно поподать а в какой нужен ключь регистрации !
Тут есть много способов как такое реализовать (но основа практически одна) - в начале есть два пути
1) генерировать случайное число (функция randomize (c++) - или rnd )
2) Написать самому алгоритм случайного числа в зависимости от ПО (брать зависимость оборудования которое в компе - Регестрационные коды внутриностей и скажем просто их всех сплюсовать) - есть плюс (згенерированный однажды ключь - будет подходить всегда только для данного ПК )
Отталкиваться от оборудования весьма не плохо но написать алгоритм не так легко как с простым Рандомным числом !
Далее нужно работать с файлом (я работал с txt) - при первом запуске нужно проверить существует ли txt если нет То создать рандомное число и записать в него (тут можно работать с реестром вместо Тхт) - если Тхт существует то это уже не первый запуск - считываем Тхт в переменную и храним пароль !
При желании пользователя получить ключь - он жмет скажем регестрация - у него всплывает окошко с просьбой Отправить этот универсальный код (который мы сгенерировали случайно ) - на такой то адрес - ниже сделать ввод для ответа и кнопку зарегестрироватся - вам приходит некое число и далее все зависит от того как вы организуете проверку у себя в нутри программы !
Скажем что наш алгоритм проверки в нутри проги нашей проверяет различия между сгенерированным числом и присланным на почту нашим - причем операции могут быть самыми разными !
Ну например самое легкое - если число присланное нами должно быть на 356 быть больше - то олгаритм прост
int system_pass = 244 (Обычно цифр от 8 и выше)
int Mail_pass = TextBox->Text (Введенное пользователем) - Должно быть 600 (на 356 больше)
If (abs(system_pass - Mail_pass ) == 356)
{
//прошли проверку ключа успешно
License(true) // Функция которая создаст файл лицензии и внесет некие данные ну для подтверждения
}
Получается при запуске проги нужно пытаться открыть два файла - первый файл лиценции а если его нет тогда файл случайного сгенерированного кода !
int - это тип переменной (числовая 4 бита ) - без точки
abs () - функция уберает знак - делает результат положительным
Это что бы ты понял пример приблезительно
Проверку ключа можешь навернуть как пожелаешь - я делал и с корнем и с MD5 проверкой
Теперь есть небольшая осечка - скопировав файл лицензии и перенести его на другой камп прога станет
лицензионной на другом кампе - что бы этого небыло создавать нужно файл лицензии Бинарным и загонять туда данные сильно зависящие от первичного кода (особенно если он зависит от оборудования)
Конечно такая защита только для Юзеров и темнеменее я на тот момент думал что ее не так легко взламать (я представлял как они сделают перебор поролей хотя я сильно ошибался ) - всего один шаг до взлома подобного !
Надеюсь было позновательно - генератор ключей пишеться как отдельная прога с тем же олгаритмом что и в нутри твоей проги только немного измененный !
Далее зависит все от твоей фонтазии !
Ну по идее, нужно написать свою виртуальную машину, которая будет принимать какой-нибудь RSA ключ и внутри себя переводить одни опкоды в правильные опкоды.
Только зачем всё это надо на таком нищем уровне? Там простой проверки на ключ, даже без криптования, хватит, инфа 100%
Только зачем всё это надо на таком нищем уровне? Там простой проверки на ключ, даже без криптования, хватит, инфа 100%
Николай Сесюнин
в смысле?
какая простая проверка?
какая простая проверка?
Похожие вопросы
- Нужна программа для заполнения таблицы 9*2, чтобы в ней не было повторяющихся столбцов на языке lua (можно на С++)
- подскажите как сделать программу на языке СИ(((
- Что необходимо сделать, чтобы русский язык програмирования вытеснил англоязычные?
- Какие языки еще изучить? (Знаю C++, LUA, C#, PHP, HTML, CSS, Python, JavaScript, некоторые виды Ассемблера)
- С какого языка лучше начать изучать программирование ребёнку 6 лет? Lua, Python или чего-нибудь совсем попроще?
- Вы согласны, что прежде чем выбирать язык программирования и учиться программировать следует изучить виды лицензий на ПО
- Сложен ли Lua, что на нем писать можно?
- Что лучше Python или Lua? Напишите ответы детально.
- Сложно ли будет учить ruby или lua в 14 лет. С учетом того, что python уже нормально знаю.
- Програмирование Roblox Lua скрипт, чтобы когда игрок вставал на объект он каждую секунду получал 1 очко.
выручил!!!