Игрища с USB в Windows (отслеживаем и контролируем)

Не так давно появилась задача - каким-то образом отслеживать появление новых USB-флешек в Windows, а также их исчезновение. В идеале также неплохо было бы иметь возможность манипулировать безопасным извлечением. Казалось бы, что все просто - ведь Windows имеет средства для оповещения приложений о вставляемых и вытаскиваемых флешках на уровне пользователя, но на деле оказалось, что тонкостей в этом вопросе очень много.

Итак, в статье я расскажу, как:
[+] отследить появление новой флешки или USB-диска в системе (даже если это хитрожопая флешка, которая монтируется как CD-ROM+Flash, например, или флешка, разбитая на пару дисков)
[+] отслеживать безопасное извлечение флешек и манипулировать им
[+] самому безопасно извлечь любой извлекаемый USB-девайс по букве его диска
[+] отследить прочие события, а именно небезопасное извлечение флешки и отказ в безопасном извлечении

Само-собой, никаких драйверов, только уровень пользователя! Я также поделюсь с вами исходником класса на C++, который реализует все вышеописанные задачи. Давно я не писал годных толстых статей...
Читать далее «Игрища с USB в Windows (отслеживаем и контролируем)»

Quest 3 — Return to Classics — Полное прохождение


В этой статье я опишу полное прохождение нашего третьего квеста.

Напоминаю его адреса:

Русская версия
Английская версия

Очень жаль, что в него поиграло такое небольшое количество народу, по сравнению с первым или вторым, но, наверное, люди не доверяют exe-файлам или просто не любят ставить что-то на свой компьютер. А зря, квест действительно интересный и стоящий, он не даст вам заскучать, а часто даже повеселит вас, и вы в этом сможете убедиться, почитав его прохождение-описание.

Помимо сухого прохождения я расскажу, как получить все достижения квеста и доступ к секретной карте, доступной после прохождения основной сюжетной линии, а также опишу все отсылки к другим фильмам/книгам/сериалам/играм, которые были использованы при создании квеста.

Очень надеюсь на то, что публикация полного прохождения побудит многих все-таки пройти игру или хотя бы несколько карт, очень уж много сил и времени было потрачено на ее создание.

Читать далее «Quest 3 — Return to Classics — Полное прохождение»

Kaimi & DX Quest 2 — Reloaded: Прохождение

Пришло время опубликовать прохождение второго нашего квеста (Напомню, что прохождение первого было опубликовано в Журнале "Хакер"). Надеемся, это поможет желающим завершить начатое и получить новые интересные знания, пройдя те злосчастные уровни, которые они не смогли пройти :)

Для тех, кто не в теме, напоминаю адрес квеста: тыц.

Как наверняка заметили те, кто проходил первый квест, во втором есть одно отличие - занудная скрепка-помощник, которая будет задалбывать вас своими советами на протяжении всего прохождения :)
Тем не менее, она иногда будет действительно давать дельные советы и даже решения уровней.
Читать далее «Kaimi & DX Quest 2 — Reloaded: Прохождение»

Методика деобфускации PHP-скриптов для чайников. Полезные советы.

Очень часто непосвященные люди задают вопросы вроде "Как расшифровать обфусцированный PHP-скрипт?", "Хороша ли защита PHP-скрипта обфускатором?" и даже "Помогите деобфусцировать! Вам же не сложно?". Цель этой статьи - показать, что обфускаторы дают в 90% случаев никакущую защиту (которая способна защитить только от людей, увидевших язык программирования первый раз в жизни). Снять ее можно обычно минут за 10-20, получив исходный PHP-скрипт в первозданном виде. Остальные 10% случаев - это немного усложненная защита, которая, впрочем, снимается теми же путями. Если вы желаете самостоятельно научиться снимать обфускацию со скриптов, то эта статья специально для вас!

Как я уже говорил выше, задача деобфускации PHP-cкриптов очень актуальна. Достаточно взглянуть на один популярный хак-форум:

Читать далее «Методика деобфускации PHP-скриптов для чайников. Полезные советы.»

PE-формат. Часть 3 — Импорт

Импорт - это важнейший элемент любого исполняемого файла. Невозможно найти exe- или dll-файл без каких-либо таблиц, имеющих отношение к импорту, разве что у упакованных файлов и у вирусов. Импорт позволяет указать, какие внешние функции и из каких модулей требуются исполняемому файлу для нормальной работы. Например, если мы пишем простейший "Hello, world!", который выводит приветствие в MessageBox'е и завершает выполнение, то ему потребуются как минимум две функции: MessageBoxA (или MessageBoxW) из user32.dll и ExitProcess из kernel32.dll.

Читать далее «PE-формат. Часть 3 — Импорт»

PE-формат. Часть 2 — Немного практики: выводим информацию о секциях исполняемого файла

Тем, кто мало знаком с PE-форматом, или совсем с ним не знаком, наверное, было непросто понять то море информации, которое было излито в моей предыдущей статье, поэтому я решил пока немного отложить изучение экспортов, импортов и прочих служебных таблиц в PE-файлах. В этой статье мы займемся практикой: напишем программку, которая выведет список секций произвольного исполняемого файла и некоторую информацию о них. Впоследствии, когда дойдет дело до написания упаковщика, этим кодом мы воспользуемся, ведь упаковывать мы будем как раз данные секций.

Читать далее «PE-формат. Часть 2 — Немного практики: выводим информацию о секциях исполняемого файла»

Пишем простое клиент-серверное приложение на Perl

В этой статье я рассмотрю создание простого чата на Perl. Чат будет состоять из консольного сервера и клиента с GUI на основе Tk. Для начала реализуем серверную часть.
В серверной части мы не будем использовать процессы или потоки, а вместо этого воспользуемся мультиплексированием. Мультиплексирование довольно просто реализуется с помощью модуля IO::Select, который является классом-оболочкой над системной функцией select.
Функция select позволяет определить готовность дескриптора к записи/чтению. Также стоит отметить, что при использовании select следует избегать использования блокирующих вызовов, как, например, print, read, вместо них необходимо использовать syswrite, sysread.
Читать далее «Пишем простое клиент-серверное приложение на Perl»

PE-формат. Часть 1 — Базовая информация

Данная статья является первым маленьким шажком на пути к написанию собственного несложного упаковщика. Знаний предстоит получить весьма большое количество, так что садитесь поудобнее, запасайтесь попкорном и готовьтесь к чтению. В статье большое количество отсылок к MSDN, поэтому не ленитесь открывать и изучать те структуры, на которые я ссылаюсь. Если будете следовать моим простым советам, обучение пойдет гораздо проще. Еще я бы рекомендовал скачать какой-нибудь PE-редактор, например, CFF Explorer и скормить ему реальный PE-файл, чтобы можно было вживую пробежаться по тем структурам, которые я здесь описываю.

PE-формат (Portable Executable) - это формат всех 32- и 64-разрядных исполняемых файлов в ОС Windows. Такой формат имеют файлы exe, dll, ocx, sys и т.д. (Разумеется, exe под DOS не в счет). В этой статье я расскажу самую базовую информацию об устройстве этого формата и его структурах. Практически самое полное и доступно изложенное описание можно найти в статье Криса Касперски, и она является обязательной к прочтению, если вы действительно решили во всем этом разобраться. Помните - никто не говорил, что будет легко, но у вас появился отличный шанс показать, что вы настоящие мужики с железными волосатыми яйцами, разобравшись во всем этом.
Читать далее «PE-формат. Часть 1 — Базовая информация»

MASM32: Немного основ ассемблера

Эта статья идет прямиком в дополнение к предыдущей. Я не рассказал про самые основы ассемблера. Хотя в интернете полно материала на эту тему, я все равно решил ее немного затронуть. Что же нужно знать для начала, чтобы понимать и писать несложные программы или ассемблерные вставки?
Читать далее «MASM32: Немного основ ассемблера»

MASM32: Начало

Решил начать цикл статей по ассемблеру, и, в частности, по MASM32. Пригодятся эти мануалы с примерами тем, кто хочет поднять свои навыки программирования и развить умение программировать на ассемблере. Пакет MASM32 - это не просто голый ассемблер. В нём есть огромное множество облегчающих разработку софта вещей - пользовательские макросы, встроенные функции и макросы, дебаггер и прочее, и обо всём этом я буду рассказывать. Конечно, читать такие статьи будет гораздо легче тем, кто уже умеет программировать на каком-нибудь языке. Если вы программируете на каком-нибудь говне вроде Visual Basic, или фанатеете от перетаскивания компонентов и кнопочек на формы в дельфи или Borland C++ - не расстраивайтесь, я расскажу, как можно перетаскивать кнопочки и в ассемблере. Разумеется, никаких стандартных облегчающих жизнь компонентов здесь не будет, но это побудит разобраться с WinAPI - огромной кладезью полезных функций, которые способны делать всё, начиная от чтения данных из сокета и заканчивая отображением окон.
Читать далее «MASM32: Начало»