1. Assembler / Говнокод #18066

    +249

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    mov     ecx, [eax+374h] 
    xor     edx, edx
    test    ecx, ecx
    jg      short loc_17BE80
    mov     ecx, edx 
    loc_17BE80:
    mov     [eax+374h], ecx
    mov     eax, [ebp+360h]
    mov     edx, [eax+374h]
    cmp     edx, [eax+102Ch]
    ;...

    Какой интересный способ обнуления ecx избрал компилятор...

    gost, 27 Апреля 2015

    Комментарии (10)
  2. Assembler / Говнокод #17931

    +130

    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
    ;Дисассемблировано "Doctor Watson" для Windows Server 2003 R2 x64
            00000000`004d3f4b 2448             and     al,0x48
            00000000`004d3f4d 488b742440       mov     rsi,[rsp+0x40]
            00000000`004d3f52 418b4008         mov     eax,[r8+0x8]
            00000000`004d3f56 4c8b642420       mov     r12,[rsp+0x20]
            00000000`004d3f5b 488b5c2430       mov     rbx,[rsp+0x30]
            00000000`004d3f60 ffc8             dec     eax
            00000000`004d3f62 498d54c00c       lea     rdx,[r8+rax*8+0xc]
            00000000`004d3f67 666690           nop
            00000000`004d3f6a 666690           nop
            00000000`004d3f6d 666690           nop
    FAULT ->00000000`004d3f70 0fb74202 movzx eax,word ptr [rdx+0x2] ds:00000008`01511086=????
            00000000`004d3f74 443bc8           cmp     r9d,eax
            00000000`004d3f77 440f42c8         cmovb   r9d,eax
            00000000`004d3f7b 66837a0400       cmp     word ptr [rdx+0x4],0x0
            00000000`004d3f80 7415             jz      bma+0xd3f97 (00000000004d3f97)
            00000000`004d3f82 488d0cc500000000 lea     rcx,[00000000+rax*8]
            00000000`004d3f8a 488d0449         lea     rax,[rcx+rcx*2]
            00000000`004d3f8e 0f181442         prefetcht1 byte ptr [rdx+rax*2]
            00000000`004d3f92 4803d1           add     rdx,rcx
            00000000`004d3f95 ebd9             jmp     bma+0xd3f70 (00000000004d3f70)
            00000000`004d3f97 488bc5           mov     rax,rbp

    HP Data Protection Manager 6.10, Windows x86-64, NDMP Media Agent. С первым патчем (не помню номер). Падал с Access Violation.
    Явно ошибка в компиляторе. Если что, в rax в этот момент было 0x00000000ffffffff.

    motoprogger, 04 Апреля 2015

    Комментарии (3)
  3. Assembler / Говнокод #17584

    +135

    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
    descriptions[result].Append(tblib::Format("%").i(0x12345678, 0xBB));
    
    
    0040E729  push        0BBh 
    0040E72E  push        12345678h                                                                ; ага, запихали параметры для Format::i, заебись; теперь esp=0x0012f1f4
    0040E733  lea         eax,[esp+38h] 
    0040E737  push        eax                                                                      ; esp=0x0012f1f0
    0040E738  lea         ecx,[esp+1Ch] 
    0040E73C  mov         dword ptr [esp+3Ch],offset USER32_NULL_THUNK_DATA+40h (43C1A8h) 
    0040E744  mov         dword ptr [esp+40h],ebp 
    0040E748  mov         dword ptr [esp+44h],1 
    0040E750  call        tblib::HeapCArray<char>::HeapCArray<char><tblib::StringRef> (4161B0h)    ; esp=0x0012f1f4
    0040E755  push        400h                                                                     ; esp=0x0012f1f0
    0040E75A  mov         ecx,offset tbAlloc (18B0C88h) 
    0040E75F  mov         dword ptr [esp+2Ch],ebp 
    0040E763  mov         dword ptr [esp+28h],ebp 
    0040E767  mov         dword ptr [esp+24h],ebp 
    0040E76B  call        tblib::Allocator::Malloc (42C500h)                                       ; esp=0x0012f1f4
    0040E770  mov         dword ptr [esp+20h],eax 
    0040E774  neg         eax  
    0040E776  sbb         eax,eax 
    0040E778  and         eax,400h 
    0040E77D  lea         ecx,[esp+18h] 
    0040E781  mov         dword ptr [esp+24h],eax 
    0040E785  mov         dword ptr [esp+2Ch],0FFFFFFFFh 
    0040E78D  call        tblib::Format::PassToNext (41BC00h)            ; хуй знает почему, но после этой функции esp не меняется, конвенция такая видимо
    0040E792  sub         esp,0Ch                                        ; БЛЯДЬ СУКА НАХУЙ ЁБАНЫЙ ПИЗДЕЦ ТЫ ЧЁ СУКА ТВОРИШЬ ААААААААА!!!!!!!!!!!!!!!!!!!!!!!!
    0040E795  lea         ecx,[esp+24h] 
    0040E799  mov         edi,esp 
    0040E79B  call        tblib::Format::i (42DBA0h)                     ; esp=0x0012f1e8, указывает на мусор, параметры для функции - где-то выше
    ...

    MSVC 2003 релиз

    TarasB, 05 Февраля 2015

    Комментарии (296)
  4. Assembler / Говнокод #17545

    +114

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    CFG ; start: scasb
    DCG ; salc
    AEEAFF ; and al,'\'-'/'
    AAEAFO ; add al,'/'
    DBFAFB ; int 29h
    DFDDGG ; jmp start

    Генератор лабиринта на Wct.

    Mihip, 29 Января 2015

    Комментарии (34)
  5. Assembler / Говнокод #17539

    +145

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    add ax,1 ; Добавляем в ax 1 (не знаю, почему он так сделал, МЕДЛЕННО И 3 БАЙТА), можно было же inc ax
    add ax,1
    add ax,1
    add ax,1
    add ax,1
    add ax,1
    add ax,1
    add ax,1
    add ax,1
    mov ax,9 ; А теперь я понял тщетность бытия и те потраченные байты выше.

    Самый лучший говнокод новичка, который я видел.

    Mihip, 28 Января 2015

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

    +198

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    org 100h ; DOS, чёрной пеленой покрытый DOS...
    
    delGovnocode:
    mov eax,govnokod ; Помещаем в EAX говнокод
    xor eax,eax ; Обнуляем EAX
    
    govnokod db "AllGovnocodeInTheWorld" ; говнокод

    Самый эффективный способ уничтожения говнокода, который является говнокодом.

    Mihip, 28 Января 2015

    Комментарии (20)
  7. Assembler / Говнокод #17424

    +143

    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
    dw 0 ; reserved, must be 0
    dw 1 ; icon type, must be 1
    dw 2 ; number of images in file
    
    ; 1st icon header
    db 32 ; width
    db 32 ; height
    db 0 ; no color palette
    db 0 ; reserved, must be 0
    dw 1 ; planes
    dw 32 ; bits per pixel
    dd icon32_end-icon32_start ; length
    dd icon32_start ; offset
    
    ; 2nd icon header
    db 16 ; width
    db 16 ; height
    db 0 ; no color palette
    db 0 ; reserved, must be 0
    dw 1 ; planes
    dw 32 ; bits per pixel
    dd icon16_end-icon16_start ; length
    dd icon16_start ; offset
    
    ; 1st icon body
    icon32_start:
    file 'icon32.png'
    icon32_end:
    
    ; 2nd icon body
    icon16_start:
    file 'icon16.png'
    icon16_end:

    http://habrahabr.ru/post/247425/
    Сборка иконки FASMом

    govnokod3r, 09 Января 2015

    Комментарии (17)
  8. Assembler / Говнокод #17114

    +147

    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
    strnstr proc
    	jrcxz @@3
    	push rdi
    	push rsi
    	mov rdi,rdx
    	mov al,[r9]
    	inc r9
    	dec r8
    @@1:
    	repne scasb
    	jne @@2
    	cmp rcx,r8
    	jb @@2
    	mov rsi,r9
    	mov rdx,rdi
    	mov r10,rcx
    	mov rcx,r8
    	repe cmpsb
    	je @@2
    	mov rcx,r10
    	mov rdi,rdx
    	jmp @@1
    @@2:
    	sete al
    	movzx rax,al
    	neg rax
    	and rax,rdi
    	pop rsi
    	pop rdi
    	ret
    @@3:
    	xor rax,rax
    	ret
    strnstr endp

    PSTR __fastcall strnstr(SIZE_T n1, const void* str1, SIZE_T n2, const void* str2);

    zhukas, 15 Ноября 2014

    Комментарии (2)
  9. Assembler / Говнокод #16890

    +165

    1. 1
    2. 2
    mov eax, 4
    add dx, eax

    Во время службы попал я в ракетные войска и для облегчения жизни своей писал себе разные прожки старые бабки всё время как-бы невзначай крутились возле кабинета, и всё спрашивали, что ты там затих, почему тебя не слышно? первый раз я не ответил, так они начали ломиться в дверь, и орать, что ты там молчишь, что с тобой? начали материться, и говорить, что вообще дверь с петель снимут, алсо, они ругаются, если я компилю в дебаг режиме и отдаю заму, причём не просто вконце тестов, а непосредственно после дебага, мотивировал это тем, что лишний мусор, и сами потом мне говорили: вот мы скомпилим в релиз, и ты так делай! однажды я прожить сел, и слышу, бабки где-то у двери встали в отдалении, ну я в дебаге цикл прогнал, и на пол накарачики присел, а там щель очень широкая снизу у двери, ну я в щель и смотрю, а там бабки на карачиках сидит и в щель смотрит, и мне говорит: ты чё? ебанутый? чё ты там делаешь? бабки кстати всё время какие-то мануалы читают, чтобы писать сразу в машинном коде, пишут в интел прям через хекс редактор, а потом говорят, что ассемблер надоел, и ещё не толкают в esi ссылки на функции. пиздец короче! реальная история. я не тролль

    DesmondHume, 18 Октября 2014

    Комментарии (117)
  10. Assembler / Говнокод #15892

    +146

    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
    .text:08104D0B                 mov     ebx, [ebp+arg_0]
    .text:08104D0E                 mov     ecx, [ebp+var_C]
    .text:08104D11                 mov     eax, 51EB851Fh
    .text:08104D16                 imul    ecx
    .text:08104D18                 sar     edx, 4
    .text:08104D1B                 mov     eax, ecx
    .text:08104D1D                 sar     eax, 1Fh
    .text:08104D20                 sub     edx, eax
    .text:08104D22                 mov     [ebp+var_C], edx
    .text:08104D25                 mov     ecx, [ebx+38h]
    .text:08104D28                 mov     eax, 51EB851Fh
    .text:08104D2D                 imul    ecx
    .text:08104D2F                 sar     edx, 4
    .text:08104D32                 mov     eax, ecx
    .text:08104D34                 sar     eax, 1Fh
    .text:08104D37                 sub     edx, eax
    .text:08104D39                 mov     [ebx+38h], edx
    .text:08104D3C                 cmp     [ebp+var_C], 0
    .text:08104D40                 jg      short loc_8104D55
    .text:08104D42                 mov     [ebp+var_C], 1
    .text:08104D49                 nop
    .text:08104D4A                 nop
    .text:08104D4B                 nop
    .text:08104D4C                 nop
    .text:08104D4D                 nop
    .text:08104D4E                 nop
    .text:08104D4F                 nop
    .text:08104D50                 nop
    .text:08104D51                 nop
    .text:08104D52                 nop
    .text:08104D53                 nop
    .text:08104D54                 nop
    .text:08104D55
    .text:08104D55 loc_8104D55:                            ; CODE XREF: session_skill::StartSession(bool)+222j
    .text:08104D55                 mov     eax, [ebp+arg_0]
    .text:08104D58                 cmp     byte ptr [eax+29h], 0
    .text:08104D5C                 jz      short loc_8104D74
    .text:08104D5E                 mov     ebx, [ebp+arg_0]
    .text:08104D61                 sub     esp, 0Ch
    .text:08104D64                 push    offset g_timer
    .text:08104D69                 call    _ZN5abase5timer8get_tickEv ; abase::timer::get_tick(void)
    .text:08104D6E                 add     esp, 10h
    .text:08104D71                 mov     [ebx+40h], eax
    .text:08104D74
    .text:08104D74 loc_8104D74:                            ; CODE XREF: session_skill::StartSession(bool)+23Ej
    .text:08104D74                 sub     esp, 0Ch
    .text:08104D77                 push    [ebp+var_C]
    .text:08104D7A                 push    0
    .text:08104D7C                 push    14h
    .text:08104D7E                 push    offset g_timer
    .text:08104D83                 mov     eax, [ebp+arg_0]
    .text:08104D86                 add     eax, 10h
    .text:08104D89                 push    eax
    .text:08104D8A                 call    _ZN5abase10timer_task8SetTimerERNS_5timerEiii ; abase::timer_task::SetTimer(abase::timer &,int,int,int)
    .text:08104D8F                 add     esp, 20h
    .text:08104D92                 sub     esp, 8
    .text:08104D95                 sub     esp, 4
    .text:08104D98                 push    18h             ; size
    .text:08104D9A                 call    _ZN5abase12ASmallObjectnwEj ; abase::ASmallObject::operator new(uint)
    .text:08104D9F                 add     esp, 8
    .text:08104DA2                 mov     [ebp+ptr], eax
    .text:08104DA5                 mov     [ebp+var_19], 1
    .text:08104DA9                 sub     esp, 8
    .text:08104DAC                 push    0Dh
    .text:08104DAE                 mov     eax, [ebp+arg_0]
    .text:08104DB1                 push    dword ptr [eax+8]
    .text:08104DB4                 mov     eax, [ebp+arg_0]
    .text:08104DB7                 push    dword ptr [eax+4]
    .text:08104DBA                 push    [ebp+ptr]
    .text:08104DBD                 call    _ZN22skill_interrupt_filterC1EP11gactive_impii ; skill_interrupt_filter::skill_interrupt_filter(gactive_imp *,int,int)
    .text:08104DC2                 add     esp, 18h
    .text:08104DC5                 mov     [ebp+var_19], 0
    .text:08104DC9                 mov     eax, [ebp+ptr]
    .text:08104DCC                 push    eax
    .text:08104DCD                 mov     eax, [ebp+arg_0]
    .text:08104DD0                 mov     eax, [eax+4]
    .text:08104DD3                 add     eax, 100h
    .text:08104DD8                 push    eax
    .text:08104DD9                 call    _ZN10filter_man9AddFilterEP6filter ; filter_man::AddFilter(filter *)
    .text:08104DDE                 add     esp, 10h
    .text:08104DE1                 jmp     short loc_8104E13

    вот собсно

    myWeb, 03 Мая 2014

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