Hack-driven development для cable TV или история одного проекта
Upcoming SlideShare
Loading in...5
×
 

Hack-driven development для cable TV или история одного проекта

on

  • 62 views

Антон Енин, Zodiac Interactive

Антон Енин, Zodiac Interactive

Statistics

Views

Total Views
62
Views on SlideShare
62
Embed Views
0

Actions

Likes
0
Downloads
0
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Hack-driven development для cable TV или история одного проекта Hack-driven development для cable TV или история одного проекта Presentation Transcript

    • Hack-Driven Development для Cable TV или история одного проекта Докладчик: Антон Енин 25.04.2014
    • Set-Top Box • CISCO Explorer 8652HDC • MIPS 24k @ 700Mhz, 384MB RAM • 960x540 32bpp • PowerTV OS over Embedded Linux
    • Использование С++ для разработки под Set-Top Box • GCC 3.4.6+, C++03 • C++ Restrictions • C++ Exceptions • STL (Standard Template Library) • RTTI (Run-Time Type Information) • LIBC limitations, Depends on OS
    • Проект под кодовым названием “ODIN”
    • Что мы имеем на входе и что требуется? • Имеем: • Firmware с полным набором GUI приложений и Popups: InfoBar, Guide, Settings, DVR. Разрешение 640x480. • Нет возможности модифицировать исходники firmware • Имеем исходники, правда другой версии • Требуется: • Заменить все GUI приложения на новые. Сделать re-skin отдельных popups. Разрешение 960х540 • Добавить новую функциональность
    • Info Bar and Guide, как оно было…
    • Settings and DVR, как оно было…
    • Основные проблемы с точки зрения development • Ограниченный Public API • Поддержка re-skin чего-либо отсутствует Раз так, то let’s hack…. 
    • Hack-Driven Development • PowerTV OS environment • Общее адресное пространство • Есть динамическая загрузка PowerTV модулей • Firmware имеет fixed address
    • GOT (Global Offset Table) Injection • Содержит адреса global functions и переменных • Запоминаем оригинальный адрес • Подменяем на новый адрес функции
    • Объектный файл нам в помощь… • Адреса требуемых изменяемых переменных (section .data) • Адреса требуемых методов (section .text) • Адреса функций в таблице GOT (section .got)
    • Hack-Driven Development • Реализовали «толстый» wrapper class ExtendedAPI • Всю свою платформу замкнули на данных класс • Инициализация в зависимости от версии firmware на старте • Таблицы инициализации генерируются скриптом
    • Генерация • Для каждой версии firmware свои таблицы
    • Hack-Driven Development • Пример сгенерированного кода
    • Hack-Driven Development • Пример вызова internal API
    • Hack-Driven Development • Пример использования GOT Injection
    • Что мы получили в итоге? • Guide
    • Что мы получили в итоге? • DVR
    • Что мы получили в итоге? • Settings
    • Спасибо за Внимание! Вопросы?