Blog. Just Blog

Быстрый поиск

Введите фрагмент названия статьи для поиска

Перетаскивание окна за любое место

13.09.2008 | Категория: Образ мышления: Assembler | Автор: ManHunter
Перетаскивание окна за любое место, а не только за заголовок, реализуется очень просто, но смотрится очень эффектно. Тем более, что окно может быть вообще без заголовка. Для этого в обработчик окна надо добавить следующий код.
  1. ; Процедура обработчика окна
  2. proc  DialogProc hwnddlg,msg,wparam,lparam
  3.       ......
  4.       ; Нажата левая кнопка мышки на окне?
  5.       cmp     [msg], WM_LBUTTONDOWN
  6.       je      drag_window
  7.       ......
  8. drag_window:
  9.       ; Освободить захват мыши окном в текущем потоке и
  10.       ; восстановить обычную обработку ввода данных от мыши
  11.       invoke  ReleaseCapture
  12.       ; Перенаправить сообщение передвижения мышью SC_MOVE на заголовок окна
  13.       ; 61458 = SC_MOVE or HTCAPTION, в FASM по умолчанию не определено,
  14.       ; поэтому сразу задается числовым значением
  15.       invoke  SendMessage,[hwnddlg],WM_SYSCOMMAND,61458,0
  16.       ......
Вызов функции ReleaseCapture необходим для освобождения окна от захвата сообщений мыши. Даже если вы сами не устанавливали эти перехватчики, то они вполне могут быть установлены сторонними программами. В этом случае окно может перемещаться неправильно. Исходник с откомпилированным файлом прилагается.

Читать статью целиком »
Просмотров: 7369 | Комментариев: 6

Поздравляю с Днем программиста!

12.09.2008 | Категория: Всякая всячина | Автор: ManHunter

Ура! Вот и наступил очередной профессиональный праздник! Всех коллег и "товарищей по цеху" сердечно поздравляю с этой красивой датой - 0x100 день года. На улице прохладно, так что купание в фонтане придется отложить :)

Просмотров: 3813 | Комментариев: 1

Повышение привилегий процесса

09.09.2008 | Категория: Образ мышления: Assembler | Автор: ManHunter
Любой процесс в системе выполняется с правами какого-то пользователя или самой системы. Привилегии – это права процесса на совершение каких-либо действий по отношению ко всей системе, и при выполнении каких-либо привилегированных операций система проверяет, обладает ли пользователь соответствующей привилегией. Например, выключение и перезагрузка компьютера компьютера относятся как раз к таким операциям, и без повышения привилегий функция ExitWindowsEx завершится с ошибкой. Готовых решений на FASM найти не удалось, пришлось портировать из языков высокого уровня.
  1. ; Сегмент данных
  2. section '.data' data readable writeable
  3.  
  4. ; Определяем константы
  5. TOKEN_ADJUST_PRIVILEGES = 20h
  6. TOKEN_QUERY             = 8h
  7. SE_PRIVILEGE_ENABLED    = 2h
  8.  
  9. ; Определяем необходимые структуры, потому что в FASM'е их нет
  10. struct LUID
  11.   lowPart  dd ?
  12.   HighPart dd ?
  13. ends
  14.  
  15. struct LUID_AND_ATTRIBUTES
  16.   pLuid       LUID
  17.   Attributes  dd ?
  18. ends
  19.  
  20. struct _TOKEN_PRIVILEGES
  21.   PrivilegeCount   dd ?
  22.   Privileges       LUID_AND_ATTRIBUTES
  23. ends
  24.  
  25. TTokenHd dd ?
  26.  
  27. udtLUID  LUID
  28. ; Важно! Структура _TOKEN_PRIVILEGES должна быть выровнена на границу 4 байт!
  29. align 4
  30. tkp     _TOKEN_PRIVILEGES
  31.  
  32. SE_SHUTDOWN_NAME db 'SeShutdownPrivilege',0
  33.  
  34. ; Сегмент кода
  35. section '.code' code readable executable
  36.  
  37.     invoke    GetCurrentProcess
  38.  
  39.     ; Открыть маркер доступа (access token), ассоциирующийся с процессом
  40.     invoke    OpenProcessToken,eax,TOKEN_ADJUST_PRIVILEGES+TOKEN_QUERY,TTokenHd
  41.     or        eax,eax
  42.     jz        loc_exit  ; Ошибка
  43.  
  44.     ; Получить текущее значение привилегии на выключение и
  45.     ; перезагрузку системы
  46.     invoke    LookupPrivilegeValue, NULL, SE_SHUTDOWN_NAME, udtLUID
  47.     or        eax,eax
  48.     jz        loc_exit  ; Ошибка
  49.  
  50.     ; Заполнить структуры
  51.     mov       [tkp.PrivilegeCount],1
  52.     mov       [tkp.Privileges.Attributes],SE_PRIVILEGE_ENABLED
  53.     mov       eax,[udtLUID.lowPart]
  54.     mov       [tkp.Privileges.pLuid.lowPart],eax
  55.     mov       eax,[udtLUID.HighPart]
  56.     mov       [tkp.Privileges.pLuid.HighPart],eax
  57.     invoke    AdjustTokenPrivileges,[TTokenHd],0,tkp,0,0,0
  58.  
  59.     ; Здесь будет код, требующий повышенных привилегий, 
  60.     ; например выключение компьютера
  61.     invoke    ExitWindowsEx,EWX_POWEROFF,NULL
  62.     ...
  63.  
  64.     ; Выход
  65. loc_exit:
  66.     invoke    ExitProcess,0
Выключение рассмотрено как наиболее часто встречающаяся задача, более подробное описание использованных структур и функций вы можете найти на сайте Microsoft Developer Network.

Просмотров: 8567 | Комментариев: 7

Качаем с Яндекс.Народа без ввода контрольных цифр

07.09.2008 | Категория: Темная сторона Силы | Автор: ManHunter
Есть такой приятный почти во всех отношениях сервис - Яндекс.Народ, предоставляющий после регистрации неограниченное место для хранения файлов, закачку файлов до 5 гигабайт и еще много интересных условий. Но как на всех файлообменных сервисах для получения ссылки требуется сперва ввести некоторый числовой код для подтверждения что вы человек, а не программа для автоматического скачивания файлов. Конечно, для сотни файлов действительно можно воспользоваться и какой-нибудь автоматической программой с распознаванием цифрового кода, но для одного-двух файлов будет полезным следующий метод. Сразу небольшое уточнение: описанный метод только для браузеров на движке Gecko: Mozilla, Firefox, Flock и других, для остальных похожие решения придется искать вам самим. Но тут главное уловить сам принцип. Итак, вернемся к нашему Народу. При попытке скачать любой файл сервис выдает код и интересное сообщение:


Хотите скачивать файлы еще быстрее?
Установите новый Яндекс.Бар, и вам не понадобится вводить контрольные цифры.


Скачивать-то мы хотим, но не хочется ставить этого адварного трояна в свою систему. Желаете доказать его безопасность или полезность? Не тратьте зря время, мое мнение не изменится. Но наука требует жертв, поэтому скрипя зубами я его установил (не пытайтесь повторить ЭТО дома!!!). После перезапуска браузера наблюдается наличие панели инструментов этого "Бара", и как побочный эффект файлы действительно стали скачиваться без ввода контрольных цифр. Как же файлообменник узнает своего агента? Внимательно смотрим заголовки запроса.

Читать статью целиком »
Просмотров: 19253 | Комментариев: 23

The Best Female Gothic Voice Contest

06.09.2008 | Категория: Жизнь в оффлайне | Автор: ManHunter

Сегодня сходил на концерт-конкурс "The Best Female Gothic Voice Contest", который проходил в обновленном рок-клубе "X.O". До места проведения добрался быстро, клуб начал радовать с самых первых минут. Никакой давки, билеты без проблем тут же в кассе, вменяемая и ненавязчивая охрана, цены в баре как и везде в клубах. Внутренняя обстановка клуба тоже понравилась, я забрался на балкончик на второй этаж, чтобы можно было наблюдать выступление. К сожалению, из заявленных участников остались только четыре команды: Dark Princess, Suita De Ora, Morbid Violence и Witchcraft. По непонятным причинам отказалась от участия финская группа Vanguard и московская команда Arcane Grail. Ну да ладно.

Читать статью целиком »
Просмотров: 4684 | Комментариев: 1

Наверх
Powered by PCL's Speckled Band Engine 0.2 RC3
© ManHunter / PCL, 2008-2024
При использовании материалов ссылка на сайт обязательна
Время генерации: 0.09 сек. / MySQL: 2 (0.0296 сек.) / Память: 4.5 Mb
Наверх