+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