Обновить
15
0
Maksim Suvorov@maksimsuvorov

Information security engineer

Отправить сообщение

Геометрия данных 2. Определение ди- и би-координат

Время на прочтение10 мин
Охват и читатели7K
В первой статье определен метрический базис на элементах, — набор вершин симплекса или графа с известными значениями скалярных произведений (грамиан) или связей (лапласиан) между ними. Здесь рассмотрим, как на таком базисе определить координаты элементов.



Дистанционные координаты


Дистанционные координаты представляют собой значения скалярных произведений элемента и реперов — вершин базиса. Будем именовать их ди-координатами.
Читать дальше →

Реверс-инжиниринг первых умных часов Seiko UC-2000

Время на прочтение32 мин
Охват и читатели34K


Где-то в конце 1983 — начале 84 года, японская компания Seiko начала продавать первые в истории компьютеризированные часы — Seiko Data-2000 и Seiko UC-2000. Data-2000 имели возможность хранить 2КБ заметок, их нужно было вводить с помощью специальной компактной клавиатуры, которая шла в комплекте. UC-2000, по сути, те же Data-2000 с корпусом другого цвета, но они уже позиционировались как часть Наручной Информационной Системы, которая, среди прочего, включала терминал UC-2200, представляющий из себя компьютер с Z80-совместимым процессором, интерпретатором Бэйсика и термопринтером, но без экрана, в качестве которого использовались часы (как это не странно). Среди прочего, терминал давал возможность загружать на часы приложения со специальных картриджей. Подробнее о линейке ранних умных часов Seiko можно почитать, например, в этой статье. В этом же посте я расскажу, как написал (возможно) первую, за более чем 33 года, программу для этих часов.

Введение в реверс инжиниринг с Radare2

Время на прочтение6 мин
Охват и читатели48K

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

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

5 правил работы с суммами

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


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

OllyDbg 2.01

Время на прочтение15 мин
Охват и читатели113K
image

Релиз OllyDbg 2.01 прошел незаметно и не был освещен на Хабре. Вместе с 2 версией автор выпустил дизассемблер по лицензии GPL v3. В конце октября была анонсирована будущая поддержка х64.
Читать дальше →

Памятка пользователям ssh

Время на прочтение13 мин
Охват и читатели1.6M
abstract: В статье описаны продвинутые функций OpenSSH, которые позволяют сильно упростить жизнь системным администраторам и программистам, которые не боятся шелла. В отличие от большинства руководств, которые кроме ключей и -L/D/R опций ничего не описывают, я попытался собрать все интересные фичи и удобства, которые с собой несёт ssh.

Предупреждение: пост очень объёмный, но для удобства использования я решил не резать его на части.

Оглавление:
  • управление ключами
  • копирование файлов через ssh
  • Проброс потоков ввода/вывода
  • Монтирование удалённой FS через ssh
  • Удалённое исполнение кода
  • Алиасы и опции для подключений в .ssh/config
  • Опции по-умолчанию
  • Проброс X-сервера
  • ssh в качестве socks-proxy
  • Проброс портов — прямой и обратный
  • Реверс-сокс-прокси
  • туннелирование L2/L3 трафика
  • Проброс агента авторизации
  • Туннелирование ssh через ssh сквозь недоверенный сервер (с большой вероятностью вы этого не знаете)
Читать дальше →

Анализ Crackme #1 от PE_Kill

Время на прочтение9 мин
Охват и читатели13K

Предисловие



Я уже долгое время ничего не исследую, так сказать ушел на покой. Но тут мне на глаза попалась очередная поделка немало известного в определенных кругах PE_Kill'a. Т.к. мне довелось решать его предыдущую поделку в рамках CRACKL@B Contest 2010, которая в свою очередь была довольно интересна, я решил взглянуть на его новое «детище».

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

Как воскресить Ягуара за тысячу часов?

Время на прочтение15 мин
Охват и читатели19K
imageБывает меня спрашивают — как я пишу эмуляторы? Попробую ответить на примере одной провалившейся консоли.

Эмуляция — почти бесконечное занятие, всегда остаются неточности, и если меня спросят сколько я потратил на эмуляцию 3DO, то я лишь пожму плечами, но одно знаю точно — с эмуляцией 3DO все очень хорошо. Поэтому пришло время найти новую жертву и ей оказался Atari Jaguar. 1000 часов — примерно столько я потратил на разработку ядра эмуляции данной консоли в проекте «Феникс», и вероятно еще столько же понадобится, чтобы поднять совместимость с текущих 95% до 99%, а оставшийся 1% потребует еще, возможно не одну тысячу часов, но это уже отдельные скучные истории про отладку едва уловимых глюков.
Читать дальше →

Сложно ли сделать из мухи слона?

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


Сальвадор Дали. Искушение св. Антония. 1946. (Фрагмент).
Бельгийский Королевский музей изящных искусств (Брюссель).

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

Пишем для UEFI BIOS в Visual Studio. Часть 3 — русифицируем Front Page

Время на прочтение19 мин
Охват и читатели16K

Введение


В этой статье мы создадим русский шрифт и русифицируем с его помощью главную страницу настроек из имеющегося в edk2 примера.



Кого заинтересовало — прошу пожаловать под кат.
Читать дальше →

Немного о безопасности терминалов в МФЦ

Время на прочтение3 мин
Охват и читатели41K
Всем привет!

Недавно занесла меня нелёгкая в МФЦ (для тех, кто вдруг не в курсе, МФЦ — это многофункциональный центр по предоставлению государственных и муниципальных услуг, т. е. всевозможные бумажки делаются здесь). Пока ждал своей очереди, мозг усиленно искал какой-нибудь способ провести время с интересом и с пользой. И тут мой взгляд упал на одиноко стоящие терминалы для доступа к Госуслугам:


(на фотографии терминал уже после моих манипуляций).
Читать дальше →

Взлет и падение начинающего фрикера

Время на прочтение5 мин
Охват и читатели88K
Я долго собирался написать что-нибудь эдакое на хабр, вынашивал идеи всяких статей на очень умные темы. Но вместо этого я сейчас опишу один автобиографичный эпизод, которым я очень даже горжусь в техническом плане, но о котором безумно сожалею в моральном.

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

Ад рендера v.2.0. Книга первая. Обзор

Время на прочтение5 мин
Охват и читатели21K

Отсебятина


Наткнулся год назад на ряд очень интересных статьей господина Simon. Саймон очень любит разбирать то, как создаются игры, а именно графические решения того или иного элемента в игре. Начиная от сколов на гранях плит, заканчивая тем, как реализовано отрезание кусков от объектов. Но особенно интересным представляется его ряд статей под общим названием «Ад рендера» (Render Hell), в котором он подробно разбирает, как на уровне железа (да и программно тоже) происходит рендер 3D-объектов.

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

Ну что, начнем?

Linux: перенаправление

Время на прочтение5 мин
Охват и читатели92K
Если вы уже освоились с основами терминала, возможно, вы уже готовы к тому, чтобы комбинировать изученные команды. Иногда выполнения команд оболочки по одной вполне достаточно для решения некоей задачи, но в некоторых случаях вводить команду за командой слишком утомительно и нерационально. В подобной ситуации нам пригодятся некоторые особые символы, вроде угловых скобок.



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

«Магическая константа» 0x5f3759df

Время на прочтение9 мин
Охват и читатели132K
В этой статье мы поговорим о «магической» константе 0x5f3759df, лежащей в основе элегантного алгоритмического трюка для быстрого вычисления обратного квадратного корня.

Вот полная реализация этого алгоритма:

float FastInvSqrt(float x) {
  float xhalf = 0.5f * x;
  int i = *(int*)&x;  // представим биты float в виде целого числа
  i = 0x5f3759df - (i >> 1);  // какого черта здесь происходит ?
  x = *(float*)&i;
  x = x*(1.5f-(xhalf*x*x));
  return x;
}

Этот код вычисляет некоторое (достаточно неплохое) приближение для формулы

image

Сегодня данная реализация уже хорошо известна, и стала она такой после появления в коде игры Quake III Arena в 2005 году. Её создание когда-то приписывали Джону Кармаку, но выяснилось, что корни уходят намного дальше – к Ardent Computer, где в середине 80-ых её написал Грег Уолш. Конкретно та версия кода, которая показана выше (с забавными комментариями), действительно из кода Quake.
В этой статье мы попробуем разобраться с данным хаком, математически вывести эту самую константу и попробовать обобщить данный метод для вычисления произвольных степеней от -1 до 1.

Да, понадобится немного математики, но школьного курса будет более, чем достаточно.
Читать дальше →

Что за черт, Javascript

Время на прочтение17 мин
Охват и читатели171K


Этот пост — список забавных и хитрых примеров на JavaScript. Это отличный язык. У него простой синтаксис, большая экосистема и, что гораздо важнее, огромное сообщество.


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

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

Избранное: ссылки по reverse engineering

Время на прочтение10 мин
Охват и читатели82K


Всем привет!


Сегодня мы хотели бы поделиться своим списком материалов по тематике reverse engineering (RE). Перечень этот очень обширный, ведь наш исследовательский отдел в первую очередь занимается задачами RE. На наш взгляд, подборка материалов по теме хороша для старта, при этом она может быть актуальной в течение продолжительного времени.


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


Забавный факт: нам показывали, как некоторые компании рассылают наш список материалов от себя, но только в очень старой редакции. И вот после этой публикации они, наконец, смогут использовать его обновленную версию с чистой совестью ;)


Итак, перейдем к списку материалов!

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

Прокачиваем NES Classic Mini

Время на прочтение15 мин
Охват и читатели96K
На geektimes.ru недавно была статья о том, что «умельцы» взломали NES Classic Mini. Однако, там даже не упомянули о том, что это сделали русские. Нет, не я, а человек под ником madmonkey. Я же сразу решил написать приложение под Windows с дружелюбным интерфейсом, чтобы это можно было делать в пару кликов. В этой статье я хочу рассказать более детально о сути «взлома», о том, как в NES Mini всё устроено, и о трудностях, с которыми пришлось столкнуться.

И да, я опять предлагаю своё изложение в двух вариантах: видео и традиционная текстовая статья. Кому как больше нравится.

Как EA усложнили нам жизнь, или как мы чинили баг 12-летней давности

Время на прочтение9 мин
Охват и читатели44K
Иногда в программы закрадываются баги. Причем закрадываются так, что обнаружить их получается лишь через много-много лет после выпуска, когда чинить их уже нерентабельно. Иногда такие баги оказываются слишком критическими, чтобы их игнорировать. Поэтому под катом я расскажу, как мы устраняли один такой критический баг в одной старенькой гонялке. А заодно наглядно продемонстрирую, чем плох float, какие могут быть последствия и как с этим бороться.

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

Как мы искали и нашли ошибку в Visual Studio C++

Время на прочтение5 мин
Охват и читатели24K
Это был чудесный летний день. За окном сияли тучки, нежными голосами пели вороны, на автомойке весело пачкали шампунем чью-то машину, за стеной тихо скрёбся перфоратор — в общем, идиллия.

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

Предыстория


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

Я был уверен, что уже знаю подводные камни такого перехода, и что задача займёт не более часа работы.
Читать дальше →

Информация

В рейтинге
Не участвует
Работает в
Зарегистрирован
Активность