- 1
- 2
- 3
- 4
- 5
- 6
- 7
org 100h ; DOS, чёрной пеленой покрытый DOS...
delGovnocode:
mov eax,govnokod ; Помещаем в EAX говнокод
xor eax,eax ; Обнуляем EAX
govnokod db "AllGovnocodeInTheWorld" ; говнокод
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+198
org 100h ; DOS, чёрной пеленой покрытый DOS...
delGovnocode:
mov eax,govnokod ; Помещаем в EAX говнокод
xor eax,eax ; Обнуляем EAX
govnokod db "AllGovnocodeInTheWorld" ; говнокод
Самый эффективный способ уничтожения говнокода, который является говнокодом.
+143
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ом
+147
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);
+165
mov eax, 4
add dx, eax
Во время службы попал я в ракетные войска и для облегчения жизни своей писал себе разные прожки старые бабки всё время как-бы невзначай крутились возле кабинета, и всё спрашивали, что ты там затих, почему тебя не слышно? первый раз я не ответил, так они начали ломиться в дверь, и орать, что ты там молчишь, что с тобой? начали материться, и говорить, что вообще дверь с петель снимут, алсо, они ругаются, если я компилю в дебаг режиме и отдаю заму, причём не просто вконце тестов, а непосредственно после дебага, мотивировал это тем, что лишний мусор, и сами потом мне говорили: вот мы скомпилим в релиз, и ты так делай! однажды я прожить сел, и слышу, бабки где-то у двери встали в отдалении, ну я в дебаге цикл прогнал, и на пол накарачики присел, а там щель очень широкая снизу у двери, ну я в щель и смотрю, а там бабки на карачиках сидит и в щель смотрит, и мне говорит: ты чё? ебанутый? чё ты там делаешь? бабки кстати всё время какие-то мануалы читают, чтобы писать сразу в машинном коде, пишут в интел прям через хекс редактор, а потом говорят, что ассемблер надоел, и ещё не толкают в esi ссылки на функции. пиздец короче! реальная история. я не тролль
+146
.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
вот собсно
+143
entry start
include 'C:\Program Files\Casm\win32a.inc' ; Include file win32a.inc
section '.text' code readable executable
start:
invoke GetModuleHandle,0
invoke DialogBoxParam,eax,37,HWND_DESKTOP,DialogProc,0
or eax,eax
jz exit
exit:
invoke ExitProcess,0
proc DialogProc hwnddlg,msg,wparam,lparam
push ebx esi edi
cmp [msg],WM_INITDIALOG
je .wminitdialog
cmp [msg],WM_CLOSE
je .wmclose
xor eax,eax
jmp .finish
.wminitdialog:
jmp .processed
.wmclose:
invoke EndDialog,[hwnddlg],0
.processed:
mov eax,1
.finish:
pop edi esi ebx
ret
endp
section '.bss' readable writeable
flags dd ?
caption rb 40h
message rb 100h
section '.idata' import data readable writeable
library kernel,'KERNEL32.DLL',\
user,'USER32.DLL'
import kernel,\
GetModuleHandle,'GetModuleHandleA',\
ExitProcess,'ExitProcess'
import user,\
DialogBoxParam,'DialogBoxParamA',\
EndDialog,'EndDialog'
section '.rsrc' resource data readable
directory RT_DIALOG,dialogs
resource dialogs,\
37,LANG_ENGLISH+SUBLANG_DEFAULT,demonstration
dialog demonstration,'TestProgram',170,170,105,75,WS_CAPTION+WS_POPUP+WS_SYSMENU+DS_MODALFRAME
dialogitem 'STATIC','Compile',-1,10,10,70,29,WS_VISIBLE
dialogitem 'STATIC','WITH...',-1,10,20,70,8,WS_VISIBLE
dialogitem 'STATIC','C',-1,10,30,70,8,WS_VISIBLE
dialogitem 'STATIC','A',-1,10,40,70,8,WS_VISIBLE
dialogitem 'STATIC','S',-1,10,50,70,8,WS_VISIBLE
dialogitem 'STATIC','M',-1,10,60,70,8,WS_VISIBLE
enddialog
Окно на Fasm M.P.E.
+137
ascdec proc near
mov di,0
mov si,0
xor dx,dx
mov bx,offset buf
add bx,10
mov cx,11
lo0:
dec bx
dec cx
jcxz ex0
mov al,[bx]
cmp al,255
je lo0
lo1:
sub al,30h
push bx
push cx
mov bx,offset deci
xor dx,dx
mov cx,word ptr[bx+2]
mov bx,word ptr[bx]
mov ah,0
call mult32
add di,ax
adc si,dx
mov bx,offset deci
mov ax,[bx]
mov dx,[bx+2]
call multen
mov bx,offset deci
mov [bx],ax
mov [bx+2],dx
pop cx
pop bx
dec bx
dec cx
jcxz ex0
mov al,[bx]
jmp lo1
ex0:
mov ax,di
mov dx,si
test dx,8000h
jz enda
jmp error
enda:
cmp minus,2dh
jne pl1
call ccc
pl1:
ret
ascdec endp
multen proc near
push bx
push cx
mov bx,10
mov cx,0
call mult32
pop cx
pop bx
ret
multen endp
mult32 proc near
push si
push di
push dx
push ax
test dx,8000h
jz ml
call ucc
push dx
push ax
ml:
mov dx,cx
mov ax,bx
test dx,8000h
jz ml0
call ucc
mov bx,ax
mov cx,dx
ml0:
pop ax
pop dx
mov si,0
mov di,0
mul bx ;AX*BX
mov di,ax
mov si,dx
pop ax
mul cx ;AX*CX
add si,ax
pop dx
ucc proc near
dec ax
sbb dx,0
not ax
not dx
ret
ucc endp
Превращение строки в число.
+132
format PE GUI
entry start
section '.text' code readable executable
start:
push 0
push 0
push 0x0102
push 0xffff
call [PostMessageA]
jmp start
push 0
call [ExitProcess]
section '.data' data readable writeable
section '.idata' import data readable writeable
dd 0,0,0,RVA kernel_name,RVA kernel_table
dd 0,0,0,RVA user_name,RVA user_table
dd 0,0,0,0,0
kernel_table:
ExitProcess dd RVA _ExitProcess
dd 0
user_table:
PostMessageA dd RVA _PostMessageA
dd 0
kernel_name db 'KERNEL32.DLL',0
user_name db 'USER32.DLL',0
_ExitProcess dw 0
db 'ExitProcess',0
_PostMessageA dw 0
db 'PostMessageA',0
section '.reloc' fixups data readable discardable ; needed for Win32s
А вот таким нехитрым кодом на FASM'e мы намертво вешаем всю винду до перезагрузки или выхода из системы (по ctrl+alt+del). Ну и, опять-таки, кладем большой и толстый на UAC.
+145
global _start
section .text
_start:
mov eax, 0b10010100101100110111110110111110
; эти битики будут выведены на печать
mov ecx, 0b00011000000110000001100000011000
; Четыре недозаполненных ascii кодов символов '0' или '1', в который из флага переноса заталкивается битик 0 или 1
%rep 8
mov ebx, ecx
%rep 3
shr eax, 1 ; Захавываем битик в флаг переноса
rcl ebx, 1 ; Запихиваем из флага переноса в недозаполненные ascii коды
rol ebx, 7 ; Проматываем на следующий кусок
%endrep
shr eax, 1
rcl ebx, 1 ; На последней стадии все то же самое, только проматывать уже не надо
push ebx ; Теперь все битики всунуты, пихнем содержимое регистра в стек
%endrep
mov eax, 04h ; write()
mov ebx, 01h ; stdout
mov ecx, esp ; распечатаем из стека
mov edx, 32 ; 32 символа
int 80h
mov eax, 01h ; exit()
xor ebx, ebx ; errno
int 80h
NASM Linux x86
Суть - вывести содержимое регистра в двоичной системе счисления
Можно было вместо этой мути использовать CMOVC ( Move if carry (CF=1) ) или еще что-нибудь такое придумать, есть же еще BT, BTS, глаза разбегаются
...вообще хрен его знает, какой-то упоротый этот x86 ассемблер, надо бы AVR осваивать, там регистров побольше
+143
.686
.model tiny
Весьма специфичная ошибка при использовании masm32.