Pull to refresh
2
0
Send message

Реверс-инжиниринг прошивки Samsung WB850F

Level of difficultyMedium
Reading time11 min
Views5.4K

Samsung WB850F стала первой камерой, объединившей в себе DRIMeIII SoC и WiFi. В ней, как и в модели EX2F, используется прошивка, в которую инженеры Samsung любезно включили файл partialImage.o.map с полным дампом компоновщика и именами всех символов из ZIP-архива. Этот их «подарок» мы используем для реверс-инжиниринга основной прошивки SoC, чтобы обеспечить прохождение проверки при обнаружении точек доступа WiFi и возможность использовать для загрузки изображений samsung-nx-emailservice.

Эта публикация продолжает тему статьи, посвящённой камерам Samsung с поддержкой WiFi, и является частью серии, освещающей линейку Samsung NX.
Читать дальше →
Total votes 38: ↑38 and ↓0+54
Comments4

Каков C++ в gamedev'e?

Level of difficultyEasy
Reading time11 min
Views30K

Хотел написать продолжение к статье Что почитать игровому программисту? про использование С++ в игровых движках, но размышления свернули куда-то не туда.

Завороженно смотрю как и какими темпами идет развитие языка в последние годы, и понимаю, что получить и особенно применить возможности С++20/3 в разработке игр и движков получится хорошо, если с опозданием лет эдак в пять, как раз на следующее поколение консолей, если вообще получится. Сейчас плюсы в игрострое зависли где-то между 14 и 17 стандартом, Сони только-только выкатила свою версию компилятора с полной поддержкой 17 стандарта, а учитывая реактивность игровых студий в изменении кор пайплайнов, что-то новое начнут только в новых проектах. Менять коня, т.е. компилятор посреди разработки игры равносильно стрельбе не только по ногам себе, но и соседям программистам: работает - не чини.

Если смена компилятора и стандарта не даст гарантированного прироста скорости работы больше 5%, то бюджет и людей я не одобрю. (с)

Знакомство с кодовой базой больших движков дает понимание уровня и объёмов кода в продакшене и в тулзах, и ситуация вырисовывается такая, что эти объемы стали в индустрии, что называется "too big to fall", т.е. написать что-то новое, уровня движков вроде Unity/Unreal/Dagor на другом языке, будь он хоть в тысячу раз безопаснее и в десять раз быстрее не получится, но попытки конечно делаются. И чем дальше продолжается поддержка существующих проектов на плюсах, тем меньше возможности выбора остается.

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

По техдолгам будут платить наши джуны
Total votes 74: ↑73 and ↓1+83
Comments59

Путешествие по Стеку. Часть 1

Reading time7 min
Views95K


В предыдущих материалах мы рассмотрели размещение программы в памяти – одну из центральных концепций, касающихся выполнения программ на компьютерах. Теперь обратимся к стеку вызовов – рабочей лошадке большинства языков программирования и виртуальных машин. Нас ожидает знакомство с удивительными вещами вроде функций-замыканий, переполнений буфера и рекурсии. Однако всему свое время – в начале нужно составить базовое представление о том, как работает стек.
Читать дальше →
Total votes 47: ↑44 and ↓3+41
Comments15

Обзор Stack Memory

Reading time8 min
Views10K

Стековая память — это раздел памяти, используемый функциями c целью хранения таких данных, как локальные переменные и параметры, которые будут использоваться вредоносным ПО для осуществления своей злонамеренной деятельности на взломанном устройстве.

Эта статья является третьей в серии из четырех частей, посвященных x64dbg:

Читать далее
Total votes 2: ↑2 and ↓0+2
Comments4

В России не любят Линукс, а я не люблю виртуальные машины. Что делать?

Level of difficultyEasy
Reading time11 min
Views36K

В России не любят Линукс. Студенты и корпорации всячески отлынивают его использовать, даже если Линукс насаждают преподаватели или госзаказчики. Но есть область, в которой Линукс придется полюбить. Это разработка микросхем. Даже внутри Apple и Microsoft инженеры используют Synopsys Design Compiler / IC Compiler и Cadence Genus / Innovus, у которых вообще нет версий для Windows и MacOS, только для Linux. Да, я знаю, что Synopsys и Cadence ушли из России. Но даже открытые тулы для синтеза ASIC - Open Lane - есть только под Linux.

Я уже несколько лет использую для семинаров по FPGA загружаемые через USB SSD диски, на который ставится весь необходимый софтвер. Такое решение позволяет избежать агонии первого дня семинара, когда приходит куча народу со своими ноутбуками, три часа ставят Quartus, а потом мучаются с драйверами USB Blaster для китайского контрафактного клона, который без танцев с бубном не хотят поддерживать не Win10, ни Linux, ни особенно Win11, который хочет подписанные драйверы.

А как же виртуальные машины? - спросите вы. С моей точки зрения они вносят дополнительный уровень танцев с бубном. И это не мое дремучее мнение - так же считает мой приятель, который работал над виртуализацией в Микрософте. То оно USB порт не пробивает, то еще какие-нибудь глюки. Плюс учить дополнительные опции, качать и копировать файлы в десятки гигабайт. А тут вставил в USB порт, и если загрузится, то заработает.

Конечно, загружаемые SSD тоже не без проблем: тут и Legacy BIOS boot против UEFI boot, и Secure Boot с Bit Locker, и зловещий "хвост GPT", и отрубание всего из-за скачка напряжения в USB хабе - но с этими проблемами мы методично разобрались. Решение я и описываю в этой заметке, предназначенной в первую очередь для учеников и руководителей кластеров в Школе Синтеза Цифровых Схем, которая начинается с сентября в 14 российских городах (объявления и точных дат еще нет, но уже записалось 200 учеников).

Прежде всего: как выглядит загружаемый SSD? А вот так:

Читать далее
Total votes 49: ↑42 and ↓7+44
Comments161

Не Unity единым…

Level of difficultyEasy
Reading time15 min
Views39K

Игры бывают разные, большие и маленькие, триA и супер инди, в компаниях с сотнями разработчиков и что создаются самородками-одиночками. Редко их делают с нуля и пишут код только игры, чаще пишут игровые тулы, редактор и параллельно пишут саму игру. За всей этой многомиллиардной индустрией стоит код, много кода, очень много кода. Игровые движки и фреймворки – мощные инструменты, которые помогают разработчику творить его идеи и создавать увлекательные игровые миры. Это каркас, на котором строятся все игровые вселенные, они включают в себя сотни инструментов, библиотек и ресурсов, позволяя разработчикам превратить строчки кода в театр для одного зрителя.

Существует более сотни игровых движков, каждый из них содержит как минимум одну фичу которой нет ни в каком другом. Всех возможностей вместе нет ни в одном, и это прекрасно - иначе бы такой движок монополизировал рынок. Хм, Unreal5 ты ли это? Иногда полезно пробежать по release notes движка, чтобы оставаться в курсе последних новостей. Возможно вы разрабатываете свое решение и эта статья натолкнет вас на новые идеи. Готовы узнать что ваша любимая игры была сделана не на Unity, а на православном SDL?

Читать далее
Total votes 95: ↑95 and ↓0+95
Comments89

Перевод книги Windows APT Warfare

Level of difficultyMedium
Reading time12 min
Views5.1K
image

Всем привет. Решил поделиться новостью, может кому-то будет интересно. Я закончил перевод книги Windows APT Warfare. В своем роде очень интересное чтиво, для тех кто занимается ассемблером, малварью и информационной безопасностью. Первую часть оставлю здесь. Всю остальную книгу можно забрать на дамаге, ныне — xss.is. Может кто-то сможет сверстать в PDF, буду очень благодарен. Всем спасибо.
Читать дальше →
Total votes 12: ↑12 and ↓0+12
Comments6

«Exploring in UE4» Принципы передвижения персонажа (часть 1)

Reading time19 min
Views12K

Привет, Хабр! Представляю вашем вниманию перевод первой части статьи《Exploring in UE4》移动组件详解[原理分析](2019.7.14更新).

Машинный перевод статьи на английском языке "Exploring in UE4" game character movement principle (part 1)

1. Глубокое понимания компонентов передвижения.

В большинстве игр, движение игрока является базовой операцией. Даже если нет так называемого «игрока», то должны быть какие-то объекты, которыми вы можете управлять или которыми управляет ИИ.

GamePlay фреймворк от UE4 предоставляет разработчикам отличное решение для реализации передвижения. Поскольку UE использует компонентную идеологию проектирования (т.е. разделение и инкапсуляция различных функций в конкретные компоненты), основные функции этого решения полностью реализованы в компонентах. Логика передвижения будет обрабатываться по-разному в зависимости от сложности игры. Если это простая игра жанра RTS с видом сверху, она может обеспечивать только базовое движение по координатам. В RPG от первого лица игрок может улететь в небо. Для пикирования в полете требуется более сложное движение. Но, независимо от типа полета, UE помогает нам реализовать его, преимущественно из-за его предыдущего опыта разработки FPS игр.

Читать далее
Total votes 7: ↑6 and ↓1+5
Comments0

Что почитать про разработку игр: интересные тексты из блога Pixonic за 2022-й

Reading time4 min
Views5.9K

Всем привет! Год потихоньку подходит к концу, так что самое время вспомнить, о чём мы писали. Собрали в одном материале самые интересные статьи из нашего блога и удобно сгруппировали их по темам — от геймдизайна до серверной разработки. Отличная возможность вернуться и перечитать полезные материалы или наверстать, если вы вдруг что-то пропустили.

Поехали!
Total votes 12: ↑11 and ↓1+11
Comments1

STM32 Чаcть 2: Инициализация

Reading time4 min
Views14K
Программирование — это разбиение чего-то большого и невозможного на что-то маленькое и вполне реальное.


Всем привет, для начала я хотел бы поблагодарить модераторов за то что пропустили мой первый (отвратительный) пост, и передать привет маме! А также я хотел бы поблагодарить всех читателей и людей которые указали на мои ошибки и помогли их исправить. Я сразу оговорюсь что по русски я не писал с 6 класса, в общем не серчайте.

STM32 Часть 1: Основы

Итак, давайте приступим. В прошлой статье я бегло пробежался по самым первым пунктам. Это был наш startup.c файл, который отвечал за 2 вектора (stack, Reset_Handler) и немного про линкер скрипт. Сегодня мы дополним наш код инициализации, разберем линкер на запчасти и узнаем как все устроено.
Читать дальше →
Total votes 12: ↑11 and ↓1+16
Comments15

Factorio на движке Unreal Engine 5

Level of difficultyEasy
Reading time5 min
Views65K

Сегодня мы поговорим об интересном проекте FUE5. Это Factorio, но в 3D! Иногда мечты становятся явью. Это не совсем игра, а, скорее, потрясающее переосмысление её визуальной составляющей. В этой написанной Hurricane статье будет много технических подробностей, так что давайте приступим.

Читать далее
Total votes 84: ↑84 and ↓0+84
Comments77

PE (Portable Executable): На странных берегах

Reading time18 min
Views157K


Эта статья представляет из себя рассказ о том как устроены исполняемые файлы (в точку! Это именно те штуки, которые получаются после компиляции приложений с расширением .exe). После того, как написан код, подключены библиотеки, подгружены к проекту ресурсы (иконки для окон, какие-либо текстовые файлы, картинки и прочее) всё это компонуется в один единственный исполняемый файл, преимущественно с расширением .exe. Вот именно в этот омут мы и погрузимся.
*Статья находится под эгидой «для начинающих» поэтому будет изобиловать схемами и описанием важных элементов загрузки.
На палубу
Total votes 37: ↑32 and ↓5+27
Comments22

Микросервисы — отчуждение от результатов труда

Reading time15 min
Views64K

Поветрия

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

Постоянно мы слышим, что какой-нибудь паттерн или язык становится всё более модным, а что-то, напротив, — уходит в историю. А ещё различные поветрия о "хорошо или плохо" будто волнами перекатываются через это вот всё.

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

Увы, новые вещи (коих не так чтобы вообще есть) всё чаще приносят с собой и очевидно деструктивные, будто навязываемые извне, паттерны.

В прошлом частота таких деструкций была невысокой, но выглядит так, что она нарастает по экспоненциальной кривой.

В этой статье я хотел бы поговорить о причинах происходящего.

Если кому-то интересно - под кат
Total votes 251: ↑183 and ↓68+158
Comments1018

Всё про USB-C: механика разъёмов

Level of difficultyMedium
Reading time11 min
Views39K

Бывает два случая, в которых электронщикам приходится задумываться о механике разъёмов USB-C. Первый связан с поломкой разъёма, а второй с потребностью его установки на собственную плату. В этой статье мы разберём оба.
Читать дальше →
Total votes 55: ↑53 and ↓2+75
Comments56

Чем различаются Kafka и RabbitMQ: простыми словами

Reading time8 min
Views95K

Программные брокеры сообщения уже стали стандартом при построении больших и сложных систем. Однако до сих пор не все ИТ-специалисты понимают, как работают эти инструменты. Главный системный аналитик «Иннотех» Павел Малыгин помогает разобраться в брокерах сообщениях и их работе.

Читать далее
Total votes 56: ↑53 and ↓3+55
Comments33

Руководство по работе с OpenAL на C++. Часть 1: воспроизводим звук

Reading time22 min
Views21K
Вашей игре нужен звук! Наверно, вы уже использовали OpenGL для рисования на экране. Вы разобрались с его API, и поэтому обратились к OpenAL, потому что название кажется знакомым.

Что же, хорошие новости — OpenAL тоже имеет очень знакомый API. Он изначально задумывался для имитации API спецификации OpenGL. Именно поэтому я выбрал его среди множества звуковых систем для игр; к тому же он кроссплатформенный.

В этой статье я подробно расскажу о том, какой код нужен для использования OpenAL в игре, написанной на C++. Мы обсудим звуки, музыку и позиционирование звука в 3D-пространстве с примерами кода.

История OpenAL


Постараюсь быть кратким. Как говорилось выше, он намеренно разрабатывался как имитация OpenGL API, и на то есть причина. Это удобный API, который многим известен, и если графика — одна сторона игрового движка, то звук должен быть другой. Изначально OpenAL должен был стать open-source, но потом кое-что произошло…

Людей не так сильно интересует звук, как графика, поэтому в конечном итоге Creative сделала OpenAL своей собственностью, а эталонная реализация теперь проприетарна и небесплатна. Но! Спецификация OpenAL по-прежнему является «открытым» стандартом, то есть она публикуется.

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

Открытая спецификация позволила другим людям создать open-source-реализацию спецификации. Одной из таких реализаций является OpenAL Soft, и, честно говоря, нет никакого смысла искать любые другие. Это та реализация, которую буду использовать я, и рекомендую вам использовать её же.
Total votes 19: ↑19 and ↓0+19
Comments9

Learn OpenGL. Урок 4.9 — Геометрический шейдер

Reading time15 min
Views28K
OGL3

Геометрический Шейдер


Между этапами выполнения вершинного и фрагментного шейдера есть опциональная стадия, предназначенная для выполнения геометрического шейдера. На входе у геометрического шейдера оказывается набор вершин, формирующих один из допустимых в OpenGL примитивов (точки, треугольники, …). В результате своей работы геометрический шейдер может преобразовать этот набор вершин по своему усмотрению, прежде чем передать его на следующую шейдерную стадию. При этом стоит отметить самую интересную особенность геометрического шейдера: в процессе своей работы набор входных вершин может быть преобразован к представлению совершенно иного примитива, а также может сгенерировать совершенно новые вершины на основе входных данных, увеличивая итоговое количество вершин.
Читать дальше →
Total votes 18: ↑18 and ↓0+18
Comments2

Реверс-инжиниринг прошивки устройства на примере мигающего «носорога». Часть 1

Reading time16 min
Views44K

26 апреля 2018 года компания ИНФОРИОН провела конференцию для студентов МГТУ им. Баумана SMARTRHINO-2018. Специально для конференции было подготовлено небольшое устройство на базе микроконтроллера STM32F042.

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

Первая часть статьи составлена по мотивам проведённого мастер-класса и рассчитана на начинающих — уделяется внимание базовым подходам к реверсу прошивок и особенностям работы с дизассемблером IDA.

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

Осторожно, под катом мигающий носорог и его прошивка!
Читать дальше →
Total votes 52: ↑52 and ↓0+52
Comments26

IDA Pro и техники реверс-инжиниринга

Reading time27 min
Views102K

0x00 start


; {EN} entry point, do nothing, just run _main {EN}


Статья для начинающих “воинов тьмы”, тех, кто хочет погрузиться в темную сторону силы: реверс-инжиниринг. На нашем “операционном столе” будет небольшой кустарный сервер, который работает по протоколу TCP/IP. Для анализа протокола обмена данными нам поможет стандарт де-факто в области реверса — IDA Pro.


Статей по реверс-инжинирингу и по IDA Pro уже написано немало (хотя и не столько, как по PHP), но поскольку процесс реверса — исследовательский, то мысли, как с "другого боку" подойти к задаче обратной разработки, полезны новичкам. По крайней мере, как автор, я руководствовался тем, чтобы изложить основные практики и техники, о которых говорю в первые дни всем стажерам и на первых парах курса по реверс-инжинирингу в университете.


Чего не будет в статье?

Поиска уязвимостей и разработки эксплоитов для Google Chrome или Apple iPhone… Поэтому если вы исследователь со стажем и с большим количеством CVE на счету, маловероятно, что вы найдете для себя что-то новое.



"Once you start down the dark path, forever will it dominate your destiny".

Читать дальше →
Total votes 19: ↑18 and ↓1+26
Comments32

Реверс-инжиниринг прошивки устройства на примере мигающего «носорога». Часть 2

Reading time12 min
Views11K

Представляем вашему вниманию вторую часть статьи о реверс-инжиниринге прошивки устройства «Мигающий носорог» по мотивам мастер-класса на конференции SMARTRHINO-2018.

В первой части статьи прошивка устройства была загружена в дизассемблер IDA и выполнен первичный анализ команд протокола устройства. Отдельные команды были проверены на работающем устройстве.

Во второй части будет выполнен анализ оставшихся тасков прошивки.

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

Файл прошивки доступен для самостоятельного изучения.

Вся информация приводится исключительно в образовательных целях.

Под катом много мигающего носорога.
Читать дальше →
Total votes 32: ↑32 and ↓0+32
Comments0
1
23 ...

Information

Rating
Does not participate
Location
Минск, Минская обл., Беларусь
Registered
Activity