+100        
        
                            - 001
 - 002
 - 003
 - 004
 - 005
 - 006
 - 007
 - 008
 - 009
 - 010
 - 011
 - 012
 - 013
 - 014
 - 015
 - 016
 - 017
 - 018
 - 019
 - 020
 - 021
 - 022
 - 023
 - 024
 - 025
 - 026
 - 027
 - 028
 - 029
 - 030
 - 031
 - 032
 - 033
 - 034
 - 035
 - 036
 - 037
 - 038
 - 039
 - 040
 - 041
 - 042
 - 043
 - 044
 - 045
 - 046
 - 047
 - 048
 - 049
 - 050
 - 051
 - 052
 - 053
 - 054
 - 055
 - 056
 - 057
 - 058
 - 059
 - 060
 - 061
 - 062
 - 063
 - 064
 - 065
 - 066
 - 067
 - 068
 - 069
 - 070
 - 071
 - 072
 - 073
 - 074
 - 075
 - 076
 - 077
 - 078
 - 079
 - 080
 - 081
 - 082
 - 083
 - 084
 - 085
 - 086
 - 087
 - 088
 - 089
 - 090
 - 091
 - 092
 - 093
 - 094
 - 095
 - 096
 - 097
 - 098
 - 099
 - 100
 
                        ;МОЛНИЯ! КОНКУРС! ПРИЗОВОЙ ФОНД - 4 ТЫСЯЧИ РУБЛЕЙ!!!
0003FCA4  8ED8                mov ds,ax
0003FCA6  0F20C0            mov eax,cr0
0003FCA9  24F0                 and al,0xf0
0003FCAB  80E20E             and dl,0xe
0003FCAE  0AC2                 or al,dl
0003FCB0  0F22C0             mov cr0,eax
0003FCB3  EAB8FC00F0    jmp word 0xf000:0xfcb8
0003FCB8  33C0                 xor ax,ax
0003FCBA  8EE0                mov fs,ax
0003FCBC  648F061A08   pop word [fs:0x81a]
0003FCC1  83C402            add sp,byte +0x2
0003FCC4  648F061808   pop word [fs:0x818]
0003FCC9  8ED0                mov ss,ax
0003FCCB  BC2608            mov sp,0x826
0003FCCE  61                    popaw
0003FCCF  368B262C08  mov sp,[ss:0x82c]
0003FCD4  83EC06           sub sp,byte +0x6
0003FCD7  368E162008  mov ss,[ss:0x820]
0003FCDC  CF                    iretw
0003FCDD  FB                    sti
0003FCDE  1E                    push ds
0003FCDF  56                    push si
0003FCE0  BE0000           mov si,0x0
0003FCE3  8EDE                mov ds,si
0003FCE5  BE6C04           mov si,0x46c
0003FCE8  830401           add word [si],byte +0x1
0003FCEB  83540200       adc word [si+0x2],byte +0x0
0003FCEF  837C0218       cmp word [si+0x2],byte +0x18
0003FCF3  7513                jnz 0xfd08
0003FCF5  813CB000       cmp word [si],0xb0
0003FCF9  750D                jnz 0xfd08
0003FCFB  C7040000       mov word [si],0x0
0003FCFF  C744020000   mov word [si+0x2],0x0
0003FD04  C6440401      mov byte [si+0x4],0x1
0003FD08  5E                   pop si
0003FD09  50                   push ax
0003FD0A  52                   push dx
0003FD0B  803E400400  cmp byte [0x440],0x0
0003FD10  7411               jz 0xfd23
0003FD12  FE0E4004       dec byte [0x440]
0003FD16  750B               jnz 0xfd23
0003FD18  80263F04F0  and byte [0x43f],0xf0
0003FD1D  BAF203          mov dx,0x3f2
0003FD20  B00C               mov al,0xc
0003FD22  EE                    out dx,al
0003FD23  CD1C               int 0x1c
0003FD25  FA                    cli
0003FD26  B020               mov al,0x20 ;ороро
0003FD28  E620               out 0x20,al
0003FD2A  5A                   pop dx
0003FD2B  58                   pop ax
0003FD2C  1F                   pop ds
0003FD2D  CF                   iretw
0003FD2E  50                   push ax
0003FD2F  1E                   push ds
0003FD30  B80000          mov ax,0x0
0003FD33  8ED8              mov ds,ax
0003FD35  800E3E0480 or byte [0x43e],0x80
0003FD3A  B020              mov al,0x20
0003FD3C  E620              out 0x20,al
0003FD3E  B80191          mov ax,0x9101
0003FD41  1F                   pop ds
0003FD42  CD15              int 0x15
0003FD44  58                   pop ax
0003FD45  CF                   iretw
0003FD46  B0FE               mov al,0xfe
0003FD48  E664               out 0x64,al
0003FD4A  FA                   cli
0003FD4B  F4                   hlt
0003FD4C  EBFC               jmp short 0xfd4a
0003FD4E  33D2              xor dx,dx
0003FD50  8EC2              mov es,dx
0003FD52  BB007C         mov bx,0x7c00
0003FD55  B90100         mov cx,0x1
0003FD58  33C0             xor ax,ax
0003FD5A  CD13             int 0x13
0003FD5C  B80102         mov ax,0x201
0003FD5F  CD13              int 0x13
0003FD61  720A              jc 0xfd6d
0003FD63  E83A00         call word 0xfda0
0003FD66  7205              jc 0xfd6d
0003FD68  EA007C0000 jmp word 0x0:0x7c00
0003FD6D  8D0699FE     lea ax,[0xfe99]
0003FD71  B93500         mov cx,0x35
0003FD74  90                  nop
0003FD75  E80400         call word 0xfd7c
0003FD78  33C0             xor ax,ax
0003FD7A  EBD2             jmp short 0xfd4e
0003FD7C  BA01FF         mov dx,0xff01
0003FD7F  E897FD         call word 0xfb19
0003FD82  B302             mov bl,0x2
0003FD84  B90017         mov cx,0x1700
0003FD87  E8CDED         call word 0xeb57
0003FD8A  33C9             xor cx,cx
0003FD8C  E2FE              loop 0xfd8c
0003FD8E  B305              mov bl,0x5
0003FD90  B90030         mov cx,0x3000
0003FD93  E8C1ED         call word 0xeb57
0003FD96  32E4              xor ah,ah
                                     
        
            Шолом, говноеды. Ебошить Мне скоро в Гермашку надолго, и чтобы не скучать в пути, решил Я немножко угарнуть над местными недопрограммистами и устроить конкурц. Любой true-программист (а это автоматом знание Ассмеблера и программирования МК) часа за два, порывшись в мануалах, без проблем найдёт ошибку и срубит за вечер немного бабок (а для вас, нищебродов - очень и очень много).
УСЛОВИЯ:
   Дано: кусок кода, выдранный из прошивки одного микроконтроллера. Было написано на C лично Мной, затем, после неполадок, дисассемблировано ndisasm`ом. Баг был отловлен, исправлен, короче, хеппи энд, контроллер управляет одной Мега-Супер-Штукой (inb4: кококо уш не плиткой ли кококо). Некоторые части кода здесь не нужны и добавлены для усложнения. Ошибка далеко не очевидная, говорю сразу.
   Вопрос: "Какая часть вышеприведённого кода содержит ошибку, как и когда она проявляется?".
   Железо: x86, процессор на базе Pentium II (да, на базе Pentium II);
   Кто победит: победит тот, кто первый напишет правильный вариант ответа. Попыток может быть неограниченное множество Для победы достаточно
ответить хотя бы на первую часть вопроса;
   Форма ответа: "Ошибка <там-то>, из-за неё может произойти <при таких-то условиях> такая неприятная хуйня, как <то-то>. Мой <любой_кошелёк_
поддерживаемый_Хуяндексом>, мой <e-mail>";
   Форма оплаты: перечисляю на любой кошелёк или банковский счёт;
   Сколько денег: задание будет выложено в канун 8 августа 2015-го. Победитель будет объявлен либо вечером в воскресенье, либо через неделю
(ещё не решил, проголосуете), но объявлен будет (если он будет, бгг). Розыгрыш приза будет таковым: выигравший в первую половину срока получит
две тыры, во вторую - четыре тыры. Вне зависимости от кол-ва подебителей, выбран будет тот, кто первым даст правильный ответ. Если правильного
ответа не будет (а я стопроцентно в этом уверен) - Я раскрою, в чём же тут бага.
   Дисквалификация: обращение на форумы за помощью. Я всё вижу.
Фтыкай ф каменты, камрад!
        
        
            
 DelphiGovno,
            07 Августа 2015
        
        
        
        
        
        
        
                +69        
        
                            - 1
 - 2
 
                        http://habrahabr.ru/post/263703/
https://github.com/veryEvilMan/fl-ru-damp/issues/3#issuecomment-125602470
                                     
        
            Так, признавайтесь, кто приложил потные ручонки.
        
        
            
 bakagaijin,
            30 Июля 2015
        
        
        
        
        
        
        
                −17        
        
        
            Зачем Интел придумал лишнюю инструкцию с запутанной семантикой, если она эквивалентна MOV EAX, EBX?
        
        
            
 inkanus-gray,
            24 Июля 2015
        
        
        
        
        
        
        
                −41        
        
                            - 01
 - 02
 - 03
 - 04
 - 05
 - 06
 - 07
 - 08
 - 09
 - 10
 - 11
 - 12
 - 13
 - 14
 - 15
 - 16
 - 17
 - 18
 - 19
 - 20
 - 21
 - 22
 - 23
 
                        global _start
_start:
        mov ecx,1
code:
        push ecx
        mov eax,4
        mov ebx,1
        mov ecx,str
        mov edx,len
        int 128
        pop ecx
loop:
        inc ecx
        cmp ecx,10
        jle code
exit:
        mov eax,1
        mov ebx,0
        int 128
str: db "Hello world !",10
len: equ $-str
                                     
        
            Просто нубский код на nasm, фух, неужели я смог напечатать 10 раз хелловорлд и понять то что написал, аж не верится
        
        
            
 pl7ofit,
            16 Июля 2015
        
        
        
        
        
        
        
                +159        
        
                            - 1
 - 2
 
                        mov eax, "allahu akbar"
push eax
                                     
        
            Короче слушай сюда, петушок, я буду объяснять тебе доступными словами, что бы ты понял.
 Вот попадаешь ты на зону, тебя встречает DHCP, он говорит тебе какая у тебя камера(Маска подсети), койка(ip адрес) и разъясняет порядок на хате(параметры области). Как только тебя определяют, то об этом узнает местная крыса(DNS), этот ушлый чухан вообще всё обо всех знает и сливает инфу по первому стуку в ебало(nslookup). Поэтому как только попадаешь в хату, представься что ты мужик(nsname), однако этот хуй может всем пиздеть что ты хуйло, или вообще идти в несознанку, поэтому лучше знать несколько крыс. Так вот, сидишь ты такой на своей койке и тебе нужно написать маляву(пакет) корешу, малявы передают через чуханов(маршрутизаторы, концентраторы, коммутаторы). Если ты передашь через чухана-концентратора, то знай, этот олень настолько тупой, что тут же забывает кто ему передал маляву и кому ее надо отдать, поэтому что бы не получить пизды, раздает ее всем, даже тебе. Если ты передаешь через чухана-коммутатора, то знай, он куда смышленей и передаст маляву куда надо, но только в пределах своей хаты, ибо связей не имеет. А вот маршрутизатора уже чуханом назвать сложно, этот тип может доставить маляву куда угодно, даже в соседнюю хату и даже в соседнюю зону, ибо связи решают.
        
        
            
 DesmondHume,
            30 Мая 2015
        
        
        
        
        
        
        
                +249        
        
                            - 01
 - 02
 - 03
 - 04
 - 05
 - 06
 - 07
 - 08
 - 09
 - 10
 - 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
        
        
        
        
        
        
        
                +130        
        
                            - 01
 - 02
 - 03
 - 04
 - 05
 - 06
 - 07
 - 08
 - 09
 - 10
 - 11
 - 12
 - 13
 - 14
 - 15
 - 16
 - 17
 - 18
 - 19
 - 20
 - 21
 - 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
        
        
        
        
        
        
        
                +135        
        
                            - 01
 - 02
 - 03
 - 04
 - 05
 - 06
 - 07
 - 08
 - 09
 - 10
 - 11
 - 12
 - 13
 - 14
 - 15
 - 16
 - 17
 - 18
 - 19
 - 20
 - 21
 - 22
 - 23
 - 24
 - 25
 - 26
 - 27
 - 28
 - 29
 - 30
 - 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
        
        
        
        
        
        
        
                +114        
        
                            - 1
 - 2
 - 3
 - 4
 - 5
 - 6
 
                        CFG ; start: scasb
DCG ; salc
AEEAFF ; and al,'\'-'/'
AAEAFO ; add al,'/'
DBFAFB ; int 29h
DFDDGG ; jmp start
                                     
        
            Генератор лабиринта на Wct.
        
        
            
 Mihip,
            29 Января 2015
        
        
        
        
        
        
        
                +145        
        
                            - 01
 - 02
 - 03
 - 04
 - 05
 - 06
 - 07
 - 08
 - 09
 - 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