ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.

11.12.2007, 02:23
|
|
Постоянный
Регистрация: 04.11.2007
Сообщений: 331
Провел на форуме: 1724067
Репутация:
806
|
|
Сообщение от XIII
а там mysql пишит почитайте мануал =)
Твоя исправленая прожка.
http://slil.ru/25218019

|
|
|

11.12.2007, 04:46
|
|
Постоянный
Регистрация: 04.11.2007
Сообщений: 331
Провел на форуме: 1724067
Репутация:
806
|
|
МуСкул
to XIII
Код:
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;
Полностью рабочая процедурка под кнопку. У меня на локальной машине с Денвером все работает безотказно.
|
|
|

11.12.2007, 07:18
|
|
Познающий
Регистрация: 27.03.2007
Сообщений: 95
Провел на форуме: 244822
Репутация:
37
|
|
Сообщение от z01b
Вот он, но алго простой =)
Код:
{ **** 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.
спасибо, я тоже нашел этот пример, но.......
Процедура изночально не зашифровано,
что ни есть хорошо.Для того что бы процедура была при запуске программы
уже зашифрована надо написать внешнюю программку,которая ба сканировала
ехе-шник и находила определенные метки(начальную и конечную)и шифровала
бы всё между ними.Таким образом вы получите готовый ехе-шник с уже
зашифрованой(зашифрованым )процедурой
как написать эту "внешнюю программку"?
Я задал такой вопрос в надежде может ктонить поделится своим опытом с меннее опытными.
|
|
|

11.12.2007, 18:29
|
|
Постоянный
Регистрация: 04.11.2007
Сообщений: 331
Провел на форуме: 1724067
Репутация:
806
|
|
Шифрования
to cyber$nake.
В последних сообщениях как говорится смешались в кучу кони й люди. Может я конечно что-то неправильно понял, но -
Начну с шифрования исходников: в Делфи это бесполезная вещь. Если не хоч давать исходники не давай, давай сам екзешник. Применения шифрования к исходникам я видел лишь один раз - в фирме старый програмист позаменял название переменных и функций на случайные комбинации. С одной стороны все просто, но с другой - пришлось заново переписывать с нуля прогу ведь розобраться в исходниках стало нереально.
Шифрование екзешников: Здесь проше и эфективнее будет использовать уже готовый продукт. Например тотже разрекламированый АспПротект последней версии или другой не очень известный. Если грамотно поставить эти крипторы, то этим задача крякеров осложняется в несколько раз, а для средняков и насчинающих это капец.  В том же АспПротекте кажется можно указывать шифровать участки кода. И для последней версии в паблике нету автоматического расшифровщика.
|
|
|

11.12.2007, 21:34
|
|
Reservists Of Antichat - Level 6
Регистрация: 12.02.2006
Сообщений: 891
Провел на форуме: 1892597
Репутация:
836
|
|
1 - Виртуальная машина - VMProtect
2 - пакеры/крипторы/протекторы - DotFix FakeSigner
3 - имена функций типа FFFFx0
4 - Delphi String Protect прога защитит string-овые данные.
думаю хватит... проблем с поиском софта не возникнет, поэтому не дал линков.
__________________
*********************************
*Я не волшебник ٩(๏̯͡๏)۶, только учусь...*
*********************************
Программы на заказ
Times to fly...
|
|
|

11.12.2007, 23:29
|
|
Участник форума
Регистрация: 06.02.2006
Сообщений: 137
Провел на форуме: 656903
Репутация:
15
|
|
presidentua спасибо больше, тока вот оно выдаёт всю строку а как сделать чтобы отдельное поле только
--
уже разобрался
Последний раз редактировалось XIII; 11.12.2007 в 23:44..
|
|
|

11.12.2007, 23:43
|
|
Постоянный
Регистрация: 05.01.2007
Сообщений: 508
Провел на форуме: 2360904
Репутация:
1393
|
|
Сообщение от XIII
presidentua спасибо больше, тока вот оно выдаёт всю строку а как сделать чтобы отдельное поле только
delete();
|
|
|

11.12.2007, 23:48
|
|
Постоянный
Регистрация: 04.11.2007
Сообщений: 331
Провел на форуме: 1724067
Репутация:
806
|
|
presidentua спасибо больше, тока вот оно выдаёт всю строку а как сделать чтобы отдельное поле только
Один из вариантов
Код:
if DataSource1.DataSet.RecordCount = 0 then
begin
ShowMessage('Такого Логина нету');
end
else
begin
ShowMessage('OK');
ShowMessage(DBGrid1.Fields[1].AsString);
end;
выводит на экран Логин. А по сути, выводит 2 столбец из текущей строки, поскольку строка одна - то она всегда текущая.
|
|
|

12.12.2007, 00:22
|
|
Участник форума
Регистрация: 06.02.2006
Сообщений: 137
Провел на форуме: 656903
Репутация:
15
|
|
а можно как в label вставить ? чтонить типа Label4.Caption:= 'DBGrid1.Fields[1].AsString';
-----
уже понял =) правельно Label4.Caption:= DBGrid1.Fields[1].AsString;
Последний раз редактировалось XIII; 12.12.2007 в 00:29..
|
|
|

12.12.2007, 00:29
|
|
Постоянный
Регистрация: 05.01.2007
Сообщений: 508
Провел на форуме: 2360904
Репутация:
1393
|
|
Сообщение от XIII
а можно как в label вставить ? чтонить типа Label4.Caption:= 'DBGrid1.Fields[1].AsString';
Будет без ковычек, чтото типа такого Label4.Caption:=DBGrid1.Fields[1].AsString;
|
|
|
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|