27270-1 (630379)

Файл №630379 27270-1 (Полезные советы по криптографии)27270-1 (630379)2016-07-30СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла

Защита программ от копирования.

Алексей! С удовольствием читаю ваши странички о криптографии и не смог удержаться чтобы не рассказать еще ободном достаточно эффективном способе программ от копирования . Сам я пишу программы на Fox и использую этот метод сущность которого привожу ниже.

Как обычно выглядит запароленная программа? Ее воруют, запускают, и она гордо так спрашивает: Пароль?!!! (Ей отвечают: НА ГОРШКЕ СИДИТ КОРОЛЬ (joke) или что-то в этом роде Программа говорить: Password неверен, работать не буду. Зовут хакера. Говорят, врага видишь. Вижу отвечает. Давай, борись. Хакер достает из кобуры дебагер 38 калибра, и справляется с поставленой задачей.

У меня точно также, только программа после ухода хакера начинает глючить со страшной силой. То процент начисления не тот поставит, то директора поставит завхозом, а секретарше зарплату начислит повыше директорской и т.д. Причем все изредка и случайно. Зовут опять хакера, говорят ему - ты программу плохо вскрыл. Хакер смотрит еще раз, нет говорит, все нормально. А она глючит у нас говорят ему. А что он им может ответить, прямого образа врага перед ним нет, не может же он гнать всю программу под отдадкой, он же не программист, он хакер. Если я имея исходники отлаживал прогу полгода, то ему в бинарных кодах сколько потребуется?

А суть метода как ты догадывешся очень проста: В одной из менюшек программы, с виду такой-же как и все остальные вводишь пароль, и если он неверен то пользуясь генератором случайных чисел выполняешь неверные команды(обычно я использую свои глюки из ранних версий программ). Работает такая штука у меня несколько лет уже, и достаточно эффективно. То есть сущность идеи заключается в том чтобы не было видно защищена программа или нет. Мне кажется что таким способом можно криптовать даже тексты, но как, пока до конца не додумал, хотя идеи есть.

С уважением,

Александр Козлов, программер.

Регистрация основанная на серийных ключах.

Уважаемый Алексей, посмотрел Вашу страничку о защите программ -- довольно неплохо, но у меня есть некоторые замечания. Вы рассматриваете два метода -- серийные ключи и регистратор. Ваше утверждение, что второй метод намного более надежен, чем первый, несколько спорно.

Дело в том, что при хорошем знании ассемблера очень просто его обойти: когда пользователь вводит свое имя и регистрационный код, программа генерирует "правильный" код и сравнивает его с тем, который он ввел, поэтому "перехватить" этот код (просто считать его из памяти) не составлет особого труда. В большинстве случаев достаточно просто поставить breakpoint на функцию lstrcmp -- и все дела... Упаковка программы, анти-дебаггерные и анти-дизассемблерные "примочки" помогают слабо. Очень рекомендую заглянуть на http://fravia.org -- там много чего по этому поводу написано.

А вот первый метод может быть реализован достаточно неплохо. Хранить "правильные" ключи в программе совсем не обязательно -- можно подчинить их некоторым правилам; что-то подобное делает Microsoft со своими CD-keys, но у них все слишком просто. Алгоритм проверки может быть длинным и запутанным, так что его дизассемблирование (и "разборка", что же он делает) причинит немало головной боли. Именно первый метод я и применил для защиты своей программы (Advanced Disk Catalog -- старые версии), но и он был "сломан" (хотя, как мне написал ломавший его хакер, подборка всего двух правильных ключей отняла у него много времени). Тогда мне в голову пришла идея: а что, если ключи хранить внутри программы, но зашифрованными? Я "сгенерил" некоторое количество ключей (абсолютно случайным образом), зашифровал их (по отдельности) 128-битным ключом по алгоритму RSA и прошил в программу в виде ресурса. Когда пользователь вводит ключ, он шифруется по тому же алгоритму и сравнивается с правильными. Так как система с открытым ключом не позволяет произвести обратное преобразование, базируясь только на открытом ключе (а закрытого нет даже у меня - расшифровывать-то не надо), то подобрать ключи невозможно даже теоретически.

Есть, впрочем, еще одна проблема: хакер (или "крэкер", если угодно) может заменить 'je' на 'jne' (или что-то в этом роде) там, где происходит последняя проверка, и функция "IsValidKey(...)" будет всегда возвращать TRUE. Останется лишь написать маленький patch... Чтобы защититься и от этого, я вычисляю CRC своего exe-файла и сравниваю его с правильный, прошитым тоже внутри программы (естественно, при вычислении эта часть файла -- где лежит правильный CRC -- исключается; а "прошивается" он после компиляции). Кстати, это еще и защита от вирусов. Вообще-то, проверку CRC тоже можно локализовать и "запатчить", но это уже немного сложнее, особенно если программа вызывает функции чтения/записи и для других целей. Кроме того, не стоит в случае несовпадения CRC сразу об этом сообщать, иниче можно будет поставить hardware breakpoint и найти место, где он вычисляется. И последнее. Если хочется защитить программы совсем уж "круто", томожно несколько функций в своей программе (те, которые должны вызываться только в зарегистрированной версии), зашифровать по тому же алгоритму с открытым ключом. При этом, естественно, часть серийного номера (отсылаемого зарегистрировавшимся) надо сделать "статическим", т.е. неизменным для всех пользователей. На основе этой части после регистрации генерируется полный закрытый ключ, который далее используется для расшифровки указанных функций. Таким образом, даже если будет написан patch, позволяющий "зарегистрироваться" с любым (произвольным) кодом, расшифровка пройдет неправильно, и вместо нормального кода будет выполняться "мусор".

Этот способ я применил в другой своей программе (Advanced ZIP Password Recovery), и ее пока не вскрыли. Всего наилучшего,

Vladimir Katalov

Как написать свой собственный регистратор.

Существует 2 типа написания регистратора программы:

Первый - это так называемые серийные ключи. Они встраиваются в программу и совершенно не зависят ни от введенного имени владельца, ни от введенной организации. Его не желательно использовать по Интернету, т.к. автору Shareware программы необходимо поместить несколько серийных номеров, которые могут быть просмотрены в exe-шнике и затем легко распостроняться через все тот же Интернет.

Второй - это создание своего алгоритма регистрации, зависящего от введенного имени владельца (и организации). Вот на нем мы подробно и остановимся. Такой тип регистрации применяется во многих Shareware программах, например: WinZIP, CutFTP и т.д. Для его написания необходимо использовать один и тот же алгоритм дважды: вначале в самой программе для проверки правильности введенного кода, и в программе генерирования ключей, посредством которой Вы, получив предварительно имя регистрируемого, создаете регистрационный ключ.

Исходник написан на Delphi 2.0

В поле NameEd типа TEdit вводится имя (зависит от регистров букв), а в поле PasswEd тоже типа TEdit появляется регистрационный ключ. Изменив глобальную константу RegCode можно получить совсем другой ключ для одного и того же вводимого имени. Смысл этого алгоритма в том, что вначале с первым элементом Reg (который приравнивается RegCod'у) делается побитовая операция XOR со всеми элементами стринга имени и XOR с длинной этого стринга, затем в цикле XORится текущий элемент с предыдущим, а потом весь полученный массив переводится в 16-разрядную систему счисления и записывается в результирующий стринг PasswEd.Text.


const
RegCode : array [1..5] of integer = ($3В,$1E,$FB,$A1,$92); { Введите сюда свои собственные значения }

.......


procedure TMainForm.NameEdChange (Sender: TObject);
var Reg : array [1..5] of integer;
z : integer;

{******** Перевод в шестнадцатиричную систему *********}
procedure HEXCase ( HexNm : integer );
begin

case HexNm of
0..9 : PasswEd.Text := PasswEd.Text + IntToStr(HexNm);
10 : PasswEd.Text := PasswEd.Text + 'a';
11 : PasswEd.Text := PasswEd.Text + 'b';
12 : PasswEd.Text := PasswEd.Text + 'c';
13 : PasswEd.Text := PasswEd.Text + 'd';
14 : PasswEd.Text := PasswEd.Text + 'e';
15 : PasswEd.Text := PasswEd.Text + 'f';
end;


end;
{***************************}


begin { Main }


{ Приравниваем RegCode=Reg }
For z := 1 to 5 do Reg[z] := RegCode[z];


{ XORим первый элемент }
Reg[1] := Reg[1] XOR Length (NameEd.Text);


{ XORим его опять со всем Nam'ом }
For z := 1 to Length (NameEd.Text) do


{ XORим его снова с длиной Nam'a }
Reg [1] := Reg [1] XOR Ord (NameEd.Text[z]);


{ XORим предыдущий с текущим}
For z := 2 to 5 do

Reg[z] := Reg [z] XOR Reg [z-1];

PasswEd.Clear;


{ Переводим Reg в HEX стринг}
For z := 1 to 5 do
begin
HexCase (Reg[z] div 16);
HexCase (Reg[z] mod 16);
end


end; { main }

  • Если Вы хотите получать за свою Shareware программу деньги, то можете воспользоваться услугами предлагаемыми российской компанией StrongSoftware

Характеристики

Тип файла
Документ
Размер
37,05 Kb
Тип материала
Учебное заведение
Неизвестно

Тип файла документ

Документы такого типа открываются такими программами, как Microsoft Office Word на компьютерах Windows, Apple Pages на компьютерах Mac, Open Office - бесплатная альтернатива на различных платформах, в том числе Linux. Наиболее простым и современным решением будут Google документы, так как открываются онлайн без скачивания прямо в браузере на любой платформе. Существуют российские качественные аналоги, например от Яндекса.

Будьте внимательны на мобильных устройствах, так как там используются упрощённый функционал даже в официальном приложении от Microsoft, поэтому для просмотра скачивайте PDF-версию. А если нужно редактировать файл, то используйте оригинальный файл.

Файлы такого типа обычно разбиты на страницы, а текст может быть форматированным (жирный, курсив, выбор шрифта, таблицы и т.п.), а также в него можно добавлять изображения. Формат идеально подходит для рефератов, докладов и РПЗ курсовых проектов, которые необходимо распечатать. Кстати перед печатью также сохраняйте файл в PDF, так как принтер может начудить со шрифтами.

Список файлов ответов (шпаргалок)

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6549
Авторов
на СтудИзбе
300
Средний доход
с одного платного файла
Обучение Подробнее