Pull to refresh
Дмитрий Нестер @Psionic read-only

User

Windows: достучаться до железа

Information Security *Python *Reverse engineering *Development for Windows *

Меня всегда интересовало низкоуровневое программирование – общаться напрямую с оборудованием, жонглировать регистрами, детально разбираться как что устроено... Увы, современные операционные системы максимально изолируют железо от пользователя, и просто так в физическую память или регистры устройств что-то записать нельзя. Точнее я так думал, а на самом деле оказалось, что чуть ли не каждый производитель железа так делает!

Читать далее
Total votes 175: ↑174 and ↓1 +173
Views 50K
Comments 90

Unsafe в Swift

Development for iOS *Swift *
Создатели современных языков программирования всеми силами пытаются увести программистов от прямой работы с указателями и памятью, либо вообще не включая в язык подобные возможности (например, Java) либо маркируя их страшными словами unsafe (C#). Пишущим на swift повезло, этот язык попал во вторую категорию, и хотя это не рекомендуется, а в документации встречаются предупреждения о возможных утечках памяти и прочих страшилках возможность такая есть!

В этой статья я хотел бы рассмотреть работу с указателями в swift, а так же порассуждать для чего это вообще может понадобиться.
Читать дальше →
Total votes 12: ↑10 and ↓2 +8
Views 13K
Comments 15

Что нам стоит PCI-E райзер свой построить

Computer hardware DIY Electronics for beginners


Давным-давно собирал я себе мини-компьютер. Но вот незадача – 3D моделирование и чего уж греха таить – банальные игрушки заставляли данную коробочку сильно призадуматься, а меня — понервничать. Но просто взять и подключить видеокарту к ней нельзя — слот PCI-E X4 есть, но нет места в корпусе. Да и по питанию не сможет обеспечить (если не говорить о совсем уж бюджетных затычках). Какие варианты решения данной проблемы есть на рынке, чем они меня не устроили и что в итоге получилось, я постараюсь описать в данной статье. Прошу под кат, кто не боится большого количества картинок!
Читать дальше →
Total votes 80: ↑80 and ↓0 +80
Views 91K
Comments 79

Древности: игры под MS-DOS, которые мы не выбирали

«Лаборатория Касперского» corporate blog Old hardware Games and game consoles
Так и хочется написать, как я в 1991 году пошел в магазин компьютерных игр, перебрал красивые коробки со свежими релизами и выбрал именно этот новейший блокбастер для операционной системы MS-DOS. Или тот. Да нет же, не могло в 1991 году такого быть. Это сейчас старых игр тысячи, их можно добыть и бесплатно, и купить легким движением пейпала. Сегодня — рассказ, навеянный сложной механикой доступности программ в девяностых, когда у тебя нет ни денег, ни даже компьютера. Есть IBM PC на работе родителей, или раз в месяц игровой час в школе. В таких условиях не до выбора: играли в то, что есть прямо сейчас, если читается дискета, и не прозвенел звонок.


Возможно благодаря этой ограниченной доступности старые игры вспоминаются с такой теплотой. Выбор игр для обзора у меня очень субъективный и не претендующий на полноту, но он вполне соответствует доступному в те годы ассортименту. Возможно, так было не у меня одного: в те годы и пластинки у всех дома были одинаковые, и игры, распространявшиеся из рук в руки по малопонятным законам, не особо отличались. Я выбрал пять, в которые не только играл в прошлом. Я в них играю и сейчас на своих разнообразных старых компьютерах, и наверное буду играть еще долго. Под катом заметки про Dangerous Dave in The Haunted Mansion, Prince of Persia, Doom, Command&Conquer и Sim City 2000.
Total votes 47: ↑43 and ↓4 +39
Views 37K
Comments 155

Семантика копирования и управление ресурсами в C++

Programming *C++ *
Sandbox

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



Читать дальше →
Total votes 45: ↑44 and ↓1 +43
Views 43K
Comments 83

Learn OpenGL. Урок 5.9 — Отложенный рендеринг

Programming *C++ *Game development *
Tutorial
Translation

В предыдущих статьях мы использовали прямое освещение (forward rendering или forward shading). Это простой подход, при котором мы рисуем объект с учётом всех источников света, потом рисуем следующий объект вместе с всем освещением на нём, и так для каждого объекта. Это достаточно просто понять и реализовать, но вместе с тем получается довольно медленно с точки зрения производительности: для каждого объекта придётся перебрать все источники света. Кроме того, прямое освещение работает неэффективно на сценах с большим количество перекрывающих друг друга объектов, так как большая часть вычислений пиксельного шейдера не пригодится и будет перезаписана значениями для более близких объектов.


Отложенное освещение или отложенный рендеринг (deferred shading или deferred rendering) обходит эту проблему и кардинально меняет то, как мы рисуем объекты. Это даёт новые возможности значительно оптимизировать сцены с большим количеством источников света, позволяя рисовать сотни и даже тысячи источников света с приемлемой скоростью. Ниже изображена сцена с 1847 точечными источниками света, нарисовання с помощью отложенного освещения (изображение предоставил Hannes Nevalainen). Что-то подобное было бы невозможно при прямом расчёте освещения:


img1

Читать дальше →
Total votes 28: ↑28 and ↓0 +28
Views 23K
Comments 12

Почему Telegram Passport — никакой не End to End

Virgil Security, Inc. corporate blog Information Security *Cryptography *Social networks and communities
Привет, %username%!



В обсуждении новости про Passport разгорелись жаркие дискуссии на тему безопасности последней поделки от авторов Telegram.

Давайте посмотрим, как он шифрует ваши персональные данные и поговорим о настоящем End-To-End.
Читать дальше →
Total votes 237: ↑226 and ↓11 +215
Views 125K
Comments 249

Пробрасываем вызовы Steam API из Wine в GNU/Linux и обратно с помощью Nim

Abnormal programming *C++ **nix *Reverse engineering *

У игроков на платформе GNU/Linux множество проблем. Одна из них — необходимость устанавливать отдельный клиент Steam для каждой Windows игры из Steam. Ситуация усугубляется необходимостью установки ещё и родного клиента Steam для портированных и кроссплатформенных игр.

Но что если найти способ использовать один клиент для всех игр? За основу можно взять родной клиент, а игры для Windows пусть обращаются к нему так же как, например, к OpenGL или звуковой подсистеме GNU/Linux — средствами Wine. О реализации такого подхода и пойдёт речь далее.

Читать дальше →
Total votes 59: ↑56 and ↓3 +53
Views 15K
Comments 10

Как я взломал пул для майнинга Bitcoin

Information Security *Web services testing *
Sandbox
Сегодня веб-сайты работающие с криптовалютами являются очень «вкусной» мишенью для хакеров. И вроде бы их безопасность должна быть на высоком уровне, но нет. это далеко не всегда так. Посмотрите хотя бы на BlockChain Graveiard, где видно как крупнейшие сервисы банкротятся и закрываются в результате хакерских атак. Меня это воодушевило и я решил провести собственное исследование безопасности одного из таких веб-приложений. В этой статье я расскажу что из этого получилось и сколько мне заплатили. Интересно? Добро пожаловать под кат.
Читать дальше →
Total votes 125: ↑122 and ↓3 +119
Views 56K
Comments 28

Выравнивание инструкций кода

Инфопульс Украина corporate blog C++ *Assembler *System Programming *Compilers *
Translation
Насколько трудно может быть измерить производительность простой функции, вроде вот этой?

// func.cpp
void benchmark_func(int* a)
{
	for (int i = 0; i < 32; ++i)
		a[i] += 1;
}

Ну, давайте просто завернём её в какой-нибудь микробенчмарк, вызовем её много-много раз (для усреднения результатов) и посмотрим, что получится, да? Ну ладно, мы можем ещё посмотреть на сгенерированные инструкции просто чтобы убедиться, что компилятор чего-то там не «наоптимизировал». Мы можем также провести несколько разных тестов, чтобы убедиться, что именно цикл является узким местом. Ну и всё. Мы понимаем, что мы измеряем, да?

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

// func.cpp
void foo(int* a)
{
	for (int i = 0; i < 32; ++i)
		a[i] += 1;
}

void benchmark_func(int* a)
{
	for (int i = 0; i < 32; ++i)
		a[i] += 1;
}

И вот однажды ваш менеджер приходит к вам и показывает претензию от пользователя вашей библиотеки, которая заключается в том, что она не работает настолько быстро, как вы обещали. Но постойте, мы ведь хорошо измерили производительность и обещали ровно то, что получили по результатам тестов. Что же пошло не так?
Читать дальше →
Total votes 87: ↑87 and ↓0 +87
Views 21K
Comments 22

Стоимость операций в тактах ЦП

OTUS corporate blog Programming *C++ *
Translation
Всем доброго! Вот мы и добрались до тематики С++ на наших курсах и по нашей старой доброй традиции делимся тем, что мы нашли достаточно интересным при подготовке программы и то, что будем затрагивать во время обучения.

Инфографика:



Когда нам нужно оптимизировать код, мы должны отпрофилировать его и упростить. Однако, иногда имеет смысл просто узнать приблизительную стоимость некоторых популярных операций, чтобы не делать с самого начала неэффективных вещей (и, надеюсь, не профилировать программу позже).
Читать дальше →
Total votes 100: ↑97 and ↓3 +94
Views 62K
Comments 15

Как мы музицировали с нейронными сетями

Open data *Machine learning *Prototyping *Research and forecasts in IT *Conferences
В 2016 год Google Brain Group выпустил проект Magenta в открытый доступ. Magenta позиционируется как проект, который задает и отвечает на вопросы:«Можем ли мы использовать машинное обучение для создания музыки и искусства достойных внимания? Если да, то как? Если нет, то почему нет?». Вторая цель проекта — это построить сообщество художников, музыкантов и исследователей в области машинного обучения.


Total votes 6: ↑5 and ↓1 +4
Views 4.1K
Comments 0

Почему LLVM может вызвать никогда не вызываемую функцию?

Open source *Programming *C++ *Compilers *
Что бы ни сказал тебе твой дракон, он солгал. Драконы лживы. Ты не знаешь, что ждет тебя на другой стороне.
Майкл Суэнвик. «Дочь железного дракона»

Не так давно на Хабре был опубликован пост под названием "Как может вызваться никогда не вызываемая функция?". Выводы из статьи простые: в случае undefined behaviour компилятор вправе предпринимать любые действия, даже если они будут совершенно неожиданными. Однако меня заинтересовал сам механизм этой оптимизации. Результатом своего небольшого исследования я хочу поделиться с уважаемым сообществом хабра.


Читать дальше →
Total votes 88: ↑86 and ↓2 +84
Views 18K
Comments 21

Пишем для UEFI BIOS в Visual Studio. Часть 1 — разворачивание среды разработки, компиляция и запуск на отладку

System Programming *UEFI *
Sandbox

Введение


В этой статье будет описано, как быстро начать программировать для UEFI во фреймворке edk2 в среде Visual Studio, не тратя массу времени на настройку среды обычным способом, по оригинальным мануалам. Достаточно дать команду git clone ... в корневом каталоге диска, и это на самом деле все, среда будет полностью установлена и готова к работе. Требуются 64-разрядная Windows 7 и выше c Visual Studio 2008-2015. Эти два условия не обязательны, но тогда придется немного потрудиться над собиранием системы edk2-Visual Studio в единое целое, краткая памятка будет приведена.

Цель статьи — провести начинающего за руку по первому UEFI проекту, оставаясь в привычной ему среде. Для более опытных людей, надеюсь, будет интересным поработать в VS вместо привычной командной строки, или разобрать подход и перенести его в любимый Eclipse.

Начнем с простых вещей, вывода строки на консоль и русификации (довольно востребованная вещь, причем простая в реализации), потом будет работа с формами в HII (то, что называлось в обиходе страницами BIOS Setup), потом графика, потом Boot Manager, а потом видно будет (с).


Желающие — прошу пожаловать под кат.
Читать дальше →
Total votes 48: ↑48 and ↓0 +48
Views 29K
Comments 16

Защищаем сайт с помощью ZIP-бомб

Information Security *Website development *
Translation

Старые методы по-прежнему работают


[Обновление] Теперь я в каком-то списке спецслужб, потому что написал статью про некий вид «бомбы», так?

Если вы когда-нибудь хостили веб-сайт или администрировали сервер, то наверняка хорошо знаете о плохих людях, которые пытаются сделать разные плохие вещи с вашей собственностью.

Когда я в возрасте 13 лет впервые захостил свою маленькую Linux-коробочку с доступом по SSH, я смотрел логи и каждый день видел IP-адреса (в основном, из Китая и России), которые пытались подключиться к моей сладенькой маленькой коробочке (которая на самом деле была старым ноутом ThinkPad T21 со сломанным дисплеем, жужжавшим под кроватью). Я сообщал эти IP их провайдерам.

На самом деле если у вас Linux-сервер с открытым SSH, то можете сами посмотреть, сколько попыток подключений происходит ежедневно:

grep 'authentication failures' /var/log/auth.log
Читать дальше →
Total votes 157: ↑155 and ↓2 +153
Views 86K
Comments 184

DIY порошок для посудомойки: как не растворить посуду и не повторить моих ошибок. Год экспериментов

DIY Lifehacks for geeks Chemistry


Предыдущие публикации:

Пудра для мозга или как сделать порошок для посудомойки в 9,7 раз дешевле
DIY порошок для посудомойки: разбираем промышленные средства и улучшаем рецепт

Прошло уже больше года с момента последней публикации из серии домашней алхимии, посвященной издевательствам над бытовой техникой производству порошка для посудомойки в домашних условиях. Я все еще жив. Большинство тестировавших жуткие смеси, насколько мне известно, живы. В этом посте я хотел рассказать как правильно мыть ржавые гвозди в посудомойке, не растворяется ли картошка с укропом и подвести итог экспериментов за год.
Читать дальше →
Total votes 116: ↑116 and ↓0 +116
Views 98K
Comments 533

Как лечат сумасшедших. 1.1 — Фармакотерапия: основы и шизофрения

Popular science Brain Health Chemistry
Приветствую тебя, %username%!



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

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

Если вышеизложенное вас не отпугивает, предлагаю окунуться в увлекательный мир психофармакологии. В посте много букв и картинок, предупреждаю сразу.
Total votes 119: ↑118 and ↓1 +117
Views 140K
Comments 278

Рекурсивный фильтр скользящего среднего

Programming *Perfect code *Mathematics *Robotics development *Programming microcontrollers *


Да, дорогой читатель, такое тоже бывает, и может быть вкусно и полезно!

Как ты уже наверняка знаешь, дорогой читатель, существует два способа построения цифровых фильтров.
Читать дальше →
Total votes 28: ↑25 and ↓3 +22
Views 31K
Comments 45

Продолжаем настраивать практически бесплатную рекламу на пользователей Хабра. На этот раз с помощью виджета авторизации

Self Promo
В позапрошлом посте я указал на не очевидную уязвимость Хабра, которая позволяла вставлять пиксель ретаргетинга ВК в нужные статьи для сбора максимально целевой аудитории и дальнейшей рекламы на неё через соц сети.

Благодаря стараниям разработчиков, эта проблема была успешно пофикшена в течение нескольких дней, но на этом наша сага не закончена. Напомню, что согласно официальному прайс-листу Хабра стоимость 1000 показов банера для пользователей ресурса колеблется от 400 до 550 рублей. За гео-таргетинг по Москве и Питеру придется доплатить 20 и 15 процентов соответственно.

Но всё еще существует способ рекламироваться на эту же аудиторию платя 30-150 рублей за тысячу показов. Давайте думать, как исправить и эту фичу:

image
Читать дальше →
Total votes 65: ↑60 and ↓5 +55
Views 22K
Comments 13

Натуральный Geektimes — делаем пространство чище

Habr
Читая Geektimes я постоянно хотел отключить редакторов, ведь они делают из саморегулирующегося сообщества со свободно возникающими статьями очередной адми или что-то подобное.

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

Причина такого решения думаю всем понятна — мало кому понравится принудительное кормление таким информационным шлаком. Администрация не хочет давать возможность настройки и отключения редакторов — это ее право. Мое право уйти с ресурса.

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



Читать дальше →
Total votes 135: ↑116 and ↓19 +97
Views 37K
Comments 173

Information

Rating
Does not participate
Location
Украина
Date of birth
Registered
Activity