Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.17.150.163] |
|
Сообщ.
#1
,
|
|
|
Есть окошко с кнопкой. При нажатии на кнопку генерируется звук:
... wmcommand: mov eax,hbut cmp [ebp+14h],eax je but_ex ... jmp defwndproc but_ex: call mes jmp exit ... mes proc push offset mess2 push [hedit] call SetWindowTextA@8 call sound_on ;<-- похоже - не срабатывает ret mes endp saund_on proc in al,port ;получить и... push ax ;...сохранить данные порта (port equ 61h) cli ;запретить прерывания - для равномерного звучания call zvuk ;воспроизвести звук pop ax ;восстановить... out port,al ;...значение порта sti ;разрешить прерывания ret saund_on endp zvuk proc pusha m1: mov dx,time ;установить время звучания (time dw 1000) m2: and al,11111100b ;очистить 0-й и 1-й биты out port,al ;передать на порт->динамик mov cx,tone ;установить частоту звука (tone dw 256h) m3: loop m3 ;задержка времени or al,00000010b ;установить 1-й бит и... out port,al ;...передать на порт->динамик mov cx,tone m4: loop m4 ;задержка времени dec dx ;уменьшить время звучания jnz m2 ;если не 0 - продолжить shl time,1 ;нет - увеличить время и... shr tone,1 ;...сократить частоту jnz m1 ;если частота не 0 - повторить, если = 0... popa ret ;...на выход zvuk endp ... Посоветуйте - как проверить работоспособность или, как изменить уровень привилегий? |
Сообщ.
#2
,
|
|
|
Проверить работоспособность просто – запустить
Но у вас работать не будет – это я вам без проверки скажу. Во-первых, смешан 32- и 16-битный код (как минимум для loop в 32 битах используется ecx, а не cx). Во-вторых, ОС вам не даст обращаться к портам. Привилегии вы никак не получите (ну разве что напишите драйвер, либо будете запускать в Windows 95/98/ME). Для генерации простого тона есть функция Beep. Добавлено Цитата Jin X @ Вернее, есть способы некоторые, но это всё делается через уязвимости, и использовать не рекомендуется. Привилегии вы никак не получите |
Сообщ.
#3
,
|
|
|
Цитата Jin X @ Предполагаю, что существует команда доступа к cwr регистра флагов. На ВРЕМЯ РАБОТЫ проги есть способы некоторые можно кое-что подкорректировать. Что посоветуете, в смысле - команды? |
Сообщ.
#4
,
|
|
|
Цитата cupoma58 @ Что за CWR? Conrtol Word? Это вообще в FPU (fldcw, fstcw), причём тут это?существует команда доступа к cwr регистра флагов Если просто нужен доступ к флагам, то прочитать: pushfd + pop eax (к примеру), записать: push eax + popfd (есть ещё lahf, sahf). Но это тоже вам не поможет. |