Как стать автором
Обновить
145.27

Разработка под Windows *

Разработка под операционные системы от Microsoft

Сначала показывать
Порог рейтинга
Уровень сложности

Большинство оконных приложений — это недоработанные real-time приложения

Уровень сложности Простой
Время на прочтение 6 мин
Количество просмотров 6.3K
Мнение
Перевод

В оконных приложениях таких платформ, как Windows, Linux и macOS, скрывается ряд недоработок, которые порой снижают их быстродействие до раздражающе медленного. Сюда относятся нюансы работы в реальном времени, блокирование памяти при доступе к диску и недостаточно эффективное планирование для активного оконного приложения. В статье мы подробно разберём все эти проблемы.

Я программирую уже давно. Под давно я имею в виду не один десяток лет работы. Надеюсь, это достаточно долго. За это время мой опыт в основном заключался в программировании для современных платформ вроде Linux, Windows, macOS для десктопных и серверных архитектур процессоров. Недавно я участвовал в создании MIDI-движка для систем значительно меньшей мощности.

Вскоре после начала я столкнулся с проблемой, которая требовала обеспечить невозможность переполнения очереди событий ввода. По сути, эта задача сводится к тому, чтобы каждый обработчик событий не выполнялся дольше некой максимальной продолжительности времени. Затем меня осенило! Я уже слышал это раньше — «максимальная продолжительность времени», так как занимаюсь разработкой систем, работающих в реальном времени.
Читать дальше →
Всего голосов 49: ↑43 и ↓6 +37
Комментарии 22

Новости

Как мы анализируем потребление памяти нативными приложениями (C++, Windows, Linux)

Время на прочтение 13 мин
Количество просмотров 3.6K

Технологическая платформа 1С:Предприятие – это большой программный продукт (только на С++ - более 10 миллионов строк кода, а есть ещё Java и JavaScript). Подробнее про устройство платформы можно прочитать тут.

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

О том, какие инструменты мы пробовали использовать, почему они нам не подошли и как мы в итоге решили задачу анализа использования памяти – под катом.

Читать далее
Всего голосов 24: ↑24 и ↓0 +24
Комментарии 10

Выбор Минцифры: какие российские операционные системы получат господдержку

Уровень сложности Простой
Время на прочтение 7 мин
Количество просмотров 4.2K
Обзор

В марте 2022 года американская компания Microsoft объявила о постепенном сворачивании бизнеса в России. Легальное использование ее главного продукта — операционной системы Windows — было поставлено под угрозу. Интересно, что уже в апреле IT-гигант начал «мягко» возвращаться, в июне президент Microsoft Брэд Смит заявил о «планомерном уничтожении бизнеса в стране», а весной 2023 года многие отечественные корпоративные клиенты стали получать письма с предложениями продлить лицензию на Windows. Но еще задолго до череды этих непоследовательных действий поставщика российские госорганы стали плавно переходить на отечественные решения, потому что их на рынке достаточно. 

В ноябре 2022 года стало известно, что эксперты Минцифры выбрали 3 наиболее перспективные российские операционные системы, которые получат всестороннюю поддержку от государства — Astra Linux (ГК «Астра»), ОС «Альт» («БазАльт СПО») и «Ред ОС» («Ред Софт»). Сегодня мы поговорим об этих и других ОС из реестра ПО, а также оценим перспективы вытеснения Windows с российского рынка.

Читать далее
Всего голосов 18: ↑16 и ↓2 +14
Комментарии 17

Assembler для Windows в Visual Studio

Время на прочтение 12 мин
Количество просмотров 13K

В этой статье я покажу как написать приложение для windows на ассемблере. В качестве IDE будет привычная многим Visual Studio 2019 со своими привычными плюшками - подсветка кода, отладка и привычный просмотр локальных переменных и регистров. Собирать приложение будет MASM, а значит, у нас будут и масмовские плюшки. Это будет полноценное оконное приложение с меню, иконкой, отрисовкой, выводом текста и обработкой мыши с клавиатурой.

Читать далее
Всего голосов 71: ↑71 и ↓0 +71
Комментарии 62

Истории

Неполадки в отладке: как уязвимость в WinDbg позволяет атаковать разработчиков

Уровень сложности Средний
Время на прочтение 6 мин
Количество просмотров 2.4K
Кейс

Привет, Хабр! Меня зовут Александр Калинин, я занимаюсь разработкой средств обеспечения безопасности контейнерных сред в МТС RED, дочерней компании МТС в сфере кибербезопасности. Сегодня расскажу о том, как я обнаружил в отладчике WinDbg уязвимость, которая позволяет запускать произвольный вредоносный код на хосте разработчика и подменять библиотеки. Также поговорим о реакции Microsoft на мой репорт.

Читать далее
Всего голосов 39: ↑39 и ↓0 +39
Комментарии 5

Программа-шутка или как за вечер вспомнить Python и красные глаза

Уровень сложности Средний
Время на прочтение 9 мин
Количество просмотров 8K

Одним из летних вечеров я сидел чате дискорда одного известного в узких кругах ютубера под ником Бэбэй (не спрашивайте кто это, его послужной список стоит отдельной статьи, но точно не на Хабре!). Состою я там в гильдии злодеев, которая пытается смешно злодействовать в рамках правил. И мне пришла "гениальная" идея - написать свою программу для спама фурри картинками на экране нерадивого чатовца, пожелавшего посмотреть, что я прислал. Недолго думая, я приступил к проекту. И ёлки-иголки, я вообще не ожидал, что придётся провозится так долго с тем, чтобы она могла просто работать!

Читать далее
Всего голосов 15: ↑3 и ↓12 -9
Комментарии 8

Актуальный гайд по написанию простого Windows-драйвера

Уровень сложности Средний
Время на прочтение 10 мин
Количество просмотров 25K

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

Читать далее
Всего голосов 60: ↑60 и ↓0 +60
Комментарии 39

Любой достаточно продвинутый деинсталлятор неотличим от зловреда

Уровень сложности Средний
Время на прочтение 6 мин
Количество просмотров 3.6K
Кейс
Перевод

У нас возник резкий рост количества вылетов Explorer из-за того, что указатель команд оказывался в пустоте.

0:000> r eax=00000001 ebx=008bf8aa ecx=77231cf3 edx=00000000 esi=008bf680 edi=008bf8a8 eip=7077c100 esp=008bf664 ebp=008bf678 iopl=0 nv up ei pl zr na pe nc cs=0023 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00010246 7077c100 ?? ???

Возможно, нам о чём-то скажет адрес возврата.

0:000> u poi esp 008bf6d4 test eax,eax 008bf6d6 je 008bf6b9 008bf6d8 xor edi,edi 008bf6da cmp dword ptr [esi+430h],edi

Странно, что мы исполняем код из какого-то места, не имеющего имени. Если приглядеться, то можно увидеть, что мы исполняем код из стекаesp — это  008bf664, то есть вызывающий проблемы код находится в стеке.

Кто исполняет код из стека?

Конечно, зловреды.

Давайте посмотрим, что пытается сделать это зловредное ПО.

Читать далее
Всего голосов 19: ↑18 и ↓1 +17
Комментарии 22

Мы запустили Windows из-под Windows, чтобы запустить Windows: Winception и другие проекты

Время на прочтение 4 мин
Количество просмотров 10K

Некоторые разработчики реализуют проекты just for fun, без особого практического смысла. Просто потому, что могут, и получается нечто из разряда «троллейбуса из хлеба». Сейчас выходные, так что можно расслабиться и оценить именно такой проект, а также родственные ему.

Называется новинка Winception. Авторы отличились тем, что запустили Windows 11, Windows 10, Windows 8.1, Windows 8, Windows 7 и DOS друг в друге. Получилось нечто вроде виндовой матрёшки. О ней, а также других подобных экспериментах и поговорим.

Читать далее
Всего голосов 23: ↑23 и ↓0 +23
Комментарии 8

WordPad, к сожалению, всё. На что был способен этот текстовый редактор и почему его убирают?

Время на прочтение 4 мин
Количество просмотров 10K

Привет, Хабр! Здесь уже публиковалась новость о том, что Microsoft в ближайшее время собирается удалить WordPad из своей операционной системы. Этот текстовый редактор очень ограничен в функциональности по сравнению с практически любой версией Word из пакета Microsoft Office, проигрывает он и подавляющему большинству других современных и не очень редакторов текстовых документов. Почему же многие пользователи ОС Windows расстраиваются из-за решения Microsoft, согласно которому WordPad вскоре уберут?

Читать далее
Всего голосов 19: ↑17 и ↓2 +15
Комментарии 68

Тайная жизнь COM: анализ событий и стратегии детектирования

Уровень сложности Средний
Время на прочтение 8 мин
Количество просмотров 934
Аналитика

Привет, Хабр!

Сегодня я продолжу рассказывать про Component Object Model (COM) и атаку COM Hijacking.

В предыдущей части "Тайная жизнь COM: погружение в методы hijacking" я разобрала способы hijacking, а из первой статьи мы также узнали, что вызов этой полезной нагрузки может происходить по расписанию в случае с запланированной задачи или при запуске пользователем какого-либо ПО.

Но у вас может возникнуть вопрос, а что, если я хочу самостоятельно вызывать COM-объект, не дожидаясь каких-либо сторонних событий? Предвосхищая его, в этой статье я как раз и хочу рассказать вам немного об этом, а после мы рассмотрим, как можно детектировать атаку COM Hijacking.

И предлагаю начать со способов запуска COM-объектов штатными средствами Windows.

Читать далее
Всего голосов 4: ↑4 и ↓0 +4
Комментарии 0

Собираем и запускаем калькулятор из Windows XP в среде Windows 10 c помощью GCC x64

Уровень сложности Сложный
Время на прочтение 63 мин
Количество просмотров 11K
Туториал

Привет всем.

В данной статье мы немного проанализируем код Windows XP, a также соберем калькулятор c использованием GCC x64 в среде Windows 10. Будут показаны ошибки, с которыми я столкнулся в процессе сборки и подробно расписаны способы их решения. В конце будет продемонстрирован рабочий билд приложения calc.exe.

Всем приятного прочтения!

Читать далее
Всего голосов 98: ↑98 и ↓0 +98
Комментарии 48

CodeLama в вашей клавиатуре | Локальный Copilot для любого поля ввода

Уровень сложности Простой
Время на прочтение 9 мин
Количество просмотров 14K
Туториал

Стою я значит утром (около 2 часов дня) возле кофеварки и листаю ленту хабра, а там CodeLama вышла. Copilot для бедных это или панацея в мире локальных текстовых моделей? Попытаюсь не отвечать на этот вопрос, ведь ваши соседи снизу утонут в воде, которая сейчас льётся из экрана.
Читать далее - на свой страх и риск. Статья писалась спинным мозгом и глубокой ночью, как следствие я получил натянутую на глобус сущность, которую можно инкапсулировать в технотекст, что бы она вызывала меньше подозрений у случайного читателя. Ну вы поняли уровень, верно?
Предлагаю обойтись кратким вступлением и перейти сразу к делу.

Сразу к делу
Всего голосов 48: ↑48 и ↓0 +48
Комментарии 14

Ближайшие события

Битва пет-проектов
Дата 25 сентября – 30 ноября
Место Онлайн
PG Boot Camp Russia 2023
Дата 5 октября
Время 10:00 – 17:00
Место Москва Онлайн
Joker
Дата 9 – 14 октября
Время 16:00 – 19:30
Место Санкт-Петербург Онлайн
Открытый урок «Kafka Streams»
Дата 16 октября
Время 10:00
Место Онлайн
Питч-сессия pravo (tech) impulse
Дата 19 октября
Время 15:45 – 17:30
Место Москва
Russia Risk Conference 2023 — 19-я конференция по риск-менеджменту
Дата 25 – 26 октября
Время 10:00 – 19:00
Место Москва Онлайн
Онлайн IT HR-конференция HR42
Дата 17 – 18 ноября
Время 10:00 – 14:00
Место Онлайн
HighLoad++ 2023
Дата 27 – 28 ноября
Время 9:00 – 20:00
Место Москва Онлайн

VulkanSceneGraph: Введение в графическую библиотеку

Уровень сложности Средний
Время на прочтение 13 мин
Количество просмотров 2.6K
Обзор

Возможно, кто-то из читателей помнит мою серию публикаций о графической библиотеке OpenSceneGraph. Уже на тот момент, в общем-то было понятно, что использование OpenSceneGraph в 2018 году мало оправдано из-за того, что OpenGL, на котором основан OpenSceneGraph потихоньку сдает свои позиции. В феврале 2016 года орган по стандартизации OpenGL Khronos group, выпускают приемника OpenGL - Vulkan API версии 1.0. Производители оборудования в общем-то почти сразу стали добавлять в драйверы своей аппаратуры поддержку нового API. По крайней мере, актуальная на тот момент GeForce GTX 970 уже имела таковую поддержку (про более старые серии аппаратуры ничего сказать не могу).

Не смотря на то, что OpenSceneGraph таки получил поддержку OpenGL 3.x (и ваш покорный слуга собирал его с таковой поддержкой), разработчикам этой библиотеки стало понятно, что огромное количество внутренних проблем OpenGL делает его поддержку бесперспективной. Поэтому, в конце мая 2018 года стартовала разработка новой графической библиотеки VulkanSceneGraph, ориентированной исключительной на Vulkan API. 13 ноября 2022 года состоялся официальный релиз VulkanSceneGraph-1.0, а совсем недавно, 31 августа 2023 выпустили VulkanSceneGraph-1.0.9.

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

Читать далее
Всего голосов 10: ↑10 и ↓0 +10
Комментарии 12

Не дадим Windows Phone умереть! Как я написал свои клиенты VK, YouTube для Nokia Lumia? Сам себе экосистема ч.2

Уровень сложности Средний
Время на прочтение 16 мин
Количество просмотров 13K
Кейс
image

Windows Phone… услышав название этой мобильной системы, поневоле начинаешь с теплотой вспоминать своего недавнего, такого необычного мобильного друга, как будто прошло всего пару месяцев с момента смены смартфона на iPhone/Android. А ведь с момента фактической смерти Windows Phone прошло уже почти 10 лет! Увы, время вспять уже не повернуть, а мобильное подразделение Nokia не спасти, однако при наличии навыков разработки мобильных приложений, большом энтузиазме и фанатизме, есть шанс вернуть жизнь своему старому другу! Недавно я снова загорелся диким энтузиазмом и смог вернуть жизнь старенькой «люмии», написав собственные клиенты нужных мне сервисов с нуля — и готов поделиться этим с вами во всех подробностях!

Сегодня вы узнаете о моей мотивации привносить жизнь старым смартфонам, о тонкостях разработки мобильных приложений, чем Windiows Phone был на голову выше Android в техническом плане и о том, почему провал Windows Phone — одна из самых больших потерь мобильного рынка. Интересно? Тогда добро пожаловать в статью!
Читать дальше →
Всего голосов 81: ↑79 и ↓2 +77
Комментарии 74

Запускаем матричный принтер от старого банковского терминала

Уровень сложности Средний
Время на прочтение 10 мин
Количество просмотров 4.8K
Туториал
Приветствую всех!

Не так давно я уже рассказывал про то, какими были принтеры начала эпохи термопечати. И в той статье я упомянул, что подобные устройства использовались совместно с платёжными терминалами VeriFone.

Увы, найти именно такой принтер у меня не вышло, так что сегодня поговорим о его не менее популярном в данной области матричном собрате, который тоже оказался крайне интересным.



Итак, в сегодняшней статье поговорим о том, как устроен и работает такой принтер. Разберёмся, как подключить его к обычному компьютеру. Традиционно будет много интересного.
Читать дальше →
Всего голосов 46: ↑46 и ↓0 +46
Комментарии 35

Разработка игр на NeoAxis Engine 2020: Часть 1

Время на прочтение 4 мин
Количество просмотров 1.7K
В 2019 году вышел новый NeoAxis Engine, и я подумал, что не сделать на нем игру просто некрасиво.

Поэтому я решил сделать на нем пару игр. А начать с самого простого — с шутера. Ну и заодно объяснить, как делаются игры на этом замечательном движке.
Читать дальше →
Всего голосов 16: ↑5 и ↓11 -6
Комментарии 4

Сквозь покрытые тайной искусства строки кода: Как я оживил рабочий стол с помощью P/Invoke 🪄

Уровень сложности Простой
Время на прочтение 4 мин
Количество просмотров 2.2K
Туториал

В новой публикации мы исследуем сферу магии кода и низкоуровневого программирования. Перед вами увлекательная история, как я смог обрести контроль над рабочим столом, используя лишь небольшие фрагменты C# кода. Вам будет интересно узнать, как я смог покорить мир обоев и сделать их подчиненными волшебства. Не упустите шанс окунуться в мир горячих клавиш и таинственных сообщений Windows API.

В этой истории о магической мощи программирования мы расскажем, как открываются двери к возможностям, о которых вы даже не подозревали. Узнаете ли вы, что стоит за командами, вдохновленными Ctrl+Alt+B и Shift+C? Все это и многое другое ждет вас внутри. Следите за нашим путешествием сквозь замысловатые лабиринты кода и давайте волшебству свободу! ✨

Раскрыть завесу тайны
Всего голосов 6: ↑5 и ↓1 +4
Комментарии 13

Разбираем уязвимость в службе очереди сообщений Windows

Уровень сложности Средний
Время на прочтение 9 мин
Количество просмотров 1.5K
Кейс

В конце апреля 2023 был опубликован PoC для уязвимости CVE-2023-21769 в сервисе очереди сообщений MSMQ. Это одна из трёх уязвимостей, обнаруженных в MSMQ и запатченных в апрельском обновлении ОС Windows (1, 2, 3). Опубликованный PoC реализует уязвимость отказа в обслуживании сервиса MSMQ. Две другие уязвимости – удалённый BSoD и RCE, названная Queue Jumper. По информации от MSRC с помощью этих уязвимостей можно было взять под контроль практически все версии ОС Windows, на которых доступен и активен MSMQ. Серьёзно, не правда ли?

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

Поэтому в данной заметке мы на простом примере проведём идентификацию патча и сравнительный анализ бинарного кода, немного познакомимся с проприетарным протоколом MQQB, и проанализируем уязвимость.

Дизассемблировать
Всего голосов 4: ↑4 и ↓0 +4
Комментарии 2

Взлом доступа к ядру Windows при помощи драйвера принтера

Уровень сложности Сложный
Время на прочтение 14 мин
Количество просмотров 11K
Кейс
Перевод

В этой статье приводятся подробности CVE-2023-21822 — уязвимости Use-After-Free (UAF) в win32kfull, которая может привести к повышению привилегий. Отчёт о баге отправлен в рамках программы ZDI, а позже она была пропатчена компанией Microsoft.

В ядре Windows есть три API, предназначенные для общего использования драйверами устройств с целью создания растровых изображений (bitmap): EngCreateBitmap, EngCreateDeviceBitmap и EngCreateDeviceSurface. Каждый из этих API возвращает дескриптор растрового изображения. Если вызывающая сторона хочет выполнить какие-то операции рисования на растровом изображении, то она должна сначала заблокировать это изображение, передав его дескриптор функции EngLockSurface. EngLockSurface увеличивает значение эталонного счётчика растрового изображения и возвращает указатель на соответствующую запись SURFOBJ. SURFOBJ — это расположенная в памяти ядра структура, содержащая всю информацию, связанную с растровым изображением, например, его размер, формат пикселей, указатель на пиксельный буфер и так далее. Подробнее структуру SURFOBJ мы рассмотрим позже.

После вызова EngLockSurface полученный указатель на SURFOBJ может передаваться различным API рисования, например, EngLineTo и EngBitBlt. Полный список этих API рисования можно найти в winddi.h. После того, как вызывающая сторона завершит операции рисования, она должна вызывать EngUnlockSurface. На этом этапе эталонный счётчик растрового изображения снова сбрасывается до нуля, и вызывающей стороне больше не разрешается использовать указатель на SURFOBJ. В конце вызывающая сторона может удалить растровое изображение, вызвав для его дескриптора EngDeleteSurface. Типичное использование этих API показано ниже:
Читать дальше →
Всего голосов 53: ↑52 и ↓1 +51
Комментарии 3

Вклад авторов

Работа