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

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

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

Добро пожаловать и приятного вам общения!!! ;)
 
Модераторы: 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 @
      Привилегии вы никак не получите
      Вернее, есть способы некоторые, но это всё делается через уязвимости, и использовать не рекомендуется.
        Цитата Jin X @
        есть способы некоторые
        Предполагаю, что существует команда доступа к cwr регистра флагов. На ВРЕМЯ РАБОТЫ проги
        можно кое-что подкорректировать. Что посоветуете, в смысле - команды? 8-)
          Цитата cupoma58 @
          существует команда доступа к cwr регистра флагов
          Что за CWR? Conrtol Word? Это вообще в FPU (fldcw, fstcw), причём тут это?
          Если просто нужен доступ к флагам, то прочитать: pushfd + pop eax (к примеру), записать: push eax + popfd (есть ещё lahf, sahf). Но это тоже вам не поможет.
          0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
          0 пользователей:


          Рейтинг@Mail.ru
          [ Script execution time: 0,0355 ]   [ 16 queries used ]   [ Generated: 28.03.24, 15:04 GMT ]