[ Delphi / Pascal ] — начинающим: задаем вопросы (архивная - 2015)

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by banned, 6 May 2007.

Thread Status:
Not open for further replies.
  1. Twiddle

    Twiddle Elder - Старейшина

    Joined:
    6 Sep 2006
    Messages:
    13
    Likes Received:
    9
    Reputations:
    0
    Подскажите код который бы искал в файле бла-бла.тхт строчку, вернее часть строки, найдя записывал её и следующую за ней в файл и продолжал искать дальше, найдя ещё одну записывал бы так же в результат.тхт с новой строчки и так далее пока не найдет все.И высший пилотаж, если в результат.тхт быдет записываться кол-во найденных пар-строк и время/дата поиска.
    Заранее спасибо
     
  2. LEE_ROY

    LEE_ROY Elder - Старейшина

    Joined:
    9 Nov 2006
    Messages:
    450
    Likes Received:
    188
    Reputations:
    26
    пробелы поставь правельно, выведи запрос в строку, в эдит какойто edit3.text := 'select * from userlist where firstName' + Edit1.Text + 'and lastName' + Edit2.Text; и глянь где пробелы непарвльно стоят, скорее всего в этом трабла. с тебя ящик пива :p
     
  3. cyber$nake

    cyber$nake Elder - Старейшина

    Joined:
    27 Mar 2007
    Messages:
    93
    Likes Received:
    11
    Reputations:
    0
    Криптование программного кода

    Всем здрасте!
    Вот такой вопрос, есть ли какойнить код с помощью которого можно зактиптовать полностью процедуру или функцию?

    Возможно ли закриптовать программный код в исходниках?

    P.s. Может конечно я не туда запостил, но ответ хотелось бы увидеть в виде кода, если таковой возможен.
     
  4. cyber$nake

    cyber$nake Elder - Старейшина

    Joined:
    27 Mar 2007
    Messages:
    93
    Likes Received:
    11
    Reputations:
    0

    это хорошо, но хотелось бы шифрануть *.pas

    Эсть ли такая возможность?
     
  5. Хозяин

    Хозяин Elder - Старейшина

    Joined:
    15 Mar 2006
    Messages:
    435
    Likes Received:
    404
    Reputations:
    110
    ТАк, первый пост я вообще не в тему запостил ... не заметил что ты про програмный код, начал уже до перла распинаться ... одумался.

    Есть решения, в примеру ASProtect
    https://www.softactivation.com/asp/asprotect.asp

    Это как пример

    FLEX LM, HASP.

    Но это для теории, сломано уже все.
     
  6. cyber$nake

    cyber$nake Elder - Старейшина

    Joined:
    27 Mar 2007
    Messages:
    93
    Likes Received:
    11
    Reputations:
    0
    есть замечательная прога кот. шифрует только значение строковых переменных
    http://www.securitylab.ru/software/234296.php

    мне нада чтобы полностью процедуру и т.д.
     
  7. XIII

    XIII Elder - Старейшина

    Joined:
    6 Feb 2006
    Messages:
    109
    Likes Received:
    17
    Reputations:
    -1
    да таже хня что и была, должно же = быть вроде?
     
    #807 XIII, 10 Dec 2007
    Last edited: 10 Dec 2007
  8. P@rtiZaN

    P@rtiZaN New Member

    Joined:
    9 Dec 2007
    Messages:
    18
    Likes Received:
    1
    Reputations:
    0
    как убить мышу????
     
  9. xXvladXx

    xXvladXx Elder - Старейшина

    Joined:
    28 Oct 2007
    Messages:
    77
    Likes Received:
    54
    Reputations:
    5
    мышиловка, отрава, ногой можно, об стену, еще вариант
    Code:
    procedure TForm1.Button1Click(Sender: TObject); 
    var    
    r: TRect;    
    pr: PRect;  
    begin   
    r.Left := 0;    
    r.Top := 0;    
    r.Right := 0;    
    r.Bottom := 0;    
    pr := @r;    
    ClipCursor(pr);  
    end;
    ну еще
    Code:
    procedure TForm1.Button1Click(Sender: TObject);
    var
      CState: Integer;
    begin
      CState := ShowCursor(True);
      while Cstate >= 0 do
        Cstate := ShowCursor(False);
    end;
     
  10. XIII

    XIII Elder - Старейшина

    Joined:
    6 Feb 2006
    Messages:
    109
    Likes Received:
    17
    Reputations:
    -1
    вот так вроде работает, а как сделать если совпали то напишит что совпали =)
     
    1 person likes this.
  11. z01b

    z01b Муджахид

    Joined:
    5 Jan 2007
    Messages:
    494
    Likes Received:
    382
    Reputations:
    22
    Вот он, но алго простой =)
    Code:
    { **** UBPFD *********** by kladovka.net.ru ****
    
    >> Шифрование исполняемого файла
    
     
    
    В данном примере реализована процедура шифрования и расшифрования одной 
    
    только процедуры "вывода сообщения".Процедура изночально не зашифровано,
    
    что ни есть хорошо.Для того что бы процедура была при запуске программы 
    
    уже зашифрована надо написать внешнюю программку,которая ба сканировала 
    
    ехе-шник и находила определенные метки(начальную и конечную)и шифровала 
    
    бы всё между ними.Таким образом вы получите готовый ехе-шник с уже 
    
    зашифрованой(зашифроваными)процедурой. Для того чтоб некоторым умным 
    
    людям (crackers)жить было не легко,после расшифровки и выполнения процедуры 
    
    можно её опять зашифровать.
    
     
    
    Более потробную информацию читайте в статье на «Королевства Delphi»
    
    http://delphi.vitpc.com/mastering/safe/safe.htm
    
     
    
    Там же читайте Открытый проект "Анти крэковые мучения"
    
    http://delphi.vitpc.com/mastering/safe/index.htm
    
     
    
    Зависимости: Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, 
    
    Forms,Dialogs, StdCtrls;
    
    Автор:       DDA, Vologda
    
    Copyright:   «Королевства Delphi» Защита от несанкционированного 
    
    использования программ, написанных на Delphi
    
    Дата:        3 марта 2004 г.
    
    ********************************************** }
    
     
    
    unit Unit1;
    
     
    
    interface
    
     
    
    uses
    
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    
    Dialogs, StdCtrls;
    
     
    
    type
    
    TForm1 = class(TForm)
    
       Button1: TButton;
    
       Button2: TButton;
    
       procedure Button1Click(Sender: TObject);
    
       procedure Button2Click(Sender: TObject);
    
    private
    
       { Private declarations }
    
    public
    
       { Public declarations }
    
    end;
    
     
    
    var
    
    Form1: TForm1;
    
     
    
    implementation
    
     
    
    {$R *.dfm}
    
     
    
    Procedure metka1;
    
    //Начальная метка - нужна что бы находить потом в exe файле эти символы и знать
    
    //откуда начинать шифровать
    
    //Здесь метка представляет из себя десятичные числа от 0 до 256 через запятые
    
    //Если метка 50,60,70,80,90 то это соответствует символам 2<FPZ
    
    //Кстати, такого кол-во символов в метке может быть мало и лучше использовать больше
    
    //Т.к если программа большая то такие последовательности могут встретиться не один раз
    
    begin
    
    asm
    
       DB 50,60,70,80,90 //2<FPZ это метка начальная
    
    end;
    
     
    
    end;
    
     
    
    procedure TForm1.Button1Click(Sender: TObject);
    
    begin
    
    beep;
    
    ShowMessage('Период использования программы истёк!');
    
    end;
    
     
    
    Procedure metka2;
    
    //Конечная метка - нужна чтобы знать до куда нужно шифровать в файле и
    
    //докуда расшифровывать в памяти
    
    begin
    
    asm
    
       DB 68,68,67,45,61 //DDA-= это метка конечная
    
    end;
    
    end;
    
     
    
    procedure TForm1.Button2Click(Sender: TObject);
    
    //Процедура Расшифрования(В даном примере и зашифрования)
    
    var
    
    ptrAddr: Pointer; {для Адреса процедуры вывода сообщения}
    
    dwOldProtect: DWORD;
    
    begin
    
    ptrAddr := @TForm1.Button1Click;//Получаем адрес процедуры вывода сообщения
    
    VirtualProtect(@TForm1.Button1Click, 2048, PAGE_READWRITE, @dwOldProtect);
    
    //2048 это размер в байтах с которыми можно работать(по моему)
    
    //Если процедура большая то нужно подбирать соответствующий размер
    
    while ptrAddr <> @metka2 do //шифрование(слабое) выполняем пока не дойдем то конечной метки
    
    begin
    
    Byte(ptrAddr^) := Byte(ptrAddr^) xor $41;
    
    //каждый байт в памяти ксорится с кодом 65'A'(к примеру)
    
    //Используйте более надёжные алгоритмы шифрования
    
    inc(Integer(ptrAddr));
    
    end;
    
     
    
    exit; //нужно так сделать что б компилятор включил эти процедуры
    
    metka1;//в код,т.к Delphi не вставляет в результирующий код процедуры,
    
    metka2;//которые никогда не используются
    
    end;
    
     
    
    //Такое шифрование взято для примера и не рекомендуется для использования серьёзной защиты
    
    //Также рекомендуется использовать и проверочную контрольную сумму для проверки
    
    //целостности кода программы.
    
    //Теперь осталось только сделать отдельную программу которая искала бы
    
    //в этом exe файле начальную и конечную метки и шифровало бы всё между ними
    
    //
    
    //Но для демонстрации можно посмотреть результат и сейчас
    
    //Запустите программу и нажмите на кнопку 1 -Должно вывестись сообщение и звук.сигнал
    
    //А если нажать на кнопку 2 - то прцедура нажатия на кнопку 1 зашифруется
    
    //И если после этого нажать на кнопку 1 -то должно произойти что-то не предсказуемое
    
    //т.к процедура зашифрованна и что-то нормального вы не увидите.
    
     
    
    //Источник информации: CopyRight «Королевства Delphi»
    
    //"Защита от несанкционированного использования программ, написанных на Delphi"
    
     
    
     
    
    end. 
    
     
    
    
     
    1 person likes this.
  12. presidentua

    presidentua милиционер Античата

    Joined:
    4 Nov 2007
    Messages:
    305
    Likes Received:
    236
    Reputations:
    15
    Твоя исправленая прожка.
    http://slil.ru/25218019

    :) :) :)
     
  13. presidentua

    presidentua милиционер Античата

    Joined:
    4 Nov 2007
    Messages:
    305
    Likes Received:
    236
    Reputations:
    15
    МуСкул

    to XIII
    Code:
    procedure TForm2.Button2Click(Sender: TObject);
    var s:string;
    begin
    s:='select * from userlist where firstName="'+Edit3.Text+'" and lastName="'+Edit6.Text+'"';
    ShowMessage(s);
    SimpleDataSet1.DataSet.CommandText:=s;
    SimpleDataSet1.DataSet.Active:=false;
    SimpleDataSet1.Active:=false;
    SimpleDataSet1.DataSet.Active:=true;
    SimpleDataSet1.Active:=true;
    
    if DataSource1.DataSet.RecordCount = 0 then
      begin
        ShowMessage('Такого Логина нету');
      end
    else   ShowMessage('OK');
    end;
    Полностью рабочая процедурка под кнопку. У меня на локальной машине с Денвером все работает безотказно.
     
  14. cyber$nake

    cyber$nake Elder - Старейшина

    Joined:
    27 Mar 2007
    Messages:
    93
    Likes Received:
    11
    Reputations:
    0

    спасибо, я тоже нашел этот пример, но.......

    как написать эту "внешнюю программку"?

    Я задал такой вопрос в надежде может ктонить поделится своим опытом с меннее опытными.
     
  15. presidentua

    presidentua милиционер Античата

    Joined:
    4 Nov 2007
    Messages:
    305
    Likes Received:
    236
    Reputations:
    15
    Шифрования

    to cyber$nake.

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

    Начну с шифрования исходников: в Делфи это бесполезная вещь. Если не хоч давать исходники не давай, давай сам екзешник. Применения шифрования к исходникам я видел лишь один раз - в фирме старый програмист позаменял название переменных и функций на случайные комбинации. С одной стороны все просто, но с другой - пришлось заново переписывать с нуля прогу ведь розобраться в исходниках стало нереально.

    Шифрование екзешников: Здесь проше и эфективнее будет использовать уже готовый продукт. Например тотже разрекламированый АспПротект последней версии или другой не очень известный. Если грамотно поставить эти крипторы, то этим задача крякеров осложняется в несколько раз, а для средняков и насчинающих это капец. :) В том же АспПротекте кажется можно указывать шифровать участки кода. И для последней версии в паблике нету автоматического расшифровщика.
     
    2 people like this.
  16. W!z@rD

    W!z@rD Борец за русский язык

    Joined:
    12 Feb 2006
    Messages:
    973
    Likes Received:
    290
    Reputations:
    43
    1 - Виртуальная машина - VMProtect
    2 - пакеры/крипторы/протекторы - DotFix FakeSigner
    3 - имена функций типа FFFFx0
    4 - Delphi String Protect прога защитит string-овые данные.

    думаю хватит... проблем с поиском софта не возникнет, поэтому не дал линков.
     
  17. XIII

    XIII Elder - Старейшина

    Joined:
    6 Feb 2006
    Messages:
    109
    Likes Received:
    17
    Reputations:
    -1
    presidentua спасибо больше, тока вот оно выдаёт всю строку а как сделать чтобы отдельное поле только
    --
    уже разобрался
     
    #817 XIII, 11 Dec 2007
    Last edited: 11 Dec 2007
  18. z01b

    z01b Муджахид

    Joined:
    5 Jan 2007
    Messages:
    494
    Likes Received:
    382
    Reputations:
    22
    delete();
     
    1 person likes this.
  19. presidentua

    presidentua милиционер Античата

    Joined:
    4 Nov 2007
    Messages:
    305
    Likes Received:
    236
    Reputations:
    15
    Один из вариантов
    Code:
    if DataSource1.DataSet.RecordCount = 0 then
      begin
        ShowMessage('Такого Логина нету');
      end
    else
      begin
        ShowMessage('OK');
        ShowMessage(DBGrid1.Fields[1].AsString);
      end;
    выводит на экран Логин. А по сути, выводит 2 столбец из текущей строки, поскольку строка одна - то она всегда текущая.
     
    1 person likes this.
  20. XIII

    XIII Elder - Старейшина

    Joined:
    6 Feb 2006
    Messages:
    109
    Likes Received:
    17
    Reputations:
    -1
    а можно как в label вставить ? чтонить типа Label4.Caption:= 'DBGrid1.Fields[1].AsString';
    -----
    уже понял =) правельно Label4.Caption:= DBGrid1.Fields[1].AsString;
     
    #820 XIII, 11 Dec 2007
    Last edited: 11 Dec 2007
Thread Status:
Not open for further replies.