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

    В номинации:
    За время:
  2. 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)
  3. 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)
  4. 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)
  5. 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)
  6. 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)
  7. 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)
  8. Java / Говнокод #14162

    +77

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    final Pair<List<Pair<Pair<Long, String>, Maybe<String>>>, List<Pair<Pair<Long, String>, Maybe<String>>>> split = Cu.split(pushResults, new Filter<Pair<Pair<Long, String>, Maybe<String>>>() {
                @Override
                public boolean fits(final Pair<Pair<Long, String>, Maybe<String>> arg) {
                    return arg.second.hasValue();
                }
            });

    Functional Java: simply clever

    roman-kashitsyn, 02 Декабря 2013

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

    +145

    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
    function curPageURL() {
    	$pageURL = 'http';
    	if ($_SERVER["HTTPS"] == "on") {$pageURL .= "s";}
    	$pageURL .= "://";
    
    	if ($_SERVER["SERVER_PORT"] != "80") {
    		$pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
    	} else {
    		$pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
    	}
    
    	$pos = strripos($pageURL, "/");
    	if ($pos !== false) {
    		$pageURL = substr($pageURL, 0, $pos+1);
    	}
    
    	return $pageURL;
    }

    Эпическая функция предназначение неизвестно.

    good_web_master, 07 Сентября 2013

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

    +131

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    <td>
    						<select class="form-control" ng-model="contact.type">
    							<option value="meat">Работоспособный</option>
    							<option value="children">Ребенок</option>
    							<option value="cripple">Пенсионер</option>
    							<option value="cripple">Инвалид</option>
    						</select>
    					</td>

    дети цветы жизни. остальные - мясо и калеки

    rombik, 03 Сентября 2013

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

    +147

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    // checklogin.php
    <?php
    
    session_start();
    
    if(!isset($_SESSION['adminlogged'])){
    exit;
    }
    
    ?>

    гулял тут по девсерверу нашей конторы...

    nonamez, 01 Августа 2013

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