Быстрый поиск
Введите фрагмент названия статьи для поиска
Повышение привилегий процесса
09.09.2008 | Категория: Образ мышления: Assembler | Автор: ManHunter
Любой процесс в системе выполняется с правами какого-то пользователя или самой системы. Привилегии – это права процесса на совершение каких-либо действий по отношению ко всей системе, и при выполнении каких-либо привилегированных операций система проверяет, обладает ли пользователь соответствующей привилегией. Например, выключение и перезагрузка компьютера компьютера относятся как раз к таким операциям, и без повышения привилегий функция ExitWindowsEx завершится с ошибкой. Готовых решений на FASM найти не удалось, пришлось портировать из языков высокого уровня.Code (Assembler) : Убрать нумерацию
- ; Сегмент данных
- section '.data' data readable writeable
- ; Определяем константы
- TOKEN_ADJUST_PRIVILEGES = 20h
- TOKEN_QUERY = 8h
- SE_PRIVILEGE_ENABLED = 2h
- ; Определяем необходимые структуры, потому что в FASM'е их нет
- struct LUID
- lowPart dd ?
- HighPart dd ?
- ends
- struct LUID_AND_ATTRIBUTES
- pLuid LUID
- Attributes dd ?
- ends
- struct _TOKEN_PRIVILEGES
- PrivilegeCount dd ?
- Privileges LUID_AND_ATTRIBUTES
- ends
- TTokenHd dd ?
- udtLUID LUID
- ; Важно! Структура _TOKEN_PRIVILEGES должна быть выровнена на границу 4 байт!
- align 4
- tkp _TOKEN_PRIVILEGES
- SE_SHUTDOWN_NAME db 'SeShutdownPrivilege',0
- ; Сегмент кода
- section '.code' code readable executable
- invoke GetCurrentProcess
- ; Открыть маркер доступа (access token), ассоциирующийся с процессом
- invoke OpenProcessToken,eax,TOKEN_ADJUST_PRIVILEGES+TOKEN_QUERY,TTokenHd
- or eax,eax
- jz loc_exit ; Ошибка
- ; Получить текущее значение привилегии на выключение и
- ; перезагрузку системы
- invoke LookupPrivilegeValue, NULL, SE_SHUTDOWN_NAME, udtLUID
- or eax,eax
- jz loc_exit ; Ошибка
- ; Заполнить структуры
- mov [tkp.PrivilegeCount],1
- mov [tkp.Privileges.Attributes],SE_PRIVILEGE_ENABLED
- mov eax,[udtLUID.lowPart]
- mov [tkp.Privileges.pLuid.lowPart],eax
- mov eax,[udtLUID.HighPart]
- mov [tkp.Privileges.pLuid.HighPart],eax
- invoke AdjustTokenPrivileges,[TTokenHd],0,tkp,0,0,0
- ; Здесь будет код, требующий повышенных привилегий,
- ; например выключение компьютера
- invoke ExitWindowsEx,EWX_POWEROFF,NULL
- ...
- ; Выход
- loc_exit:
- invoke ExitProcess,0
Просмотров: 8671 | Комментариев: 7
Качаем с Яндекс.Народа без ввода контрольных цифр
07.09.2008 | Категория: Темная сторона Силы | Автор: ManHunter
Есть такой приятный почти во всех отношениях сервис - Яндекс.Народ, предоставляющий после регистрации неограниченное место для хранения файлов, закачку файлов до 5 гигабайт и еще много интересных условий. Но как на всех файлообменных сервисах для получения ссылки требуется сперва ввести некоторый числовой код для подтверждения что вы человек, а не программа для автоматического скачивания файлов. Конечно, для сотни файлов действительно можно воспользоваться и какой-нибудь автоматической программой с распознаванием цифрового кода, но для одного-двух файлов будет полезным следующий метод. Сразу небольшое уточнение: описанный метод только для браузеров на движке Gecko: Mozilla, Firefox, Flock и других, для остальных похожие решения придется искать вам самим. Но тут главное уловить сам принцип. Итак, вернемся к нашему Народу. При попытке скачать любой файл сервис выдает код и интересное сообщение:
Хотите скачивать файлы еще быстрее?
Установите новый Яндекс.Бар, и вам не понадобится вводить контрольные цифры.
Скачивать-то мы хотим, но не хочется ставить этого адварного трояна в свою систему. Желаете доказать его безопасность или полезность? Не тратьте зря время, мое мнение не изменится. Но наука требует жертв, поэтому скрипя зубами я его установил (не пытайтесь повторить ЭТО дома!!!). После перезапуска браузера наблюдается наличие панели инструментов этого "Бара", и как побочный эффект файлы действительно стали скачиваться без ввода контрольных цифр. Как же файлообменник узнает своего агента? Внимательно смотрим заголовки запроса.
Читать статью целиком »
Просмотров: 19317 | Комментариев: 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. Ну да ладно.
Читать статью целиком »
Просмотров: 4710 | Комментариев: 1
Запуск нескольких функций по событию onLoad
04.09.2008 | Категория: Web-мастеру и не только | Автор: ManHunter
Начнем с документации:
onLoad
Событие onLoad происходит при полной загрузке страницы документа или всех фреймов. Оно считается состоявшимся только после завершения загрузки всей страницы, включая изображения.
Это событие часто используется различными скриптами для модификации страницы сразу после загрузки, например прописываются красивые всплывающие подсказки вместо стандартных атрибутов title, подсвечивается код, выполняется инициализация других скриптов или выполняются другие полезные действия в зависимости от фантазии разработчиков. Проблема в том, что разработчиков с их фантазией много, а событие на странице только одно. И получается ситуация, когда хочется подключить на свою web-страничку несколько скриптов разных производителей, и все они для своей работы хотят монопольно использовать событие onLoad. Конечно, при наличии определенных навыков можно подправить исходный код. Но как быть, если исходный код скриптов недоступен, например файлы расположены на стороннем сервере или упакованы (зашифрованы)? Что делать с упакованными и шифрованными скриптами и их "аффтарами" я расскажу потом, это тема для отдельной статьи, а сейчас будет решаться задача с выполнением нескольких функций по событию onLoad.
Читать статью целиком »
Просмотров: 21146 | Комментариев: 14
Генератор случайных чисел на Ассемблере
03.09.2008 | Категория: Образ мышления: Assembler | Автор: ManHunter
При написании программ часто возникает необходимость получить последовательность случайных чисел. В языках высокого уровня существуют штатные функции, а для Ассемблера я использую так называемый "Минимальный генератор Парка-Миллера" (Minimal portable random generator by Park and Miller). От аналогичных алгоритмов его отличает очень малый размер и равномерное распределение получаемых случайных чисел. Математическую модель и описание работы алгоритма можно без труда найти в интернете, поэтому эту информацию я здесь не привожу.Code (Assembler) : Убрать нумерацию
- ;---------------------------------------------
- ; Park Miller random number algorithm
- ; Получить случайное число 0 ... 99999
- ; stdcall WRandom
- ; на выходе EAX - случайное число
- ;---------------------------------------------
- proc WRandom
- push edx ecx
- mov eax,[random_seed]
- xor edx,edx
- mov ecx,127773
- div ecx
- mov ecx,eax
- mov eax,16807
- mul edx
- mov edx,ecx
- mov ecx,eax
- mov eax,2836
- mul edx
- sub ecx,eax
- xor edx,edx
- mov eax,ecx
- mov [random_seed],ecx
- mov ecx,100000
- div ecx
- mov eax,edx
- pop ecx edx
- ret
- endp
- ;---------------------------------------------
- ; Получить случайное число в нужном интервале
- ; Требуется процедура WRandom
- ; stdcall WIRandom,min,max
- ; на выходе EAX - случайное число
- ;---------------------------------------------
- proc WIRandom rmin:dword,rmax:dword
- push edx ecx
- mov ecx,[rmax]
- sub ecx,[rmin]
- inc ecx
- stdcall WRandom
- xor edx,edx
- div ecx
- mov eax,edx
- add eax,[rmin]
- pop ecx edx
- ret
- endp
- ;---------------------------------------------
- ; Инициализация генератора случайных чисел
- ; stdcall WRandomInit
- ;---------------------------------------------
- proc WRandomInit
- push eax edx
- rdtsc
- xor eax,edx
- mov [random_seed],eax
- pop edx eax
- ret
- endp
Читать статью целиком »
Просмотров: 30890 | Комментариев: 7