18.11.2014 Views

JIT SPRAY АНАЛИЗ TDSS - Xakep Online

JIT SPRAY АНАЛИЗ TDSS - Xakep Online

JIT SPRAY АНАЛИЗ TDSS - Xakep Online

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

CODING<br />

Артем RankoR Смирнов ax-soft.ru<br />

SMS-ÑÅÍÄÅÐ<br />

ÄËß ANDROID<br />

Èññëåäóåì íåäðà îïåðàöèîííîé ñèñòåìû<br />

ñ ïîìîùüþ äåáàããåðà è íå òîëüêî<br />

Êîãäà OS Android òîëüêî ïîÿâèëàñü, ìíîãèå, è ÿ â òîì ÷èñëå, ìå÷òàëè,<br />

÷òîáû íà íåå êàê ìîæíî ñêîðåå ïîðòèðîâàëè Qt. Ê ñîæàëåíèþ,<br />

êîðïîðàöèÿ äîáðà íå îïðàâäàëà íàøèõ íàäåæä, ñîîáùèâ, ÷òî<br />

SDK Àíäðîèäà áóäåò òîëüêî íà Java. Íîâîñòü î ïîêóïêå Trolltech<br />

êîðïîðàöèåé Nokia òîæå íå äîáàâèëà îïòèìèçìà.<br />

Спустя некоторое время к нам привалила нежданная радость — для<br />

Андроида вышел NDK для нативной разработки на C++, и, конечно же,<br />

нашлись люди, которые стали портировать Qt на Android. На данный<br />

момент порт уже более-менее юзабелен — работают (и почти не глючат)<br />

практически все модули. Ну что ж, посмотрим, какие возможности<br />

открывает нам этот порт.<br />

ÊÀÊ ÎÍÎ ÐÀÁÎÒÀÅÒ?<br />

Поначалу кажется, что данный порт — это очень большой костыль.<br />

Без Java все равно не обошлось — с помощью NDK нельзя создавать<br />

исполняемые файлы, можно только библиотеки .so. На Java,<br />

по сути, нужно написать всего одну строчку, которая загружает<br />

нашу библиотеку на Qt. Далее виртуальная машина Android запускает<br />

Java-приложение, которое, в свою очередь, грузит нашу<br />

либу.<br />

ÑÁÎÐÊÀ QT<br />

Весь процесс очень хорошо описан в Wiki проекта (см. ссылки), но он<br />

содержит несколько граблей, поэтому кое-какие пояснения нам дать<br />

все же придется.<br />

Небольшая оговорка — процесс описывается для Ubuntu 10.04, но на<br />

других дистрибутивах, в принципе, все должно происходить так же.<br />

104<br />

А вот для того, чтобы провернуть это дело под виндой, тебе придется<br />

немного попрыгать с бубном (какая тонкая ирония, а?).<br />

Итак, поехали:<br />

Создаем директорию для SDK. Пишем в консоль:<br />

wget http://android-lighthouse.googlecode.com/files/<br />

qadk-1.x-2.x-rtti-exceptions.tar.lzma<br />

tar xvfa qadk-1.x-2.x-rtti-exceptions.tar.lzma<br />

Клонируем репозиторий Lighthouse:<br />

git clone git://gitorious.org/~taipan/qt/androidlighthouse.git<br />

Редактируем файл mkspecs/android-g++/qmake.conf. В нем нужно<br />

изменить NDK_ROOT и ANDROID_PLATFORM (у меня — /data/local/qt и<br />

android-5 соответственно). Эти параметры отвечают за расположение<br />

собранной библиотеки и ее версию. Также нужно отредактировать<br />

файл androidconfig.sh. Настоятельно рекомендую заменить shared на<br />

static (для статической сборки библиотеки и приложений).<br />

Все, конфигурируем (./androidconfig.sh) и собираем (make -j X, где X —<br />

количество ядер твоего процессора).<br />

XÀÊÅÐ 09 /140/ 10

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!