На днях увидел статью, выложу чисто поржать)
Автор: bug1z (с грабеза)
Взлом компьютерной мышки=)) 
Вот начал я изучать ассембер и не удержался чтоб не написать какую то программу шутку

.Эта программа не повредит компьютеру, а только изменит расположение кнопок мыши и напугает ламера

). 
Что нам потребуется: 
1)Компилятор masm32 или tasm, разница в синтаксисе минимальна но советую взять masm32, потому что объяснять я буду именно по нему. 
2)Любой текстовый редактор. 
3)Прямые руки и голова на плечах. 
Первые строки. 
	Код:
	.386 
.model flat,stdcall 
option casemap:none 
include C:\masm32\INCLUDE\WINDOWS.INC 
include C:\masm32\INCLUDE\KERNEL32.INC 
include C:\masm32\INCLUDE\USER32.INC 
include C:\masm32\INCLUDE\ADVAPI32.INC 
includelib C:\masm32\lib\comctl32.lib 
includelib C:\masm32\lib\user32.lib 
includelib C:\masm32\lib\gdi32.lib 
includelib C:\masm32\lib\kernel32.lib 
includelib C:\masm32\lib\user32.lib 
includelib C:\masm32\lib\advapi32.lib
 Разберемся в вышенаписаном: 
.386-этой строкой мы говорим нашему компиятору, что намеpеваемся использовать набоp инстpукций пpоцессоpа 80386. .Model flat, stdcall говоpит MASM'у, что наша пpогpамма будет использовать плоскую модель памяти. 
Далее мы подгружаем инклудники и библиотеки. 
.data 
В области дaнных у нас будет 2 строки: 
HINST DWORD 0 
strHack db "I hacked you mouse!",0 
Они выведут текст "I hacked you mouse!" 
.CODE 
В области кода мы имеем: 
start: 
invoke SwapMouseButton,1 
invoke MessageBox, 0 , addr strHack, addr strHack , 0 
exit: 
invoke ExitProcess , 0 
Давайте разберем все по полочкам. 
start:– указывает на начало исполняемого кода. 
invoke SwapMouseButton,0– прикрепляем API функцию SwapMouseButton с параметром 1(Эта функция и меняет кнопки мыши местами). 
invoke MessageBox, 0 , addr strHack, addr strHack , 0 – эта API функция выводит окно с сообщением. 
addr strHack указывает на текст сообщения который мы указали выше. 
exit: - указывает на код завершения программы. 
invoke ExitProcess , 0 – завершение программы после нажатия кнопки ok. 
Ну и самая последняя строка- это end start – она указывает на конец участка кода. 
Вот мы и закончили с программной частью. 
Компиляция. 
Для компиляции нашей программы мы напишем 2 простеньких батника, что бы не мучатся каждый раз вбивая комманду в консоли... 
Первый батник: 
	Код:
	@ echo ----OBJ---- 
@ c:\masm32\bin\ml.exe /coff /c .\ISHODNIC\mouse.asm
 Его и запускаем первым. 
Второй: 
	Код:
	@ echo ----EXE---- 
@ if EXIST pirat.obj c:\masm32\bin\link.exe /SUBSYSTEM:WINDOWS .\mouse.obj
 Если в написание кода вы не допустили ошибок,то программа скомпилится удачно.Можети идти разводить ламеров=)) 
Теперь давайте разберемся как от этого избавится. 
А это предельно просто: 
Замените параметр SwapMouseButton с 1 на 0 и всё. 
Вот мы и написали простинький «Вирус» и «Антивирус». 
Полный текст программы: 
	Код:
	.386 
.model flat,stdcall 
option casemap:nonе 
include C:\masm32\INCLUDE\WINDOWS.INC 
include C:\masm32\INCLUDE\KERNEL32.INC 
include C:\masm32\INCLUDE\USER32.INC 
include C:\masm32\INCLUDE\ADVAPI32.INC 
includelib C:\masm32\lib\comctl32.lib 
includelib C:\masm32\lib\user32.lib 
includelib C:\masm32\lib\gdi32.lib 
includelib C:\masm32\lib\kernel32.lib 
includelib C:\masm32\lib\user32.lib 
includelib C:\masm32\lib\advapi32.lib 
.data 
HINST DWORD 0 
strHack db "I hacked you mouse!",0 
.code 
start: 
invoke SwapMouseButton,0 
invoke MessageBox, 0 , addr strHack, addr strHack , 0 
exit: 
invoke ExitProcess , 0 
end start
 Ну вот и всё! 
С вами был bug1z. 
Удачи во всех начинаниях!