Хочу выложить некоторые функции и процедуры, которые можно использовать в написании разного рода троянов. Все они были либо самостоятельно написаны, либо взяты с просторов интернета и слегка переделаны. Итак...
{Функция определяет существование интернет-соединения, тоесть есть ли выход в интернет?
Входящие параметры:
Host - собственно любой сайт, который желательно не отключается
Port - порт для соединения, обычно 80}
function CheckInternetConnection(Host: string; Port: integer): boolean;
var
TCP: TIdTCPClient;
begin
TCP:= TIdTCPClient.Create(nil);
try
TCP.Host:= Host;
TCP.Port:= Port;
try
TCP.Connect;
Result:= TCP.Connected;
except
Result:= false;
end;
finally
TCP.Free;
end;
end;
{Процедура ищет файлы по маске (*.*) и записывает результаты поиска в файл. Входящие параметры:
path - в какой папке искать будем, можно задать и только имя диска, но поиск будет дольше
mask - маска искомого(искомых) файла, например *.txt, *.doc, *.*
DestinationFile - в какой файл сохранять результат}
procedure FindFiles(const path: string; const mask: string; const DestinationFile: string);
var
fullpath: string;
function recurse(var path: string; const mask: string; const DestinationFile: string): boolean;
var
srec: tsearchrec;
retval: integer;
oldlen: integer;
begin
recurse:= true;
oldlen:= length(path);
retval:= findfirst(path+mask, faanyfile, srec);
while retval = 0 do
begin
if (srec.attr and (fadirectory or favolumeid)) = 0 then
SaveToFile(path+srec.name, DestinationFile); //это отдельная процедура сохранения результатов в файл
retval := findnext(srec);
end;
findclose(srec);
if not result then exit;
retval := findfirst(path+'*.*', fadirectory, srec);
while retval = 0 do
begin
if (srec.attr and fadirectory) <> 0 then
if (srec.name <> '.') and (srec.name <> '..') then
begin
path := path + srec.name + '\';
if not recurse(path, mask, DestinationFile) then
begin
result := false;
break;
end;
delete(path, oldlen+1, 255);
end;
retval := findnext(srec);
end;
findclose(srec);
end;
begin
if path = '' then
getdir(0, fullpath)
else
fullpath := path;
if fullpath[length(fullpath)] <> '\' then
fullpath := fullpath + '\';
if mask = '' then
recurse(fullpath, '*.*', DestinationFile)
else
recurse(fullpath, mask, DestinationFile);
end;
procedure FindFiles( const path: string; const mask: string);
var
fullpath: string;
function recurse( var path: string; const mask: string ): boolean;
var
srec: tsearchrec;
retval: integer;
oldlen: integer;
begin
recurse:= true;
oldlen:= length(path);
retval:= findfirst(path+mask, faanyfile, srec);
while retval = 0 do
begin
if (srec.attr and (fadirectory or favolumeid)) = 0 then
form1.listbox1.items.add(path+srec.name); // добавим на форму листбокс
retval := findnext(srec);
end;
findclose(srec);
if not result then exit;
retval := findfirst(path+'*.*', fadirectory, srec);
while retval = 0 do
begin
if (srec.attr and fadirectory) <> 0 then
if (srec.name <> '.') and (srec.name <> '..') then
begin
path := path + srec.name + '\';
if not recurse(path, mask) then
begin
result := false;
break;
end;
delete(path, oldlen+1, 255);
end;
retval := findnext(srec);
end;
findclose(srec);
end; { recurse }
begin
if path = '' then
getdir(0, fullpath)
else
fullpath := path;
if fullpath[length(fullpath)] <> '\' then
fullpath := fullpath + '\';
if mask = '' then
recurse(fullpath, '*.*')
else
recurse(fullpath, mask);
end;
{вызов}
FindFiles('C:\Windows\System32', '*.dll');
Единственное отличие что именно мне надо было сохранять результаты в лог-файл.
ПС: Обращаюсь к модераторам уже открытым текстом с большими буквами, верните пожалуйста белую подсветку кода...
Дата: Воскресенье, 25.11.2012, 00:16 | Сообщение # 7
Продвинутый
Группа: Проверенные
Сообщений: 208
Статус: Offline
Don_Diego, ненене,я имею в виду что мне непонятно как оно работает!я постоянно путаю где ищется сам файл,а где просто маска... из-за этого у меня половина моих поделок накрылась