View
68
Download
1
Category
Tags:
Preview:
DESCRIPTION
Антон Енин, Zodiac Interactive
Citation preview
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
Спасибо за Внимание!Вопросы?
Recommended