На главную
ПРАВИЛА FAQ Помощь Участники Календарь Избранное DigiMania RSS
msm.ru
! Перед отправкой сообщения внимательно прочтите правила раздела!!!
1. Запрещается обсуждать написание вирусов, троянов и других вредоносных программ!
2. Помните, что у нас есть FAQ раздела Assembler и Полезные ссылки. Не поленитесь, загляните в эти разделы перед созданием темы. Возможно, так уже имеется решение вашего вопроса.

3. Настоятельно рекомендуем обратить особое внимание на правила форума, которые нарушаются чаще всего:
  3.1. Заголовок темы должен кратко отражать её суть. Темы с заголовками типа "Срочно помогите!" или "Ассемблер" будут отправляться в Корзину для мусора.
  3.2. Исходники программ обязательно выделяйте тегами [code]...[/code] (одиночные инструкции можно не выделять).

Не забывайте также про главные Правила форума!

Добро пожаловать и приятного вам общения!!! ;)
 
Модераторы: Jin X, Qraizer
  
> Работа с портами, Уровень привелегий
Есть окошко с кнопкой. При нажатии на кнопку генерируется звук:
ExpandedWrap disabled
    ...
      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
    ...

Посоветуйте - как проверить работоспособность или, как изменить уровень привилегий? :(
Проверить работоспособность просто – запустить :)
Но у вас работать не будет – это я вам без проверки скажу.
Во-первых, смешан 32- и 16-битный код (как минимум для loop в 32 битах используется ecx, а не cx).
Во-вторых, ОС вам не даст обращаться к портам. Привилегии вы никак не получите (ну разве что напишите драйвер, либо будете запускать в Windows 95/98/ME).
Для генерации простого тона есть функция Beep.

Добавлено
Цитата Jin X @
Привилегии вы никак не получите
Вернее, есть способы некоторые, но это всё делается через уязвимости, и использовать не рекомендуется.
vpmultishiftqb vscatterpf0dps vfmsubadd132pd vgatherpf1dps vpclmulhqlqdq vcmptrue_ussd vaeskeygenassist
1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
0 пользователей:


Рейтинг@Mail.ru
[ Script Execution time: 0,0732 ]   [ 19 queries used ]   [ Generated: 24.09.18, 13:34 GMT ]