Search
Write a publication
Pull to refresh
54
0

Пользователь

Send message

Триггеры-защёлки: реверс-инжиниринг регистра команд в Intel 8086

Reading time9 min
Views8.1K
Микропроцессор Intel 8086 – один из самых влиятельных чипов. Порождённая им архитектура х86 и по сей день доминирует среди настольных и серверных компьютеров. И всё же этот чип ещё достаточно прост для того, чтобы его цепи можно было изучать под микроскопом и разбираться в них. В этой статье я объясню реализацию динамической защёлки [одноступенчатый триггер] – схемы, удерживающей один бит. В 8086 есть более 80 защёлок, разбросанных по всему чипу, и удерживающих различные важные биты статуса процессора, но я сконцентрируюсь на восьми из них, реализующих регистр команд и хранящих выполняющуюся команду.

У 8086-го есть более 80 защёлок. Некоторые из них хранят значения контактов AD (address/data) или управляющих контактов. Другие хранят текущий адрес микрокода и микрокоманды, а также адрес возврата из подпрограммы микрокода. В третьих хранятся биты исходного и выходного регистра команд, и АЛУ-операция команды. Во многих хранятся статусы внутреннего состояния, в которых я пока ещё разбираюсь.
Читать дальше →

Модифицируем Last Epoch — От dnSpy до Ghidra

Reading time9 min
Views16K

Last Epoch — это однопользовательская ARPG на Unity и C#. В игре присутствует система крафта — игрок находит модификаторы, которые затем применяет к экипировке. С каждым модификатором накапливается "нестабильность", которая увеличивает шанс поломки предмета


Я преследовал две цели:


  • Убрать "поломку" предмета в результате применения модификаторов
  • Не расходовать модификаторы при крафте

cut

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

Реверс-инжиниринг и анализ карточки SanDisk High Endurance microSDXC

Reading time11 min
Views9.3K
Для тех, кому лень читать: карты SanDisk High Endurance используют флэш-память SanDisk/Toshiba 3D TLC. На то, чтобы установить это, у меня ушло гораздо больше времени, чем должно было (и всё из-за SanDisk!).

Ранее я рассматривал microSD карточки от SanDisk, предназначенные для использования в приложениях, требующих интенсивной записи данных, вроде видеорегистраторов. Тогда я изучил результаты тестов на скорость и поразмышлял о том, какого типа NAND Flash используется в карте. SanDisk не публикует детальных описаний внутренностей карт, поэтому мне ничего не оставалось, как самому заняться реверс-инжинирингом карточки.

Техническая поддержка, которая не справилась


Надеясь нарыть информации, я отправил емейл в поддержку SanDisk с вопросом о том, NAND Flash какого типа они используют в своей линейке High Endurance, а также о метриках на выносливость – таких, как количество циклов P/E (Program/Erase), и общего количества записанных терабайт (TBW). К сожалению, сотрудник поддержки SanDisk не смог дать удовлетворительных ответов на мои вопросы, поскольку они не дают информации, не указанной в опубликованных спецификациях. Мне сообщили, что во всех их карточках используется MLC Flash, что можно считать верным, если называть TLC Flash 3-bit «MLC» (как делает Samsung).
Читать дальше →

Руткиты на основе BIOS. Часть 1

Reading time8 min
Views9.6K


Привет, Хабровчане!
В конце августа в OTUS запускается 2 мощных курса по обратной разработке кода (реверс-инжиниринг). В связи с этим приглашаем вас на День Открытых дверей, где Артур Пакулов (Ex-вирусный аналитик в Kaspersky Lab.) расскажет подробнее о программах, особенностях онлайн-формата, навыках, компетенциях и перспективах, которые ждут выпускников после обучения. А также приглашаем вас принять участие в бесплатных открытых уроках: «Анализ буткита» и «Анализ банковского трояна».



Предпосылки


Все описанное здесь основано на проекте, который я завершил в начале 2011 года, спустя аж несколько лет после его начала. Принимая участие в CanSecWest в 2009 году, Анибал Сакко и Альфредо Ортега из Core Security провели презентацию «Persistent BIOS Infection», где продемонстрировали, как можно пропатчить BIOS, чтобы совершить некоторые неприятные/удивительные вещи. Можете ознакомится с их докладом здесь. На то время это действительно впечатляло, но мне так и не выпал шанс попробовать это на практике. Год спустя мне нужно было подготовить групповой проект для учебы, поэтому я решил вернуться к взлому BIOS и самостоятельно реализовать что-нибудь из этого.

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

Регистры процессора Intel 8086: от чипа к транзисторам

Reading time10 min
Views20K
Intel 8086 – один из самых влиятельных из когда-либо созданных компьютерных чипов. Он создал архитектуру x86, доминирующую в современных настольных и серверных компьютерах. Я занимался реверс-инжинирингом 8086 на основе фотографий кристаллов, и в данной статье я опишу реализацию регистрового файла (набора регистров).


Кристалл 8086. Отмечено место хранения регистров. Верхние регистры используются блоком интерфейса шины для доступа к памяти, а нижние регистры общего назначения используются исполнительным блоком. Буфер команд – это 6-байтная очередь, состоящая из заранее запрошенных команд.
Читать дальше →

Как реализованы JIT-компиляторы

Reading time17 min
Views14K

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

Чтобы получить базовое представление о JIT-компиляторах, почитайте эту статью.

Небольшое примечание:

Я часто буду описывать поведение оптимизации и утверждать, что она, вероятно, есть и в каком-нибудь другом компиляторе. Хотя я не всегда проверяю, есть ли эта оптимизация в другом JIT (иногда всё неоднозначно), но если знаю точно, то укажу на это. Я также приведу примеры кода, чтобы показать, где может быть применена оптимизация, но это не точно, ведь приоритет может быть отдан другой оптимизации. Могут быть и какие-то общие упрощения, но не больше, чем в большинстве подобных постов.

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

Временные ограничения для внешних интерфейсов ПЛИС

Reading time11 min
Views8.3K
Здравствуйте. В данной статье я хочу по возможности максимально просто и понятно рассказать о том, как рассчитываются временные ограничения (timing constraints) на синхронные интерфейсы ПЛИС. Просто — не значит коротко, но зато простыми словами, которые вы сможете легко понять. Если вы новичок и перед вами стоит задача описать свой первый SPI, то данная статья должна вам помочь понять для чего нужны ограничения и как их рассчитать.
Читать дальше →

Делаем голову шинного USB-анализатора на базе комплекса Redd

Reading time14 min
Views5.5K
В прошлой паре статей мы рассмотрели пример «прошивки» для комплекса Redd, делающей его ПЛИСовую часть логическим анализатором общего применения. Дальше у меня было желание сделать следующий шаг и превратить его в шинный USB-анализатор. Дело в том, что фирменные анализаторы такого вида очень дорогие, а мне необходимо провести проверку, почему одна и та же USB поделка, если её подключить к машине, работает, а если включить машину, когда всё уже воткнуто в разъём, не работает. То есть, программные анализаторы тут не справятся. По мере написания я как-то увлёкся и написал блок из пяти статей. Теперь можно сказать, что в них показан не только сам анализатор, но и типовой процесс его создания в режиме «на скорую руку». В статье будет показано, как сделать такой анализатор не только на базе Redd, но и на готовых макетных платах, которые можно приобрести на Ali Express.


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

Запускаем камеру от телефона, или что делать, когда ничего не получается?

Reading time6 min
Views111K


Лет восемь назад работал я в одном… а в прочем, не важно где. Делали мы там всякие разные интересные вещи. В том числе занимались системами технического зрения для роботов. Роботы были немного маленькие. И если привод для них маленький сделать не было для нас особой проблемой, то вот сделать миниатюрную цифровую камеру, которая не была бы размером с половину робота, было трудно (когда же мы наконец похороним PAL в таких разработках и везде будет цифра?). Если вам любопытно узнать, чем же всё закончилось, прошу под кат!

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

Самая доступная плата для экспериментов с SoC'ом MCU&FPGA

Reading time2 min
Views11K
Технологии шагают вперёд. И вот уже несколько лет как есть SoC’и MCU+FPGA. И на
КДПВ платка как раз с таким SoC’ом.

image

Это — Microsemi SmartFusion 2 Maker-Board. Кому интересно, что это за плата прошу под кат. Будет краткий обзор.
Читать дальше →

Разработка простейшего логического анализатора на базе комплекса Redd

Reading time14 min
Views5.7K
В прошлой статье цикла мы потренировались сохранять данные из потокового интерфейса в память средствами DMA. Пришла пора сделать какую-то полезную поделку, используя полученные навыки. Очень полезная при удалённой отладке вещь — анализатор. Вообще, при работе с комплексом скорее нужны специализированные шинные анализаторы, но начинать лучше с чего-то попроще. Поэтому сейчас мы сделаем простейший логический анализатор на 32 канала. Понятно, что он будет совсем-совсем примитивным, но зато мы сделаем его своими руками. У кого ещё нет комплекса Redd, могут повторить опыт, используя любую макетную плату с ПЛИС фирмы Altera (Intel) и микросхемой ОЗУ. Итак, приступаем.


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

Войны 68000, часть 3: мы сделали компьютер Amiga, а они его испоганили

Reading time18 min
Views9.2K

Amiga 1000

До этого: << Войны 68000, часть 2: возвращение Джека

Медовый месяц Commodore/Amiga вряд ли мог быть более идиллическим. Commodore удовлетворила пожеланиям команды разработчиков Amiga, и не стала переселять их в свою штаб-квартиру в Уэст-Честере, Пенсильвания. Вместо этого их переселили всего на десять километров от их переполненных офисов в Санта-Кларе, Калифорния, в новые, просторные помещения в Лос-Гатосе, вокруг которых раскинулся ухоженный сад и дорожки для прогулок. Всё это придавало месту атмосферу университетского кампуса. Их оборудование обновили соответственно; вместо того, чтобы сражаться за использование стареющих рабочих станций Sage IV, у каждого человека, игравшего сколь-нибудь значительную роль в техническом плане, теперь была собственная новейшая рабочая станция от Sun. А лучше всего было то, что в Commodore знали, когда нужно не давить на людей. Они их переселили, дали им оборудование и оставили в покое. «Commodore, — говорит Р. Дж. Микал, — предприняла наилучшее из всех возможных действий для обеспечения успеха купленного ею продукта. Она оставила нас в покое». В ранние дни все они «испытывали глубокую признательность к Commodore». Ещё бы – после всего того, что они пережили перед этим.

Разработка компилятора для TypeScript на TypeScript на базе LLVM

Reading time21 min
Views9.1K


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

А что из этого вышло, Дмитрий изложил на прошедшей HolyJS 2019 Moscow. Под катом вы найдете видео и конспект его доклада.

Пишем игру «Жизнь» для NES на Rust

Reading time12 min
Views5.8K
image

Этот пост — о программе на Rust…

$ cargo install conway-nes

…выводящей двоичный файл NES…

$ conway-nes > life.nes

…в котором выполняется конвеевская игра «Жизнь»!

$ fceux life.nes    # fceux is a NES emulator

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

Приточная вентиляция совмещенная с канальным кондиционером (часть 1 — электрическая)

Reading time11 min
Views87K

схема_малая


Хочу поделиться опытом проектирования, монтажа и эксплуатации своей системы приточной вентиляции совмещенной с канальным кондиционером. Система
собиралась в 2012-2013 годах и с тех пор находится в постоянной эксплуатации.


Статью разделил на две части:


  • в первой части описана классическая схема приточная вентиляции с использованием электрического канального подогревателя
  • во второй части рассказано про неоднозначный опыт переработки системы под водяной калорифер с питанием от общедомовой системы отопления
Читать дальше →

Разработка прошивки для аналоговой видеокамеры EVR-Y2022F

Reading time26 min
Views5.8K
В предыдущей статье было очень подробно рассмотрено устройство аналоговой видеокамеры с целью создания собственной прошивки. Как уже было сказано, камера имеет микроконтроллер неизвестного происхождения. Он гораздо богаче, чем привычные мне AVR: у него два напряжения питания 3.3В и 1.8В, а также, у него есть функция DSP. К такому выводу я пришёл, когда задумался про реализацию алгоритма автофокусировки. Тем не менее, я не предпочитал сложные МК типа STM32 и прочие, хотя бы потому, что я с ними вообще никогда не работал. Мной однозначно было принято решение, что для реализации своей прошивки я буду применять один из МК AVR. Поэтому уже на этом этапе я начал осознавать, что с реализацией функции автофокусировки будет не очень легко справиться, а точнее – невозможно.
Читать дальше →

Чем развлечься в самоизоляции, или передаем данные с помощью звуковой карты

Reading time4 min
Views13K
Привет Хабр.

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



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

Обратная разработка аналоговой видеокамеры

Reading time25 min
Views18K

Ранее на Хабре я публиковал статьи, связанные с системой аналогового видеонаблюдения. В частности, были статьи, связанные с изучением файловой системы HDD видеорегистратора (DVR). В данной статье речь пойдёт про обзор навороченной аналоговой видеокамеры модели Evidence EVR-Y2022F с точки зрения пользователя и подробное изучение её устройства с инженерной точки зрения.

В настоящее время чаще применяется современная система видеонаблюдения на базе сетевых IP камер и соответствующего видеорегистратора. Однако, прежде всего, за счёт невысокой цены, аналоговая система видеонаблюдения всё ещё остаётся актуальной. Существует множество аналоговых видеокамер. Помимо характеристик качества изображения, есть ряд других характеристик, в частности, наличие интерфейса PTZ. Данный интерфейс позволяет управлять видеокамерой по линии RS-485 по протоколу PELCO-D с помощью DVR. Это, как правило, купольные камеры, которые можно вращать, изменяя ракурс видео. Реже встречаются камеры с интерфейсом PTZ, которые поддерживают управление оптическим зумом и фокусировкой (фокусом). Именно о такой камере пойдёт речь в данной статье.
Читать дальше →

Замерли улицы городов в режиме ЧП: самое время оживить город из конструктора

Reading time3 min
Views5.9K
Детский ночник для умного дома от нечего делать.

image

Шла третья неделя карантина… Все, что нужно было закончить по работе- закончено, все фильмы, которые хотел посмотреть- просмотрены, вся электроника в доме починена. Однообразие начало заполнять домашнее пространство. И тут пришла на ум идея, которая заняла меня и сына на целую неделю вперед- «градостроительство» с интеграцией в систему умный дом в качестве ночника.
Читать дальше →

Восстановление стертой информации во Flash памяти на физическом уровне

Reading time8 min
Views24K
На Хабре появились интересные статьи (например), о том как стереть информацию на Flash SSD накопителе, так, что бы информация действительно была стерта. Производители заявляют, что обычное стирание не гарантирует невозможность восстановления информации, и рекомендует использовать специальные функции стирания, которые сотрут не только таблицы размещения блоков данных, но и собственно сами блоки данных в памяти, содержащие стираемую информацию. А можно ли восстановить полноценно стертую информацию во Flash памяти? Не просто найти неиспользуемые области, в которых сохранились «ошметки» более не нужной (якобы стертой) информации, а именно восстановить исходное значение битов памяти после физического процесса стирания этих бит? Наш интерес к этой теме вызван не попыткой найти что-то тайное, а наоборот, дать рекомендации как стереть, чтобы никто не нашел (или правильней сказать затруднить). Сейчас в ряде приборов заложены алгоритмы 10 и более кратных процедур стирания, что во-первых, долго, а во-вторых, расходует ресурс Flash памяти и быстро выводит ее из строя. Но для того, что бы рекомендации были не абстрактные «сотрите дважды» или «сотрите, запишите и еще раз сотрите», а имели некое количественное выражение, нужно сначала научиться восстанавливать информацию. Интересно? Тогда поехали…

image

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

Information

Rating
Does not participate
Date of birth
Registered
Activity