Этот пост — рассказ об истории, случившейся больше десятка лет назад; её код был мной утерян. Поэтому прошу простить меня, если я не вспомню точно все подробности. Кроме того, некоторые подробности упрощены, чтобы от этой статьи могли получить удовольствие все, кому нравится компьютерная безопасность, а не только любители World of Warcraft (хотя, полагаю, диаграмма ВеннаЧитать полностью »
Рубрика «обратная разработка»
Когда Random совсем не случаен
2024-01-19 в 6:45, admin, рубрики: Lua, RNG, world of warcraft, взлом, генераторы случайных чисел, обратная разработкаВзлом доступа к ядру Windows при помощи драйвера принтера
2023-08-16 в 13:00, admin, рубрики: ruvds_переводы, взлом, обратная разработка, режим ядра, уязвимости, хакерство, ядро WindowsВ этой статье приводятся подробности CVE-2023-21822 — уязвимости Use-After-Free (UAF) в win32kfull, которая может привести к повышению привилегий. Отчёт о баге отправлен в рамках программы ZDI, а позже она была пропатчена компанией Microsoft.
В ядре Windows есть три API, предназначенные для общего использования драйверами устройств с целью создания растровых изображений (bitmap): EngCreateBitmap
, EngCreateDeviceBitmap
и EngCreateDeviceSurface
. Каждый из этих API возвращает дескриптор растрового изображения. Если вызывающая сторона хочет выполнить какие-то операции рисования на растровом изображении, то она должна сначала заблокировать это изображение, передав его дескриптор функции EngLockSurface
. EngLockSurface
увеличивает значение эталонного счётчика растрового изображения и возвращает указатель на соответствующую запись SURFOBJ
. SURFOBJ
— это расположенная в памяти ядра структура, содержащая всю информацию, связанную с растровым изображением, например, его размер, формат пикселей, указатель на пиксельный буфер и так далее. Подробнее структуру SURFOBJ
мы рассмотрим позже.
После вызова EngLockSurface
полученный указатель на SURFOBJ
может передаваться различным API рисования, например, EngLineTo
и EngBitBlt
. Полный список этих API рисования можно найти в winddi.h. После того, как вызывающая сторона завершит операции рисования, она должна вызывать EngUnlockSurface
. На этом этапе эталонный счётчик растрового изображения снова сбрасывается до нуля, и вызывающей стороне больше не разрешается использовать указатель на SURFOBJ
. В конце вызывающая сторона может удалить растровое изображение, вызвав для его дескриптора EngDeleteSurface
. Типичное использование этих API показано ниже:
Читать полностью »
Как я проводил обратную разработку таинственного UDP-трафика в гостиничном номере
2023-03-10 в 9:15, admin, рубрики: python, upd, Блог компании Productivity Inside, обратная разработка, ПрограммированиеЯ был очень удивлен, когда увидел большое количество UDP-трафика на порте 2046. Взглянул на него, но много толку это не дало – порт оказался не из стандартных, так что разбираться предстояло вручную.
Сначала я заподозрил, что эти данные нужны для стриминга телепередач на телевизоры, но размер пакета выглядел мелковатым, даже для единичного видеофрейма.
Читать полностью »
Заканчивается 2022 год, а я всё ещё использую Flash
2022-12-28 в 5:28, admin, рубрики: adobe air, adobe flash, adobe flash player, flash player, flash-игры, Игры и игровые консоли, обратная разработка, разработка игр, реверс-инжинирингС разными промежутками я делал игры всю свою жизнь, но людям особенно нравилась серия Hapland, поэтому я решил, что неплохо было бы исправить их для релиза в Steam. Можно нарисовать графику получше, повысить частоту кадров и разрешение, а может, и добавить новых секретов и тому подобного.
Hapland 2
Проблема в том, что игры Hapland по большей части созданы на Flash. Графика нарисована во Flash, код написан во Flash, все анимации выполнены в таймлайне Flash. Технология Flash стала их плотью.
Как же мне их улучшить?
Читать полностью »
Реверс-инжиниринг баг-фикса микропроцессора 8086 по снимкам кремния
2022-12-15 в 5:23, admin, рубрики: 8086, микропроцессоры, обратная разработка, Процессоры, реверс-инжиниринг, реверс-инжиниринг оборудования, старое железо
Микропроцессор 8086 — это революционный процессор, представленный компанией Intel в 1978 году. Его появление привело к тому, что архитектура x86 и сегодня продолжает доминировать в сфере десктопов и серверов. При реверс-инжиниринге 8086 по фотографиям кристалла моё внимание привлекла одна цепь, потому что её физическая структура на кристалле не соответствовала окружающим её цепям. Оказалось, что эта цепь реализует особую функциональность для пары команд, немного изменяя способ их взаимодействия с прерываниями. В процессе веб-поисков выяснилось, что это поведение было изменено Intel в 1978 году, чтобы устранить проблему с первыми версиями чипа 8086. Изучив кристалл, мы можем понять, как Intel справлялась с багами в микропроцессоре 8086.
Читать полностью »
Как я хакнул свой автомобиль: завершение истории
2022-08-23 в 11:36, admin, рубрики: Android Auto, qt, qt5, QtCreator, Автомобильные гаджеты, Взлом автомобилей, информационная безопасность, обратная разработка, реверс-инжинирингЧасть 2: создаём бэкдор
Хватит ждать
28 апреля 2022 года выпустили новые версии обновлений прошивок Display Audio для автомобилей Hyundai и Kia. К счастью, в том числе и для моей машины.
Я сразу же принялся за разработку собственного обновления прошивки с бэкдором.
Читать полностью »
Вычитываем прошивку STM32
2021-12-18 в 19:18, admin, рубрики: stm32, взлом, информационная безопасность, обратная разработка, программирование микроконтроллеров, прошивка контроллера, уязвимостиПочти в каждом микроконтроллере с интегрированной флэш памятью есть защита от вычитывания прошивки. Это делается чтобы защитить интеллектуальную собственность, криптографические ключи и алгоритмы от злоумышленников. Микроконтроллеры серии STM32, получившие широкое распространение в последнее время, особенно часто подвергаются атакам, однако нет практического опыта или информации касательно защищенности STM32 от подобных атак доступной публично. В этой статье рассмотрим системы защиты прошивки на примере STM32f0 серии.
Концепт защиты
Улучшения в эмуляторе Dolphin
2021-10-22 в 6:52, admin, рубрики: dolphin emulator, GameCube, Nintendo 64, nintendo wii, wii, Игры и игровые приставки, обратная разработка, Работа с 3D-графикой, разработка игр, реверс-инжиниринг, эмуляторыМногие сообщества геймеров благодарны разработчикам эмуляторов за их многолетний труд. Эмуляторы — важная часть многих сообществ любителей классических игр, они предоставляют игрокам доступ к таким функциям, как сетевой мультиплеер, моддинг, сохранения, а также открывают усовершенствования, невозможные на консоли. Если вам захочется поиграть в любимую игру, иногда просто удобнее воспользоваться эмулятором на десктопном компьютере, планшете или телефоне, чем откапывать и подключать консоль. Однако важно заметить, что наши отношения с игровыми сообществами взаимны и без помощи игроков и фанатов мы бы не смогли поддерживать библиотеку из тысяч игр.
Основным катализатором многих изменений, описанных в этом отчёте, стали сообщества игроков. Они занимались сложной отладкой, находили мелкие проблемы, которые оставались бы незаметными для тех, кто не знает игру в совершенстве, и даже создавали патчи, чтобы игры лучше подстраивались под усовершенствования в эмуляторе. Весь этот вклад, хотя и не являлся кодом, очень ценим нами, благодаря нему Dolphin стал тем, что мы видим сегодня.
Читать полностью »
Реверс-инжиниринг ПО начала 2000-х
2021-08-30 в 12:38, admin, рубрики: drm, Ghidra, ida, информационная безопасность, крэкинг, обратная разработка, реверс-инжинирингПредыстория
В этой серии статей я рассказываю о системе лицензирования ПО, использовавшейся в проприетарном программном приложении 2004 года. Это ПО также имеет пробный режим без регистрации, но с ограниченными функциями. Бесплатную лицензию можно было получить, зарегистрировавшись онлайн на сайте поставщика ПО. Примерно в 2009 году приложение перешло в статус abandonware и его перестали распространять. Хотя двоичный файл ПО был архивирован, пока не предпринимались попытки восстановления функциональности, которую можно было получить благодаря бесплатной лицензии.
Дизассемблируем двоичный файл
В одном из предыдущих постов о другом проекте реверс-инжиниринга я использовал в качестве дизассемблера IDA Free. Позже Агентство национальной безопасности США выпустило свой инструмент для реверс-инжиниринга Ghidra как ПО с open source. Его я и буду использовать в этом проекте.
По сравнению с IDA, Ghidra требует больше усилий для правильного дизассемблирования двоичного файла ПО. Например, рассмотрим, следующий дизассемблированный Ghidra код:
IDA автоматически идентифицирует функцию как 0x4f64dc, но Ghidra её не определяет. Как оказалось, именно эта функция и нужна будет в нашем анализе. Ghidra может выполнять более подробный анализ через Analysis → One Shot → Aggressive Instruction Finder, но результат всё равно будет неполным.
Из метаданных двоичного файла ПО мы знаем, что сборка была создана в Delphi 7 (выпущенном в 2002 году).Читать полностью »