Pull to refresh
0
Василь Бєляєв @VXPread⁠-⁠only

C#, C++, Lua

Send message

Управление памятью в реальном режиме Windows

Reading time6 min
Views40K
Недавно Реймонд Чен завершил серию постов, начатую ещё полтора года назад, и посвящённую управлению виртуальной памятью безо всякой поддержки со стороны процессора: Windows до версии 3.0 включительно поддерживала реальный режим 8086. В этом режиме трансляция адреса из «виртуального» (видимого программе) в физический (выдаваемый на системную шину) осуществляется бесхитростным сложением сегмента и смещения — никакой «проверки доступа», никаких «недопустимых адресов». Все адреса доступны всем. При этом в Windows могли одновременно работать несколько программ и не мешать друг другу; Windows могла перемещать их сегменты в памяти, выгружать неиспользуемые, и по мере необходимости подгружать назад, возможно — по другим адресам.

(Интересно, всегдашние холиворщики «это была графическая оболочка, а не операционная система» в курсе об этих её необычайных способностях?)
И как же она ухитрялась?

Аппаратный взлом жёсткого диска

Reading time14 min
Views128K

Жёсткие диски: если вы читаете эту статью, то с большой вероятностью у вас есть одно или несколько таких устройств. Они довольно просты и, по сути, представляют собой набор 512-байтных секторов, пронумерованных возрастающими адресами, также называемыми LBA (Logical Block Address). Компьютер, к которому подключен жёсткий диск (hard drive, HD), может считывать и записывать данные в эти сектора. Обычно используется файловая система, абстрагирующая все эти сектора до файлов и папок.

Неспециалисту может показаться, что оборудование HD должно быть довольно простым: достаточно всего лишь устройства, подключаемого к порту SATA, которое может позиционировать свои головки чтения/записи и считывать или записывать данные на пластины. Однако их работа намного сложнее: разве жёсткие диски не занимаются обработкой сбойных блоки и атрибутов SMART, и не имеют кэша, с которым тоже каким-то образом нужно работать?

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

Не лайтхаусом единым: как проверить свой сайт со всех сторон

Reading time3 min
Views19K


Когда мы говорим о веб-валидаторах и оптимизации сайта под них, мы чаще всего имеем ввиду Lighthouse/Pagespeed Insights от Google, который давно стал де-факто стандартом для оценки производительности сайта. Кто-то стремится к заветным 100 баллам даже на прототипах и шаблонных приложениях в две кнопки, кто-то в шутку создает абсолютно недоступный сайт с идеальным рейтингом, но для всех фронтендеров лайтхаус предоставляет вменяемую, хоть и довольно поверхностную, аналитику производительности сайта и поиск бутылочных горлышек. Однако скорость загрузки — лишь один из множества параметров, которые стоит проверять на своём сайте, и для большинства других есть свои валидаторы и скоринговые алгоритмы. Мы рассмотрим инструменты для каждого из значимых направлений и составим список, по которому стоит прогонять свой сайт, чтобы в дальнейшем не отлавливать проблемы вручную.
Читать дальше →

Отпечаток браузера: что это, как работает, нарушает ли закон и как защититься. Часть 2

Reading time5 min
Views23K
image

От Selectel: это вторая часть перевода статьи про отпечатки браузера (тут можно прочитать первую). Сегодня поговорим о законности сбора сторонними сервисами и сайтами отпечатков браузеров разных пользователей и о том, как можно защититься от сбора информации.
Читать дальше →

Keyboa: клавиатуры на максималках для ботов в Telegram

Reading time5 min
Views54K

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

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

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

Статья рассчитана на тех, кто знает основы Telegram Bot API и хотя бы немного знаком с фреймворком pyTelegramBotAPI.

Давайте разбираться

Коронавирус 2019-nCoV. FAQ по защите органов дыхания и дезинфекции

Reading time16 min
Views584K
Китайский коронавирус, он же «пневмония Уханя» на неделе стал одной из самых горячих тем. В классической «кто виноват и что делать» меня, традиционно, волнует только вторая часть. Сегодня под катом — статья про дезинфекцию, маски и обеззараживание помещений. Объединил в одной статье несколько заметок из своего телеграм-канала. Кладем в закладки и шлем друзьям!


Стоп! 2019-nCoV

Насколько плохим код должен быть?

Reading time6 min
Views74K
Эрик Липперт — ветеран Microsoft, проработавший в компании 16 лет и стоящий за разработкой VBScript, JScript и C#.

На прошлой неделе в комментариях к одной из статей разгорелся спор о роли низкоуровневой оптимизации в программировании, и я вспомнил относящуюся к этому статью Эрика. Она была написана в конце 2003, и хотя реалии с тех пор несколько изменились — принципы остались теми же самыми. Можете мысленно заменить ASP и VBScript на PHP, JavaScript, или на другой скриптовый язык по вашему вкусу.

Эту статью я уже пытался перевести в 2005, но русский текст тогда получился неуклюжий, так что этот перевод — новый и ранее не публиковался, в соответствии с требованиями НЛО. В Переводе блога Эрика Липперта этого текста тоже нет — наверное, для них он слишком стар.


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

Например, за семь лет в Microsoft я получил десятки вопросов, аналогичных по своей сути этому, заданному в конце 1990-х:
У нас есть код на VBScript, и в одной часто вызываемой функции мы определяем оператором Dim несколько переменных, которые нигде в функции не используются. Не замедляется ли каждый вызов функции из-за объявления этих переменных?
Какой интересный вопрос! В компилируемом языке, таком как Си, объявление локальных переменных общим размером n байт всего лишь вычитает n из указателя стека при входе в функцию. Если n будет чуть больше или чуть меньше, затраты времени на вычитание никак не изменятся. Наверное, в VBScript точно так же? Оказалось, что нет! Вот что я написал автору вопроса:
Читать дальше →

Что такое -1.#IND и -1.#J?

Reading time3 min
Views37K

Любой опытный программист знает, что стандарт представления значений с плавающей точкой (IEEE 754) оставляет несколько зарезервированных значений, соответствующих не-числам (NaN, not-a-number). Стандартная библиотека Visual C печатает не-числа следующим образом:
Печатается Означает
1.#INF Положительная бесконечность
-1.#INF Отрицательная бесконечность
1.#SNAN Положительное сигнальное не-число (signaling NaN)
-1.#SNAN Отрицательное сигнальное не-число (signaling NaN)
1.#QNAN Положительное несигнальное не-число (quiet NaN)
-1.#QNAN Отрицательное несигнальное не-число (quiet NaN)
1.#IND Положительная неопределённость
-1.#IND Отрицательная неопределённость
Положительная и отрицательная бесконечности могут получаться при переполнении в результате арифметического действия — например, при делении на ноль, или при взятии логарифма от положительного нуля. (По стандарту IEEE, любое значение с плавающей точкой имеет определённый знак — не только не-числа существуют в положительном и отрицательном вариантах, но и нулей тоже два.)
Сигнальные и несигнальные не-числа...

Почтовые индексы — на свободу! (Реверсинг в картинках)

Reading time4 min
Views28K
Пару лет назад я писал об использовании базы PAF (Postcode Address File) британской Королевской почты (Royal Mail) для приведения почтовых адресов, вводимых пользователями, к стандартному виду. Поскольку PAF — основная интеллектуальная собственность Royal Mail, то заполучить её не так-то просто: годовая подписка стоит от £400 в зависимости от полноты базы и от частоты апдейтов. Спустя неделю-другую после оформления подписки по почте приходит солидная красная коробочка с CD-диском:


На диске — EXE-файл, который запрашивает «серийный номер» и распаковывает базу (набор CSV-файлов) на диск. Серийный номер присылают отдельно, чтобы злоумышленник, перехвативший посылку, не смог бы воспользоваться базой. (Вот выдумают же — текстовый файл с серийным номером!) Номер у каждого клиента свой, чтобы в случае «утечки» было ясно, к кому предъявлять претензии. Впрочем, организовать «утечку» самих данных серийный номер никак не мешает, и на WikiLeaks в 2009 г. появилась база Postzon (одна из составляющих PAF). В комментариях к ней отмечено, что "данная база составлена на средства налогоплатильщиков, и активисты, в их числе газета The Guardian и сэр Тим Бернерс-Ли, уже давно пытаются убедить Royal Mail открыть свободный доступ к PAF; но до сих пор эти попытки не увенчались успехом". Впрочем, через год после появления Postzon на WikiLeaks аналогичная по содержанию база появилась в открытом доступе от имени британской картографической службы Ordnance Survey и под названием OS Code-Point Open — таким образом и Royal Mail сохранила лицо, не уступив требованиям активистов, и утёкшие данные официально получили статус общедоступных. Тем не менее, полностью PAF до сих пор необщедоступна. (Пока я готовил эту статью, Postzon и с WikiLeaks куда-то пропала; но гугл всё помнит.)

Спустя год после получения PAF мне понадобилось в неё снова заглянуть, но листочек с серийным номером, присланный отдельно от диска, за год успел куда-то затеряться. Тут мне и стало интересно — насколько сложно будет обойти проверку серийного номера в продукте таком солидном и так яростно защищаемом от «освободителей информации»? Через полчаса данные были у меня на винте, а сама программа-распаковщик мне показалась неплохим демонстрационным примером для начинающих реверс-инженеров. Никакая IDA не потребуется — только бесплатные и быстроустанавливаемые инструменты.

Суровые ассемблерщики, которых боится даже Касперский, наверняка сочтут данный пример игрушечным, и, позёвывая, пролистают весь остаток статьи. Ну и ладно — туториалы в стиле «как нарисовать сову» меня раздражают намного больше, чем те, в которых разжёвываются простые вещи.
Читать дальше →

Пираты XX века

Reading time21 min
Views35K
В 1990-х годах рынок ПО в свежеобразованной России развивался активно, но несколько однобоко: основную часть программ на ПК составляли зарубежные программы со снятой (или изначально отсутствовавшей) защитой от копирования; зачастую одни и те же отечественные умельцы переводили программу на русский язык (порой — затирая исходные копирайты), разбирались с защитой от копирования, и в итоге продавали программу по цене носителя и безо всякой поддержки. Это отличалось от современной варез-сцены, полуподпольной и целиком виртуальной: российские продавцы чужого ПО нисколько не скрывались, наоборот — они давали рекламу в журналах, выпускали вполне физические дискеты и (позднее) CD-диски, и в компьютерных магазинах ими были заставлены целые полки. Понятно, что отечественная разработка ПО в такой среде была не слишком жизнеспособна: уже упомянутый Лексикон — программа вполне достойного качества, которую свежеобразованные российские бизнесмены попытались поставить на коммерческие рельсы — покупался «легально» хорошо если одним пользователем из ста.

(Когда я только поступил на матмех, наш профессор нас предупреждал: "Даже не рассчитывайте, что в России вы сможете программированием зарабатывать себе на жизнь. Из отечественных софтверных компаний прибыль имеет только 1С, да и та лишь потому, что нормативные документы меняются каждый год, и украденная версия софта через год становится бесполезной. Наверное, это такая государственная политика по поддержке программистов — менять каждый год требования к бухгалтерии.")

Поэтому естественно, что журналы 1990-х годов активно обсуждают сложившуюся неблагоприятную для программистов ситуацию, и предлагают способы на неё повлиять. Все сходятся в том, что засилье пиратства — черта переходного периода, вызванная временным недостатком интереса западных правообладателей к российскому рынку; и что уже через несколько лет рынок ПО в России разовьётся в аналогичный европейскому. Но и сейчас, пятнадцать лет спустя, отношение обывателя к авторскому праву на ПО мало изменилось. Значит, некоторые рекомендации той поры остаются актуальными до сих пор.

В прошлый раз я пообещал опубликовать статью Ольги Усковой — ныне обладательницы стольких наград и почётных званий, что ими удалось наполнить целую статью на Википедии:



(КомпьютерПресс, январь 1995)
В предлагаемой статье поднимет тему маркетинга программных продуктов в России вице-президент фирмы Cognitive Technologies О.А.Ускова.

Как продавать программы в России,

или Ягодки коммерческого директора


Полтора года назад в России бытовало представление, что программа — это такая штука, которую ученые чудаки или наивные инофирмы бесплатно предоставляют находчивым российским пользователям. Иметь лицензированную копию считалось так же стыдно, как покупать билет в общественном транспорте или соблюдать правила дорожного движения. Обсуждение психологических аспектов этой проблемы пришлось бы начинать со времен Ивана Грозного…
Читать дальше →

О срезании углов

Reading time2 min
Views40K
Давным-давно, когда разрабатывалась файловая система Unix, в ней появились «псевдо-файлы» . и .., чтобы упростить перемещение между каталогами. Кажется, .. был добавлен в Версии 2, когда файловая система стала иерархической (в первой версии она была устроена совсем по-другому). Но эти «псевдо-файлы» засоряли вывод ls, и то ли Кен, то ли Деннис добавил в код ls простую проверку:
if (name[0] == '.') continue;
На самом деле программы тогда писались на ассемблере, но суть проверки была в точности такой.
Правильнее было бы реализовать эту проверку более развёрнуто:
if (strcmp(name, ".") == 0 || strcmp(name, "..") == 0) continue;
— но какая разница, главное что всё работало.

У этого было два далеко идущих последствия.
Читать дальше →

Как убедиться, что перед вами инженер

Reading time4 min
Views23K
Нынче инженером быть так модно, что к их числу себя причисляет кто попало. Слово «инженер» почти потеряло конкретный смысл. Если вы знаете кого-то, кто, по-вашему, инженером лишь притворяется — покажите им этот тест, чтобы вывести их на чистую воду.

Тест на инженера


Вы входите в комнату, и видите, что картина висит неровно. Вы…
  1. поправляете картину;
  2. спокойно проходите мимо;
  3. покупаете САПР и проводите следующие полгода за разработкой самовыравнивающейся картинной рамки, питающейся солнечной энергией. Всё это время вы проклинаете того придурка, который догадался вешать картины на обычные гвозди. Только индус мог бы удовлетвориться таким костылём!

Настоящий инженер не выберет ни один из этих вариантов. Он впишет на полях теста «правильное решение в каждом конкретном случае будет зависеть от обстоятельств, не приведённых в условии» (см. ниже про риск), а вслух он при этом пробурчит: «и кому только пришло в голову, что картинам обязательно висеть прямо? этим чудикам из отдела маркетинга?» (см. ниже про эстетику).
Читать дальше →

Как работает мозг?

Reading time8 min
Views120K
Этот пост написан по мотивам лекции Джеймса Смита, профессора Висконсинского университета в Мадисоне, специализирующегося в микроэлектронике и архитектуре вычислительных машин.

История компьютерных наук в целом сводится к тому, что учёные пытаются понять, как работает человеческий мозг, и воссоздать нечто аналогичное по своим возможностям. Как именно учёные его исследуют? Представим, что в XXI веке на Землю прилетают инопланетяне, никогда не видевшие привычных нам компьютеров, и пытаются исследовать устройство такого компьютера. Скорее всего, они начнут с измерения напряжений на проводниках, и обнаружат, что данные передаются в двоичном виде: точное значение напряжения не важно, важно только его наличие либо отсутствие. Затем, возможно, они поймут, что все электронные схемы составлены из одинаковых «логических вентилей», у которых есть вход и выход, и сигнал внутри схемы всегда передаётся в одном направлении. Если инопланетяне достаточно сообразительные, то они смогут разобраться, как работают комбинационные схемы — одних их достаточно, чтобы построить сравнительно сложные вычислительные устройства. Может быть, инопланетяне разгадают роль тактового сигнала и обратной связи; но вряд ли они смогут, изучая современный процессор, распознать в нём фон-неймановскую архитектуру с общей памятью, счётчиком команд, набором регистров и т.п. Дело в том, что по итогам сорока лет погони за производительностью в процессорах появилась целая иерархия «памятей» с хитроумными протоколами синхронизации между ними; несколько параллельных конвейеров, снабжённых предсказателями переходов, так что понятие «счётчика команд» фактически теряет смысл; с каждой командой связано собственное содержимое регистров, и т.д. Для реализации микропроцессора достаточно нескольких тысяч транзисторов; чтобы его производительность достигла привычного нам уровня, требуются сотни миллионов. Смысл этого примера в том, что для ответа на вопрос «как работает компьютер?» не нужно разбираться в работе сотен миллионов транзисторов: они лишь заслоняют собой простую идею, лежащую в основе архитектуры наших ЭВМ.

Моделирование нейронов


Кора человеческого мозга состоит из порядка ста миллиардов нейронов. Исторически сложилось так, что учёные, исследующие работу мозга, пытались охватить своей теорией всю эту колоссальную конструкцию. Строение мозга описано иерархически: кора состоит из долей, доли — из «гиперколонок», те — из «миниколонок»… Миниколонка состоит из примерно сотни отдельных нейронов.



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

Рациональные приближения к пи

Reading time1 min
Views10K
Недавний рассказ об античной тригонометрии вдохновил меня на простую визуализацию рациональных приближений к числу :



Красная точка — значение Цзу Чунчжи.

По вертикальной оси — «длина дроби», т.е. логарифм знаменателя.

4 лучше чем 3, а 5?

Reading time6 min
Views13K
Пару лет назад я уже предлагал вниманию Хабра серию постов, составленных из сканов моих старых журналов; хотелось бы её продолжить подборкой заметок о приближающемся выпуске Pentium — первого в истории процессора, имевшего не номер, а собственное название. Недавний топик об его двадцатилетии начинался с рассказа: «Он базировался на архитектуре P5 (слово «Pentium» образовано от греческого «penta» — пять)...» — но вовсе не касается вопроса: почему нужно было придумывать изощрённое торговое название?

За год до выпуска нового процессора никто ещё не предполагал, что он выбьется из ставшего привычным числового ряда x86:

КомпьютерПресс 3'92 — А.Борзенко
Интегральная схема микропроцессора i80486 была анонсирована фирмой Intel в 1989 году на выставке Comdex в Чикаго. И хотя, очевидно, нам не долго уже осталось ждать появления нового 586-го микропроцессора, на сегодняшний день одним из самых мощных универсальных микропроцессоров является i80486.



Фирма Intel сообщила, что через ныне существующих в СНГ дистрибьюторов продано вчетверо больше микросхем, чем ожидалось ранее. Фирма будет увеличивать число своих агентов в СНГ и вложит в их обучение и воспитание в этом году около 2 миллионов долларов. Сейчас в московском офисе фирмы работают три человека, скоро их станет около 10.
Дистрибьюторами Intel являются: МП Квазар в Киеве, СП Диалог (Москва), Центр Техно (Москва), СП КАТ (Москва), МП Ком-Плюс (Зеленоград) и МП Невис в Санкт-Петербурге. В ближайшее время появятся еще пять дистрибьюторов. Большинство из них торгует микросхемами Intel только за валюту.
Проведя несколько семинаров по маркетингу для своих советских партнеров, фирма обнаружила, что лучше всего обучаются маркетингу отставные офицеры Советской Армии.
В этом году фирма переведет на русский язык и издаст достаточное количество справочных изданий о своей продукции.
Во всем мире в прошлом году фирма получила 7700 миллионов долларов прибыли.
(Newsbytes News Network, January 30, 1992)



Читать дальше →

«Digital Rain» для Windows в 314 байтах

Reading time3 min
Views27K
В комментариях к недавнему топику возникло обсуждение: до какого размера можно ужать Windows EXE, печатающий в консоли «Hello, World!» Ответ: 268 байт, меньшие файлы Windows просто отказывается загружать.

Раз для «Hello, World!» предел возможного ужатия уже достигнут, то мне стало интересно, до какой степени удастся ужать программу, делающую хоть что-нибудь более интересное.

Сначала похвастаюсь результатом: моя программа всего на 46 байт больше теоретического минимума!



base64
TVprZXJuZWwzMgAAUEUAAEwBAQC4AwABAPdlEIlFEMN4AA8BCwEFDL0UEEAAjXyNAFfraD
gQAAAzyesoDAAAAAAAQAAAEAAAAAIAAAAAAAACAgoCBAAAAAAAAAAAQAAAAAIAALFQ68AD
AAAAEgEAAAAAAABQABkAABAAAFAAGQADAAAAAAAAAAAAAAAoEQAAKAAAAAAAAAAAAAAA/9
Wr4vvrEQAAMAAAABAAADkBAAABAAAAi/df6wMAAAAzybFQV4sHgPwZdygPttyNHJvB4waN
HItQweAYwegei0RFOIhEMwKIpDPC/v///9WIJDNY/sSA/GR8Av/Vq+LFjUVcUFH/dWhWZI
tBMItAEP9wHP9VWOuiV3JpdGVDb25zb2xlT3V0cHV0QQBsEAAAAAAAAAAAAAACAAAAbBA=

(Если найдётся доброволец захостить эти 314 байт, добавлю сюда ссылку.)


Пояснения

Расшифровка сохранённых паролей в MS SQL Server

Reading time3 min
Views39K
Давным-давно, в далёкой галактике, пред-предыдущий администратор вашего SQL Server задал в нём linked server, используя специально для этой цели созданный аккаунт со сгенерированным паролем. Теперь вам с этим линком нужно что-то сделать, например перенести его на другой SQL Server; но просто так это не сделать, потому что никто не знает пароля от того аккаунта. Знакомая ситуация?

Хотя MSSQL не хранит пароли для своих аккаунтов, а хранит только их хэши, — с linked server-ами так не получится, потому что для успешной аутентикации перед внешним сервером нужно обладать паролем в открытом виде. Пароли для linked server-ов хранятся в зашифрованном виде в таблице master.sys.syslnklgns:



Но не всё так просто.
Читать дальше →

Попиксельная заливка экрана в Wolfenstein 3D

Reading time4 min
Views42K
В коде id Software порой встречаются бесподобные жемчужины. Самая знаменитая — это, конечно, 0x5f3759df, удостоившаяся даже комикса на xkcd. Здесь же речь пойдёт о заливке экрана: пиксели закрашиваются по одному в случайном порядке, без повторов. Как это сделано?

Читать дальше →

Головоломка «Test My Patience» от Check Point Security Academy

Reading time4 min
Views8.7K
Я несколько раз упоминал на Хабре программу «Check Point Security Academy»: суть её в том, что фирма Check Point летом объявила конкурс в формате «Capture the Flag», где не важен прошлый опыт участника, а важны только его способности к распутыванию кибер-головоломок. По результатам этого конкурса фирма набрала двадцать участников на трёхмесячный профессиональный курс по кибер-безопасности, и все участники с самого начала курса получают полную зарплату специалиста по КБ, под обязательство отработать в фирме два года после окончания курса.


В соревновании CTF флаг может быть даже картинкой, например такой.

Отбор участников завершился в августе, но сайт конкурса продолжит действовать до следующего лета, и я приглашаю желающих зарегистрироваться и попробовать свои силы ради спортивного интереса. Конкурс состоит из 12 головоломок различной сложности, оцененных от 10 до 150 очков.
Здесь я хочу разобрать головоломку «Test My Patience» из категории «Surprise». Она средней сложности (50 очков), и вот её полный текст:
Hi there,
We found This executable on the local watchmaker's computer.
It is rumored that somehow the watchmaker was the only person who succeeded to crack it.
Think you're as good as the watchmaker?
Note: This file is not malicious in any way
По ссылке — 32-битный бинарник для Windows, на который ругаются некоторые антивирусы, но если его всё же запустить, то выглядит он так:



Внутри бинарник зашифрован; запускаться под отладчиком он отказывается; если к нему к запущенному попытаться подключить отладчик — он моментально завершается. Вероятно, специалисты из Check Point обернули свою головоломку в крипто-пакер, позаимствованный у какой-то малвари.

Как же будем угадывать число, загаданное часовщиком?
Читать дальше →

Как же всё-таки получаются 1024 цвета в CGA? И действительно ли их 1024?

Reading time15 min
Views22K
Запощенный в 2015 г. перевод «Новый графический режим: CGA в 1024 цвета» меня сильно впечатлил, но из него я так и не понял до конца, как этот трюк работает, потому что статья написана профессионалом в области ретро-компьютерной графики, и предполагает, что читатель уже имеет некоторые познания в этой области. Хотя у моего первого компьютера («Поиск» — советский клон IBM PC/XT) и был CGA, но мониторы с композитным входом я не застал, так что мне пришлось гуглить и разбираться, как же композитное видео было устроено. Для тех, кому тоже интересно «нутро» технологий 1981 г., в которых в 2015 г. обнаружились неожиданные недокументированные возможности, я собрал воедино найденный мной материал.

1. Штатные возможности CGA


У обывателя CGA обычно ассоциируется с графикой 320x200 и четырёхцветной палитрой с кислотно-жуткими цветами, как например в играх 1983 г. Alley Cat, J-bird, Lode Runner и Tapper:




Но ограничение 320x200x2bpp накладывается лишь объёмом имеющейся на адаптере видеопамяти (16 Кб), фактически же он способен производить изображение 640x200x4bpp — с пикселями, сильно вытянутыми вертикально.
Читать дальше →

Information

Rating
Does not participate
Location
Одесса, Одесская обл., Украина
Date of birth
Registered
Activity