Модераторы: volvo877, Snowy, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> защита программы от копирования, серийный № 
:(
    Опции темы
windy
Дата 24.3.2005, 19:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 23.11.2004

Репутация: нет
Всего: нет



как привязать программу к серийному номеру какого-либо устройства так, чтобы на другом компе она не запускалась?

Код

program demo;
uses crt;
label exit,lab3;
const st='this program ';
      st1='was write in demo ';
      st2='Mariska F.';
      st3='do not copy';
      {lab3}
      stt='y lukomorja dub zelenii';
      stt1='zlataya cep na dube tom';
      stt2='i dnem i nochju kot ychenii';
      stt3='vse hodit po cepi krugom';
      stt4='idet napravo-pesn zavodit';
      stt5='nalevo-skazku govorit';
      stt6='-----------------------';
      parol='this parol';
var i,i1,j:integer;
    str,str1,parol1:string;
    k:char;
{}
procedure border(x,y:integer;head:string);
var i:integer;
begin
for i:=x to length(stt)+x+1 do
    begin
          gotoxy(i,y);write(chr(196));
          gotoxy(i,y+8);write(chr(196));
     end;
for i:=y to y+7 do
    begin
         gotoxy(x,i);write(chr(179));
         gotoxy(length(stt)+x+1,i);write(chr(179));
    end;
gotoxy(x,y);write(chr(218));
gotoxy(length(stt)+x+1,y+8);write(chr(217));
gotoxy(length(stt)+x+1,y);write(chr(191));
gotoxy(x,y+8);write(chr(192));
gotoxy(x+length(stt) div 2,y-1); write(head);
end;

procedure text(x,y:integer);
begin
     gotoxy(x+1,y+1);write(stt);
     gotoxy(x+1,y+2);write(stt1);
     gotoxy(x+1,y+3);write(stt2);
     gotoxy(x+1,y+4);write(stt3);
     gotoxy(x+1,y+5);write(stt4);
     gotoxy(x+1,y+6);write(stt5);
     gotoxy(x+1,y+7);write(stt6);
end;
{}

BEGIN
     clrscr;
     str:='pas';
     textcolor(white);
gotoxy(28,40);write('press "p" to continue...');
gotoxy(28,42);write('press "x" to exit or any key...');
for i:=53 to 78 do
    begin
         gotoxy(i,35);write(chr(196));
         gotoxy(i,40);write(chr(196));
    end;
for i:=36 to 39 do
    begin
         gotoxy(53,i);write(chr(179));
         gotoxy(78,i);write(chr(179));
    end;

        gotoxy(53,35);write(chr(218));
        gotoxy(78,35);write(chr(191));
        gotoxy(53,40);write(chr(192));
        gotoxy(78,40);write(chr(217));

        gotoxy(54,36);write(st);
        gotoxy(54,37);write(st1);
        gotoxy(54,38);write(st2);
        gotoxy(54,39);write(st3);
while not keypressed do
      begin
           textcolor(black);
           gotoxy(54,38);write(st2);
           textcolor(white);
           gotoxy(54,39);write(st3);
           delay(350);
           textcolor(white);
           gotoxy(54,38);write(st2);
           delay(350);
           textcolor(black);
           gotoxy(54,39);write(st3);
           delay(350);
      end;
textcolor(yellow);
k:=readkey;
if k='p' then
   begin
        gotoxy(55,45);writeln('input password');
        gotoxy(56,46);readln(str1);
if str<>str1 then
   begin
   textcolor(red);
   gotoxy(56,46);
   writeln('error! false!');
    for j:=1 to 10 do
    begin
    for j:=1 to 10 do
     begin
     for i1:=20 to 18000 do sound(i1);
     for i1:=18000 downto 20 do sound(i1);
     end;
   nosound;
  halt;
  end;
  end
else
textcolor(green);
gotoxy(56,46);
writeln('you can work!');delay(1000);
{repeat until keypressed;}goto lab3;
if k='x' then goto  exit;
   end;

{}
lab3:
border(5,3,'PZU');
text(5,3);
border(75-length(stt),3,'OZU');
gotoxy(1,12);
writeln('if you want copy program from PZU into OZU, then input parol');
write('(for exit press 0): ');
readln(parol1);
if parol1='0' then halt;
if parol1=parol then
   begin
        text(75-length(stt),3);
        gotoxy(1,12);
        clreol;
        gotoxy(1,13);
        clreol;
        write('CONGRATULATION!!!PROGRAM WAS COPY IN OZU');
   end;
if parol1<>parol then
   begin
        textcolor(black);
        text(5,3);
        gotoxy(1,12);
        clreol;
        gotoxy(1,13);
        clreol;
        textcolor(white);
        writeln('PAROL NEVERNII! PROGRAM WAS DIE THEMSELF!');
        writeln('IF YOU NOT KNOW THEN GO AWAY!!!');

   end;
readln;
{}
exit:
END.



Добавлено @ 19:11
Код

uses crt, app;
label exit,lab3;
const st='this program ';
      st1='was write in demo mode';
      st2='Fedorenko M.';
      st3='do not copy';
      stt='y lukomorja dub zelenii';
      stt1='zlataya cep na dube tom';
      stt2='dnem i nochu kot ycheni';
      stt3='hodit po cepi krugom: ';
      stt4='napravo-pesn zavodit';
      stt5='nalevo-skazku govorit';
      stt6='-----------------------';
      parol='parol';
var
   k:char;
   str,str1,parol1:string;
   i,j:integer;

{}
procedure border(x,y:integer;head:string);
var i:integer;
begin
for i:=x to length(stt)+x+1 do
    begin
          gotoxy(i,y);write(chr(196));
          gotoxy(i,y+8);write(chr(196));
     end;
for i:=y to y+7 do
    begin
         gotoxy(x,i);write(chr(179));
         gotoxy(length(stt)+x+1,i);write(chr(179));
    end;
gotoxy(x,y);write(chr(218));
gotoxy(length(stt)+x+1,y+8);write(chr(217));
gotoxy(length(stt)+x+1,y);write(chr(191));
gotoxy(x,y+8);write(chr(192));
gotoxy(x+length(stt) div 2,y-1); write(head);
end;

procedure text(x,y:integer);
begin
     gotoxy(x+1,y+1);write(stt);
     gotoxy(x+1,y+2);write(stt1);
     gotoxy(x+1,y+3);write(stt2);
     gotoxy(x+1,y+4);write(stt3);
     gotoxy(x+1,y+5);write(stt4);
     gotoxy(x+1,y+6);write(stt5);
     gotoxy(x+1,y+7);write(stt6);
end;
{}

procedure okno;
var
   notebook: TApplication;
begin
     notebook.Init;
     notebook.Run;
     notebook.Done;
end;

procedure lab1;
var
   i:integer;
begin
     textcolor(green);
for i:=27 to 52 do
    begin
         gotoxy(i,9);write(chr(196));
         gotoxy(i,14);write(chr(196));
    end;
for i:=10 to 13 do
    begin
         gotoxy(27,i);write(chr(179));
         gotoxy(52,i);write(chr(179));
     end;

        gotoxy(27,9);write(chr(218));
        gotoxy(52,9);write(chr(191));
        gotoxy(27,14);write(chr(192));
        gotoxy(52,14);write(chr(217));

        gotoxy(28,10);write(st);
        gotoxy(28,11);write(st1);
        gotoxy(28,12);write(st2);
        gotoxy(28,13);write(st3);

while not keypressed do
      begin
           textcolor(black);
           gotoxy(28,12);write(st2);
           textcolor(white);
           gotoxy(28,13);write(st3);
           delay(350);
           textcolor(white);
           gotoxy(28,12);write(st2);
           delay(350);
           textcolor(black);
           gotoxy(28,13);write(st3);
           delay(350);
end;
end;

BEGIN
clrscr;
textcolor(white);
gotoxy(14,5);write('press "p" to continue...');
gotoxy(14,6);write('press "x" to exit or any key...');
lab1;
k:=readkey;
if k='p' then
begin
str:='pas';
textcolor(yellow);
gotoxy(28,23);writeln('input password');
gotoxy(29,24);readln(str1);
if str<>str1 then
   begin
   textcolor(red);
   gotoxy(28,24);
   writeln('error! false!');
    for j:=1 to 10 do
     begin
     for i:=20 to 18000 do sound(i);
     for i:=18000 downto 20 do sound(i);
     end;
   nosound;
  halt;
  end
else
    textcolor(green);
    gotoxy(28,25);
    writeln('you can work!');delay(1000);
    {okno;}goto lab3;
    if k='x' then goto  exit;
end;

{}
lab3:
clrscr;
border(5,3,'PZU');
text(5,3);
border(75-length(stt),3,'OZU');
gotoxy(1,12);
writeln('if you want copy program from PZU into OZU, then input parol');
write('(for exit press 0): ');
readln(parol1);
if parol1='0' then halt;
if parol1=parol then
   begin
        text(75-length(stt),3);
        gotoxy(1,12);
        clreol;
        gotoxy(1,13);
        clreol;
        write('CONGRATULATION!!!PROGRAM WAS COPY IN OZU');
   end;
if parol1<>parol then
   begin
        textcolor(black);
        text(5,3);
        gotoxy(1,12);
        clreol;
        gotoxy(1,13);
        clreol;
        textcolor(red);
        writeln('PAROL NEVERNII! PROGRAM WAS DIE THEMSELF!');
        writeln('IF YOU NOT KNOW THEN GO AWAY!!!');

   end;
readln;
{}
exit:
END.





извиняюсь, предыдущий код зацикливается
PM MAIL   Вверх
Coder
Дата 25.3.2005, 15:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 733
Регистрация: 13.12.2004

Репутация: нет
Всего: 11



привяжи к дате изготовления ПЗУ (bios):

Код

var
i : integer;
begin
for i:=0 to 7 do
write(chr(mem[$f000:$fff5+k]));
end;


только для начала забей ее в константы своей программы.

P.S. Что это за листинги? чет так впадлу разбиратся. зачем они?
PM MAIL   Вверх
windy
Дата 25.3.2005, 22:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 23.11.2004

Репутация: нет
Всего: нет



такое у меня есть
и ещё есть следующее:
Код

uses crt;
begin
clrscr;
case mem[$f000:$fffe]of
$ff:writeln('pc');
$fe:writeln('xt');
$fd:writeln('pcjr');
$fc:writeln('at')
else
writeln('was found not standart type of pc',mem[$f000:$fffe]);
end;
repeat until keypressed;
end.


Код

uses crt;
var k:integer;
begin
clrscr;
for k:=0 to 7 do
write(chr(mem[$f000:$fff5+k]));
writeln;
repeat until keypressed;
end.


как теперь? как привязать? сделать присвоение строки? потом? 

ЗЫ: прога выдает этикетку, там типа имя автора мигает...потом вводится пароль, потом появляется 2 рамки, вводится ещё 1 пароль, потом (если 2-й пароль верный) из 1-й рамки всё копируется во 2-ю...короче, лаба такая

PM MAIL   Вверх
Coder
Дата 26.3.2005, 02:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 733
Регистрация: 13.12.2004

Репутация: нет
Всего: 11



вместо repeat until keypressed нипиши ReadKey - также будет ждать нажатие любой клавиши.

Для начала узнай свою дату и забей ее в константы. Потом при запуске программы проверяй равна ли эта константа реальной дате.
Код

uses crt;
const
  MyDate = '09/12/01'; {заранее забитая дата}
var
  k:integer;
  date : string;
begin
  clrscr;
  date:='';
  for k:=0 to 7 do
    date:=date+(chr(mem[$f000:$fff5+k]));
  writeln(date);
  {проверочка}
  if date<>MyDate then
    begin
       writeln('Это другой комп!');
       halt;
    end;


наврятли тебе поможет определение индивидуальности по типу ПК. Если ты брал эти все советы из книги Фаронова, то посмотри там есть куча советов: память, версия дос, дата ПЗУ, особенности физических носителей, .....

И еще держи пароль в программе в зашифрованном виде, а то так кто угодно сможет воспользоваться твоей программой имея под рукой всего лишь HEX редактор...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi"
THandle
Rrader
volvo877

Запрещается!

1. Обсуждать и делится взломанными компонентами или программным обеспечением

2. Публиковать ссылки на варез

3. Оффтопить

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, THandle, Rrader, volvo877.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Object Pascal: кроссплатформенные технологии | Следующая тема »


 




[ Время генерации скрипта: 0.0659 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.