Обновить
126.92

Реверс-инжиниринг *

Расковырять и понять как работает

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

Впадаю в детство с ZX Spectrum

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

Обычный, пятничный, вечер... Сижу, ни кого не трогаю (с) смотрю ютюбчик, отдыхаю... Попадаю на просмотр прохождения игры Oberon 69, в процессе рассказа об игре, выясняется, что на Spectrum она была только на Испанском и только на кассете, была дискетная версия от Max Iwamoto, полу англифицированная... И такА вдруг тоска ностальгия меня взяла и переживание за несправедливость... Решаю, что раз никто, тогда Я! Будем а) дискетизировать, б) англифицировать, в) русифицировать.

Наливаем горячего и погружаемся

(Не)случайные числа в VBA Excel Ч. 2

Уровень сложностиСредний
Время на прочтение20 мин
Охват и читатели7.2K

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

Читать далее!

Как воссоздать код DOS-игры: пошаговое дизассемблирование ретро-игр

Уровень сложностиСложный
Время на прочтение12 мин
Охват и читатели6K

Устаревшие технологии не исчезают. Они просто уходят в подполье: в архивы, на дискеты, в память тех, кто помнит, как это было. DOS-игры не просто программы. Это произведения инженерного искусства, созданные в эпоху, когда каждый байт имел значение, а каждый такт процессора, вес. Они работали на железе, которое сегодня кажется примитивным, но при этом умели то, что многим современным системам не под силу: дышать.

Моя первая игра была на дискете. Она называлась Syndicate (1993, Bullfrog Productions), и я не понимал, как она работает. Я видел, как агенты стреляют, как взрываются здания, как звучит саундтрек, но не имел ни малейшего представления, что за этим стоит.

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

Спустя годы я вернулся к этим играм не как игрок, а как исследователь. И понял: они — лучшая школа программирования, которую только можно себе представить.

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

DOS-игры - другое дело: нет виртуальных машин; нет сборщиков мусора; нет драйверов. Есть только процессор, память и код, написанный на C/C++ или ассемблере. Это делает их идеальной школой для изучения реального программирования.

Дизассемблирование таких игр — это не про взлом. Это археология программирования: вы не ломаете систему, а восстанавливаете её логику по обломкам машинного кода, как археолог, собирающий мозаику из черепков.

Исследовать

Домофон Лидер-М. Как скрестить трубку с ключом и всем проиграть

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели16K

Приветствую всех!

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

В конце девяностых появилась ещё одна схема, использовавшаяся в малораспространённых питерских домофонах. Чем она была примечательна и почему она так и не получила распространения? Сейчас и узнаем.

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

(Не)случайные числа в VBA Excel Ч. 1

Уровень сложностиСредний
Время на прочтение14 мин
Охват и читатели7.9K

Первая часть из моего цикла исследований, посвященного генерации псевдослучайных чисел в скриптовом языке VBA, используемого в офисных приложениях от Microsoft.

Погрузиться в мир псевдослучайных чисел!

Занимательная некромантия 01H: ломаем программу под MS-DOS

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

Давным-давно, когда F11 и F12 еще не придумали, F1-F10 располагались слева, Ctrl жил на месте CapsLock, а IBM продавала компьютеры с гарантией на 90 дней, владельцы компьютеров работали в MS-DOS. Процессор еще не знал, что такое защищенный режим, память не делилась на области пользователя и ядра, виртуальной памяти не было, как не было и многозадачности. MS-DOS программа на счет "раз" нарушала работу ядра и компьютер приходилось перезагружать. Программы скромно умещались в 64 Кб, а, если превышали это ограничение, жизнь их становилась труднее.

Дизассемблируем 16-битную программу: InDuLgEo V3-B горит пламенем на экране, печатает текст и трезвонит, как старый телефон.

Вперед к 16 битам

Как Go зависает на Windows в CancelIoEx: история одного бага

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

Я не считаю себя специалистом по Go и лишь изредка обращался к этому языку, но хочу поделиться историей об одном баге на стыке Go и ядра Windows, с которым мне «посчастливилось» столкнуться.

Баг до сих пор остаётся актуальным (issue на GitHub), хотя есть основания надеяться, что он будет исправлен в следующем релизе Go.

Тем не менее, если звёзды сойдутся неудачно и ваша программа на Go внезапно зависнет у клиента в вызове CancelIoEx, а воспроизвести и проанализировать проблему не удастся, то, надеюсь, приведённый ниже материал поможет понять её причины и попробовать обойти проблему.

Читать далее

Как мыслит дизассемблер: внутренняя логика decompiler-инструментов на примере Ghidra и RetDec

Уровень сложностиСложный
Время на прочтение4 мин
Охват и читатели2.3K

Декомпиляция — это не магия, а очень упрямый, скрупулёзный и грязноватый процесс, где каждый байт может оказаться фатальным. В этой статье я разложу по винтикам, как мыслят современные декомпиляторы: как они восстанавливают структуру кода, зачем строят SSA, почему не верят ни одному call’у на слово, и как Ghidra и RetDec реализуют свои механизмы под капотом. Это не глянцевый обзор, а техразбор, вплоть до IR, реконструкции управляющего графа и попытки угадать типы переменных там, где они уже испарились. Будет сложно, но весело.

CALL more_text

Оживляем дисплей из кабины лифта

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

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

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

Двадцать пятый этаж

Прыгаем на «батуте в космос», а приземляемся в XVIII веке. История одной пружины

Уровень сложностиПростой
Время на прочтение8 мин
Охват и читатели2.6K

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

Читать далее

Geely и ECARX, что с вами не так?

Уровень сложностиСредний
Время на прочтение23 мин
Охват и читатели9.3K

Периодически читая Хабр, я еще не находил статей, описывающих внутренний мир штатных головных устройств (далее — ГУ) на базе Android, хотя я уверен, что не только мне было бы интересно, как там всё устроено и работает. Речь пойдет про одни из самых популярных авто на нашем рынке: Geely Coolray и частично Geely Tugella.

Эта статья обещает быть длинной с вырезками кода из JADX и не только, добро пожаловать под кат.

Читать далее

Получаем root через iptables

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

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

Читать далее

Novomatic Coolfire. Самый навороченный игровой автомат двухтысячных

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

Приветствую всех!

Пару лет назад я уже рассказывал про игровые автоматы. И вот сейчас ко мне в руки попало довольно интересное железо — Novomatic Coolair, игровая платформа от одного из самых продвинутых производителей такого оборудования. Сегодня мы узнаем, как были устроены «топовые» игровые автоматы и как заставить работать начинку от них. Заодно соберём своего «механического гангстера», выиграем первый миллион и тут же его проиграем. Как водится, будет много интересного.

Congratulations! Jackpot won!

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

Моддим Wwise-озвучку God of War. Часть I — чебурашимся в файлах

Уровень сложностиСредний
Время на прочтение11 мин
Охват и читатели752

Знаете, случаются в жизни иногда такие ситуации, когда человеку внезапно как вдарит что-нибудь в голову, увесистое такое, и ему захочется сотворить какую-нибудь такую несусветную чушь, какой заниматься никому в здравом уме и в голову не придет. Вот так и я решил раскопать звуковую подсистему God of war 2018 — с удивлением обнаружив, что стоящей информации по этой теме не так уж и много.

Читать далее

Обзор патентов Tesla Motors, Inc. Часть 4

Время на прочтение12 мин
Охват и читатели817

В заключительной статье будут рассмотрены следующие патенты компании Tesla Motors:

1. Быстрый заряд при низкой температуре (20150077057);

2. Технология сборки аккумуляторной батареи (20150111082);

3. Ячейка с высокоэффективной вентиляцией (20160104875).

Завершить ознакомление

Мета-ориентирование, баланс между классическим документированием и автодокументированием

Уровень сложностиПростой
Время на прочтение12 мин
Охват и читатели688

Добрый день! Меня зовут Воронин Николай, я занимаюсь автоматизацией систем отчётности и анализа в ПГК Диджитал.

Моя статья является структурированием личного опыта, полученного в конкретных условиях, он не претендует на статус best‑practice, допускает ситуации, в которых могут существовать более эффективные решения или проблема не стоит в целом.

Мета‑ориентирование — это общее название, в рамках статьи, для совокупности навыков и подходов, облегчающих понимание частных алгоритмов и потоков данных в большой системе со сложными связями между множеством объектов.

В моём случае речь пойдёт о комплексе нескольких BI систем, существующих параллельно, но сложности вполне могут возникать и в рамках одной, достаточно массивной системы отчётности.

Читать далее

Яндекс.Полуразврат или при чём тут Crypt?

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели2.5K

Яндекс выпустил новую модель для Шедеврума, которая попыталась прикрыть уязвимости, которые эксплуатировались для создания «небезопасного контента» категории 18+. Тем не менее, не всё так радужно и с «детским» режимом они очень торопятся. Некоторые уязвимости в промпте остались, а некоторые добавились. Но самое интересное – попытка спастись от «небезопасного контента» путём целенаправленной порчи датасета. Обо всём этом подробно в тексте.

Читать далее

Flare-On 11: Task 7 (2024) – Анализ и криптовзлом

Уровень сложностиСредний
Время на прочтение39 мин
Охват и читатели529

В этом разборе подробно рассматривается решение седьмого задания, сочетающего реверс-инжиниринг и анализ .NET Native AOT-приложения, создание FLIRT-сигнатур и криптоанализ эллиптической кривой.
Порядок генераторной точки оказался составным, что позволило применить метод Полига–Хеллмана и восстановить приватные ключи. После расшифровки сетевого трафика был извлечён флаг.
Эта задача удачно объединяет технический анализ исполняемого файла с практическим применением методов криптоанализа.

Читать далее

Обзор патентов Tesla Motors, Inc. Часть 3

Время на прочтение7 мин
Охват и читатели800

В третьей части нашего обзора будут рассмотрены следующие патенты компании Tesla Motors:

1. Определение внештатного события в АКБ в процессе заряда, BMS (20140152258);

2. Преднамеренный саморазряд высоковольтной АКБ (20130307480);

3. Система управления полноприводным электромобилем (20140257613).

Читать далее

Исследование и разгон игры Fred для ZX Spectrum, часть 2

Уровень сложностиСредний
Время на прочтение21 мин
Охват и читатели2.1K

Два года назад я написал, как я попробовал заглянуть внутрь любимой игры моего детства и понять то, что было интереснейшей тайной для меня в начале девяностых: как устроены компьютерные игры? Понял я не очень много, но зато смог омолодить игру, сделав её быстрее. В этой части будет больше подробностей и новые способы ускорения, а значит простыни ассемблерного кода Z80.

Читать далее

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