Как сделать BSOD из User-mode

Наткнулся на забавный исходник на одном китайском сайте, где показано, как можно сделать BSOD (Blue Screen of Death, синий экран смерти) в Windows из User-Mode (ring 3) без всякого Native API:

Код на c++:

Код на ассемблере (переписал с си++ для уменьшения размера, весит всего 1кб):

Код проверен и работает на WinXP SP3 и Windows Vista SP1. На Windows 7 не работает, пофикшено, на XP SP2 тоже вроде бы не работает.

UPD: обнаружился код на c++, который способен вызвать BSOD на Win XP SP2, Win 2003 SP1 и Win NT SP4 (Discovered on 23.12.2004 by YuraN).
Читать далее «Как сделать BSOD из User-mode»

Работа с антикапчей на ассемблере

По просьбам некоторых людей, да и просто для себя, решил написать функции для работы с антикапчей (anti-captcha.com) на ассемблере.
Если кто не знает, anti-captcha – это сервис, позволяющий распознавать капчи за небольшую плату (1$ за 1000 штук). Качество распознавания, как правило, 90%, время ожидания обычно не превышает 20 секунд.
Функции для работы с сервисом сразу решил проектировать таким образом, чтобы они могли нормально без конфликтов работать во много потоков одновременно.
Для этого необходимо использовать локальные переменные для чтения и записи, а глобальные переменные (из секции данных) можно только читать, но не изменять.
Кроме того, при работе с общими переменными или ресурсами необходимо применять какой-нибудь механизм, помогающий избегать конфликтов. Я использовал мьютексы (что это такое, объясню дальше).
Программу для тестирования я сделал таким образом – можно открыть несколько файлов (от 1 до 40) с картинками и одновременно послать их на распознавание (по одной картинке на поток).
Получилось следующее:

Кроме того, я создал dll с процедурами для работы с антикапчей, которую может импортировать любая программа.
Читать далее «Работа с антикапчей на ассемблере»