среда, 22 июля 2015 г.

Немного статистики или "Мотивация под вопросом"

В последнее время мне очень задают очень много вопросов касательно разработок, выложенных в моем блоге, в стиле - а буду ли я "допиливать" то или это, а вот такая-то фича в такой-то прошивке работает не так, как бы мне хотелось, а возможно добавить такого-же только розового, но без крыльев ... ;) На самом деле мне приятно то, что мои разработки и вообще все что здесь выложено оказалось кому-то полезным. Но есть и обратная сторона медали, та, про которую говорят "спасибо в карман не положишь". Дело здесь вовсе не в меркантильности или чем-то таком.

Приведу простой пример. На прошивку KingSing Mod для Мегафон Login+ суммарно было потрачено около двух недель, многое "дотачивалось", "допиливалось", проверялось, с выходом очередных патчей от Мегафона делались какие-то обновления и для этого кастома. Я ради интереса сел и посчитал, сколько бессонных ночей я на это потратил (заниматься чем-то подобным в другое время - просто не получается, т.к. днем, как и у всех, у меня работа, вечером семья и т.п.), в итоге, получилось что-то около 14 дней, т.е. 336 часов. При этом надо не забывать, что помимо того чтобы что-то сделать, время также уходит еще и на оформление инструкций, общение с пользователями, здесь в комментариях и на многих форумах (это время вообще не поддается никакому исчислению, т.к. я один, а желающих что-то спросить - масса). И что мы имеем на данный момент? Только количество пользователей скачавших эту прошивку уже давно перевалило за 5000 человек (а если посмотреть сколько скачало CWM и Philz для него - там будет далеко за 15000, сам удивился). Итого, даже если брать только этот Login+ - то из 20 тыс. пользователей, которые нашли все это полезным поддержали проект всего два десятка человек ;) Спрашивается, а в чем тогда мотивация? Только в собственном интересе.

Т.е. я работал над этим пока мне было интересно. Как только мне начинает казаться что я добился того результата, которого хотел, т.е. все подошло к некоторому логическому завершению, или же я прихожу к мысли что тратить на это дальнейшее время бессмысленно (по разным причинам) разработка отправляется в архив. Заниматься ей я больше не вижу смысла. А вы бы стали тратить свое время? Думаю нет. Скачать и использовать что-то готовое - это дело 5 минут, а задумывался ли кто-нибудь сколько времени тратится на то чтобы сделать это для вас?

У меня еще очень свежи в памяти воспоминания о том как год назад мы начинали с ruslan_3_ работу над TWRP для Login 3, который я все-таки сделал недавно. Не знаю, верите вы или нет, но где-то на протяжении двух недель мы приходили с работы, списывались в ICQ, ВК, Telegram и пытались собрать что-то рабочее, иногда засиживаясь и до 4-5 часов утра в попытках побороть нестандартный overlay. С таким "графиком хобби" (а по-другому это увлечение не назовешь), думаю, не трудно себе представить на кого мы были похожи )) Красные глаза, и т.д. и т.п., вообщем картина - IT'шник маслом, разве что бороды и свитра не было ) Я несколько раз давал себе обещание что не буду к нему возвращаться, да и вообще больше не хочу видеть этот планшет, и так или иначе ближе к выходным - мы все равно пробовали новые идеи. Благо теперь есть результат ;) Кроме устной благодарности и разнообразных плюсиков на форуме за это никто ничего не получил, да, собственно мы и не стремились.

Кстати, сейчас вот читал xda-developers ... там люди делают проще. Например, группе пользователей какого-либо девайса нужен root или кастомный recovery на него. Своими силами у них его собрать не получается, тогда они делают тему а-ля Bounty и объявляют вознаграждение. Т.е. каждый участник топика отписывается о том сколько ему не жалко потратить на ту или иную разработку. Тот топик который я смотрел, в первые несколько часов насчитал постов 5-6, где каждый готов был мотивировать разработчика, который первым выложит решение, рублем. Т.е. долларом в их случае ) 5 человек отписались о том, что готовы пожертвовать на разработку 20 USD, и еще один 10 USD. Итого, получаем, при участии 6 человек финансовая мотивация уже 110 USD. Это не так много, но, согласитесь, кому-то же наверняка будет приятна такая оценка его труда.

К сожалению, подобный опыт видимо не подлежит переносу на российские реалии, потому как для 90% интернет-аудитории слово "халява" затмевает собой все остальное. Вернее даже никто не задумывается, что за какими-то вещами стоит чей-то труд и бессонные ночи. Зато с предложениями и запросами - сделайте нам то, сделайте нам это и т.п., причем не всегда корректными (встречается, к сожалению, определенная категория людей, которым всегда кто-то что-то должен, т.е. вот все должны всё бросить и сделать так, чтобы им стало хорошо )), так вот, с подобными запросами приходит, наверное, каждый третий.

Не знаю как кто, а я, например, по-возможности стараюсь поддержать людей, которые сделали для меня что-то полезное. За примерами далеко ходить не нужно. Возьмем популярную читалку Cool Reader для Android, которая стоит на каждом втором телефоне у тех, кто в принципе любит что-то читать. Она замечательная и при этом бесплатная. Автор не пошел по пути "глобальной монетизации контента", которая сейчас прослеживается везде и во всем, а просто добавил возможность поддержать разработку в меню "О программе":


Признайтесь честно, кто из вас купил "монетку"? ;) Я вот купил. Пусть отправленные средства - это капля в море, но если из 1000 человек скачавших программу хотя бы 50 отправят по 3 или 10 USD - это уже будет небольшим подспорьем для автора, а также мотивацией выпускать обновления и реализовывать пользовательские "хотелки".

При этом, наверняка найдется ряд пользователей, которые сразу же начнут считать чужие доходы ... в стиле, ага, 1000 * 3USD = 3000 USD = 165000 руб. Неплохо так ... пойду-ка я в программисты )) Вот только как правило на этих несложных математических подсчетах все и заканчивается. Чтобы сделать что-то во-первых нужно обладать определенным багажом знаний, который нужно периодически обновлять, во-вторых обладать желанием, временем, и, наверное, самое главное - любить свое дело и чувствовать "отдачу" (я сейчас не про финансы), востребованность и интерес, к тому, чем занимаешься. Плюс, если брать аспект разработки ПО, то ко всему прочему добавляются еще некие расходы на хостинги, сайты, рекламные кампании и т.д. и т.п. Ведь чтобы даже если сделать что-то нужное и полезное для всех - это еще как-то должно получить известность, важно чтобы люди нашли вашу разработку. Вообщем чтобы не превращать пост в сказку о том "каково разработчикам жить на Руси" ... не забывайте, что за доходами скрываются еще и расходы, на поддержку, оборудование, сервера и т.д. и т.п. 

Вообще бесплатного в мире ничего не бывает, как бы это не прозвучало. За всем стоят либо определенные финансовые вложения, либо чьи-то трудозатраты. И когда кто-то рядом со мной говорит фразу в стиле "а зачем, если есть бесплатно" - мне это так или иначе режет ухо. Потому что "бесплатной" бывает ... ну разве что только дружба и любовь (хотя некоторые умудряются исказить даже эти понятия) ... за всем остальным стоит либо чей-то труд, либо чьи-то вложенные средства. Если в бесплатной программе вы видите рекламу, значит разработчик пытается хоть как-то получить вознаграждение за свой труд. Беда в рекламе в том, что по ней никто не кликает, плюс она довольно раздражительна, плюс основной массе аудитории она вообще ни к чему - в результате пользователи все равно остаются недовольны (а зачем она, давайте ее уберем и т.п.) ... Как только реклама убирается - вроде бы и все довольны, но кнопочкой "Donate" никто не пользуется ... ) После чего программа становится платной, но по вполне адекватной цене. Но и тут находятся недовольные )) А зачем мне платить 100 руб.. если я скачаю это на очередном варезнике бесплатно или "блин, жадность погубит людей, хорошо что еще не все помешаны на деньгах" или же "я заплатил вам 100 руб., почему вы не сделаете мне того самого розового, но только без крыльев или без пуговиц" ;)

Вообщем, думаю вы поняли ) Все это на правах просто мыслей вслух, иногда у меня возникает желание поделиться настроениями с аудиторией ;) Спасибо всем кто дочитал до конца ;)

p.s. А как считаете вы, если сделать какой-то ресурс вроде Bounty Dev (название придумал только что, может быть такой уже есть, а может быть и нет), ориентированный на наши реалии. Т.е. смысл такой же как и у существующих краудфандинговых проектов, но ориентированный на разработку ПО, мобильные устройства и т.п. Идея думаю понятна. Каждый участник может зарегистрировать на нем свой проект, "хотелку", например, хочу %firmware_name% для %device_name%, или хочу %app% для %device% и описать требования к поставленной задаче / проекту, а также внести некую сумму, которую ему не жалко пожертвовать для реализации проекта. В дальнейшем остальные участники проекта могут поддержать данную хотелку рублем, ну а разработчик, впервые реализовавший все описанное и выложивший свою работу в public получает всю собранную сумму. Как вы думаете, будет такое пользоваться спросом? Стали бы, к примеру вы, участником такого проекта, как разработчик или как пользователь? Или может быть вы знаете уже существующие аналогичные проекты?

Как получить root на Alcatel Idol 3 (5.5") OT-6045Y?

Вначале немного предыстории ... Долгое после старта продаж Alcatel Idol 3 5.5 (6045Y) в Европе (у нас этот аппарат еще не успел получить широкого распространения) пользователи пытались получить на него root-права разными способами. На аппарате установлена из последних версий ОС Android 5.0.2 Lollipop и ни одно из существующих приложений подобных KingoRoot и т.п. на момент написания этого поста его "не берет". Работа подобного рода приложений (KingoRoot, vRoot, 360root, TowelRoot и т.п.) основана на эксплуатации уязвимостей ОС Android для повышения привелегий, т.е. фактически, после запуска одного из этих приложений оно пытается повысить свои привилегии в системе с помощью запуска соответствующего exploit'а, после чего, получив права суперпользователя устанавливает бинарник su и приложение для контроля прав (SuperSU или их китайские аналоги). С Idol 3 (6045Y), как вы уже наверное поняли, ни одно из этих приложений не сработало.

Другим способом получения root прав является прошивка соответствующего zip архива через кастомный recovery (cwm, philz, twrp и т.п.), например, так, как описано вот в этом посте - Alcatel Idol 3 (4.7") 6039Y. Взгляд со стороны. Как раз там я рассказывал как установить TWRP Recovery для Idol 3 4.7 6039Y и получить root-права. Однако, в случае с Idol 3 6045Y все оказалось опять же нетривиально. Кастомных recovery под него пока не было замечено в открытом доступе (впрочем, думаю, после найденного способа получения root они появятся). Чтобы собрать тот же CWM или TWRP из исходников или портировать с другого аппарата нужен boot.img или recovery.img со стоковой прошивки. А скопировать оригинальные boot и recovery с телефона можно только при наличии root прав. Получаем замкнутый круг - чтобы получить root, нам нужен CWM, чтобы собрать CWM - нам нужен root ;) Однако решение все же было найдено.

В этом посте на xda-developers пользователь frankee207 рассказал о некоем телефоне TCL 3S M3G:


Под который уже были собраны несколько кастомных прошивок, а также присутствовал некий exe'шник - TCL3S M3G root-20150524.exe для получения root-прав, но, к сожалению, frankee207 воспользоваться им не смог. Далее все пошло еще быстрее, пользователь того же xda-developers DallasCZ разобрался что именно происходит при запуске этого exe и в скором времени выложил свою версию bat'ника для получения root-прав. Все свои наработки он разместил в посте: [ GUIDE ]unlock bootloader and **ROOT** for ALCATEL IDOL 3 6045. Собственно это готовый гайд от DallasCZ для получения root на Idol 3 6045. Чуть ниже я переведу эту инструкцию. А пока хотелось бы остановиться на технических моментах, т.е. как же именно получается root в данном случае.

Первым делом разблокируется bootloader (в 6045Y он залочен) штатными средствами, процесс хорошо описан и все вообщем-то проходит стандартно. После того как bootloader разблокирован, в телефон можно загружать сторонние boot'ы. И тут нам на помощь приходит CF-Auto-Root от chainfire, более подробно о нем можно почитать на xda-developers в теме - [CENTRAL] CF-Auto-Root. Что же представляет из себя CF-Auto-Root? Это специальным образом собранный boot.img единственной задачей которого является установка SuperSU в /system (a special boot image will load, which will install (only) SuperSU, then reboot into Android) и перезагрузка устройства.
В случае с OT-6045Y данный метод сработал, т.к. boot.img-dt от TCL3S M3G подошел к IDOL 3 6045Y. Весь процесс крайне прост, т.е. сначала вы разблокируете bootloader, если он был заблокирован, затем перезагружаетесь в режим bootloader'а и через fastboot загружаете boot.img с CF-Auto-Root, который и устанавливает root-права в систему. После чего телефон перезагружается в обычном режиме. Вот, кажется, мы и разобрались с теорией. Ну а теперь практика ... 

Для пользователей которые свободно владеют английским рекомендую обратиться к оригинальному посту DallasCZ на xda-developers: [ GUIDE ]unlock bootloader and **ROOT** for ALCATEL IDOL 3 6045. Для всех остальных - я переведу его.

Разблокируем bootloader и получаем root-права на Alcatel Idol 3 6045Y 


Разблокируем bootloader

  • Скачиваем драйвера Alcatel для Windows отсюда и запускаем DriverInstaller.exe для их установки. Либо просто подключаем Idol 3 к ПК и устанавливаем драйвера с появившегося в системе устройства CDROM.
  • Скачиваем архив IDOL3_6045_ROOT.zip (зеркало) и распаковываем его в отдельную папку.
  • Включаем отладку по USB в настройках разработчика на телефона. Т.е. идем в меню Настройки -> Настройки разработчика и там ставим галочку Отладка по USB. Если данный пункт меню не активен, в настройки разработчика можно также зайти через приложение Debug Menu Access из Google Play, либо тапнув 7 раз по надписи Номер сборки в меню Настройки -> Об устройстве (после этого подпункт Настройки разработчика должен появиться в меню Настройки).
  • Подключаем телефон к ПК, при этом на телефоне может появиться запрос режима в котором подключен телефон, выбираем режим MTP (передача файлов).
  • Открываем командную строку в папке куда мы распаковали содержимое архива. Чтобы открыть командную строку в выбранной папке нужно просто щелкнуть по ней правой кнопкой мыши, удерживая Shift и выбрать "Открыть окно команд":

  • После этого в открывшемся окне консоли набираем adb reboot-bootloader для перезагрузки устройства в режим bootloader.
  • Далее делаем следующее:

    fastboot -i 0x1bbb devices (проверяем перешло ли у нас устройство в режим fastboot, если все Ok, то оно должно присутствовать в списке устройств)
    fastboot -i 0x1bbb oem device-info (получаем информация об устройстве, в том числе и признак "залоченности" bootloader'а)
    fastboot -i 0x1bbb oem unlock (разблокируем bootloader)
    fastboot -i 0x1bbb oem device-info (еще раз получаем информацию, если все сделано правильно, то у нас должно быть написано Device unlocked: true)
    fastboot -i 0x1bbb reboot (перезагружаем телефон в обычном режиме)

Получаем root

  • Подключаем телефон к ПК, выбираем режим передачи данных MTP, убеждаемся в том что отладка по USB у нас активирована (т.е. все как на предыдущем шаге). После чего запускаем root.bat из архива.
  • В появившемся меню выбираем пункт 1. ROOT.
  • Телефон несколько раз перезагрузится, после чего SuperSU и root должны быть у вас установлены. Если после нажатия 1 в меню у вас долго висит надпись waiting for device, то в этот момент нужно установить драйвера Alcatel.
Для тех кто представляет что такое adb и fastboot bat'ник вообщем-то не нужен, достаточно всего двух команд: adb reboot bootloader для перехода в режим bootloader, и fastboot -i 0x1bbb boot boot.img для загрузки boot'а с CF-Auto-Root.

Полезные ссылки:



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

пятница, 17 июля 2015 г.

Google Play Книги. Инструкция по применению.

Честно говоря мало кто из нас пользовался сервисом Google Play Книги. Как-то так повелось, что более распространенной читалкой для Android является Cool Reader (достоинств которой при этом никто не отменяет, для меня, например, как и для многих других пользователей - она является основной для Android устройств), а все книги берутся из "условно-бесплатных" источников Рунета. С тех же сетевых библиотек, торрентов и т.п. Речь здесь пойдет не о сравнении читалок, а об из пользовании сервиса Google Play Книги в целом.

Сегодня я искал книгу Сильвена Ретабоуила "Android NDK Разработка приложений под Android на С/С++". В открытом доступе ее найти не удалось, и тут, как раз я вспомнил про Google Play Книги, благо Android смартфон был под рукой. Что меня больше всего удивило - это цены, обратите внимание на следующий скриншот:


Обратите внимание, англоязычная книга стоит ~804 руб., русскоязычный перевод - 307 руб., однако наравне с ним в Книгах была представлена точно такая же книга (на скриншоте цена не видна, т.к. я уже приобрел ее) с ценой в 113 руб. А почему бы и нет, подумал я и купил эту книгу. Честно говоря с Play Книги я не связывался никогда, поэтому чего ожидать от покупки и каким образом я смогу пользоваться купленной книгой я не представлял. Т.е. этот сервис для меня был вновинку. А все оказалось более чем удобно.

После покупки книги она появляется в Библиотеке и ее можно читать на любом Android устройстве, при этом читать можно сразу "онлайн" или же сохранить купленную книгу на устройство для чтения оффлайн. Куда и как сохраняется купленная книга - я пока не разбирался. Вторым способом чтения купленных произведений является ПК. Достаточно зайти на страницу своих покупок - https://play.google.com/books/purchases и сразу же можно приступить к чтению.

При этом якобы представлена возможность скачать купленную книгу в PDF:


Однако, если бы все было так просто - то уровень пиратства бы просто процветал, особенно у нас, по понятным причинам. Поэтому, возможно, какие-то произведения и скачиваются в PDF, но у меня при нажатии этой ссылке скачался .acsm . Как говорится в интернете - это формат, используемый программой Adobe Digital Editions для отправки данных активации на удаленный сервер, который использует их для создания защищенной книги в формате PDF (или epub).

Поэтому первое что я решил сделать это скачать Adobe Digital Editions с официального сайта (прямая ссылка на дистрибутив). Кстати расшифровывается аббревиатура ACSM как Adobe Content Server Message. После установки приложения ADE и авторизации компьютера на серверах Adobe (авторизация ПК может проходить с участием Adobe ID или без него, собственно она нужна для того чтобы сервера Adobe могли идентифицировать устройство с которых происходит чтение защищенного DRM контента) книга успешно скачалась и я смог читать ее непосредственно в ADE:


К слову, в ACSM файле содержится только "ссылка" на вашу книгу, фактически же, после открытия ACSM файла в ADE происходит скачивание книги на ПК в формат PDF:


Вот только PDF этот получается "шифрованным" и подлежит просмотру только в этой самой ADE на уже идентифицированном ПК. Т.е. загрузить его в Adobe Reader или Foxit PDF Reader, увы, не получится.

К слову, если вам понравилась штатная читалка Play Книги, то на этом сервисе вы можете загрузить книги в формате EPUB и PDF для последующего чтения:


При этом загруженные книги появляются в приложении "Play Книги" на всех ваших устройствах. В целом же (наверное в качестве Резюме), Google Play Книги предоставляет нам довольно удобный доступ к цифровой библиотеке. Цены на электронные книги, представленные в ней не так высоки и вполне доступны для всех. Перед приобретением книги вы можете "полистать" ее и ознакомиться с фрагментом, после приобретения - читать ее любым удобным из представленных способов на всех своих устройствах. Так что кто не еще не пользовался - советую попробовать. Например, для меня, как для любителя фантастики, приятным сюрпризом было наличие в Play Книги практически всех произведений Сергея Лукьяненко и Владимира Панова, да и вообще широкий ассортимент произведений и достаточно удобная навигация по нему. Думаю что и новинки появляются там довольно быстро, т.к. продажа электронных версий книг - это еще один источник дополнительного дохода для издателей.

четверг, 16 июля 2015 г.

Мегафон Login 3 MT4A. Первый кастомный recovery - TWRP v2.8.1.0.

В этом посте я загляну в глубокое прошлое, а именно где-то с год назад, и постараюсь ответить на вопрос, который присутствует во всех FAQ по планшету Мегафон Login 3 MT4A:

- Существуют ли сборки альтернативного Recovery CWM или TWRP для нашего устройства?
- Да, теперь существуют. TWRP v2.8.1.0 был успешно собран мной этой ночью ;)

Честно говоря, у меня есть одна черта, не знаю уж плохая или хорошая - я никогда не могу бросить начатое на полдороги. Год назад, благодаря определенным событиям, я оставил все разработки касающиеся планшета Мегафон Логин 3 и пообещал себе никогда к ним не возвращаться. Отчасти это было вызвано неприятным осадком, который у меня появился из-за ... (не буду показывать пальцем), отчасти массой безрезультатно потраченного времени. И вот, спустя год, несмотря на данное себе обещание я все же решил вернуться к этому многострадальному планшету и посмотреть почему же никому до сих пор не удавалось собрать кастомный recovery.



Как видно из этих двух фото - невозможных вещей не бывает ;) Перед вами вполне рабочий TWRP для планшета Мегафон Login 3 , частично собранный из исходников, частично из пропатченных бинарников, скомпилированных для других устройств. Основной проблемой при сборке или портировании кастомного recovery для Login 3 - был нестандартный framebuffer и overlay, а также отсутствие исходников. Теперь все это позади.

Обновлено 16.07.2015 18:50:



В видео продемонстрирована работа кастомного recovery TWRP на планшете Мегафон Login 3 (MT4A). При съемке видео штатив и фотоаппарат доставать было лениво, поэтому решил по-быстренькому снять все на свой Alcatel Idol 3. Правда одной рукой и снимать и показывать было не очень удобно, поэтому периодически я не мог попасть в кнопки Назад и Домой ;)) Но на смысл обзора это не влияет. Как видно, тач работоспособен, все функции работают, разделы видны, backup'ы делаются и восстанавливаются, zip'ы прошиваются.


Backup'ы стоковых прошивок для TWRP


  • login3_twrp_V5.0.8.0.7z - официальная прошивка 5.0.8.0 (backup не включает в себя раздел recovery, т.е. оригинального recovery 5.0.8.0 в состав данного backup'а не входит)
  • login3_twrp_V5.2.8.0.7z - официальная прошивка 5.2.8.0, последняя на момент написания этого поста (в backup входят все разделы)

Для развертывания backup'а загрузитесь в TWRP и создайте backup своей текущей прошивки, чтобы на SD-карте появилась папка содержащая ваш backup - /SD-карта/TWRP/BACKUPS/<идентификатор>/. Затем распакуйте содержимое скачанного архива в данную папку и выберите в меню TWRP - Restore.

TWRP 2.8.1.0 для Мегафон Login 3 MT4A


Скачать TWRP 2.8.1.0 для Мегафон Login 3 MT4A
Пароль на архив: twrp.decker.su


История версий:

  • v1 - Первая релизная версия TWRP для Мегафон Login 3.
  • v2 - Вторая версия, включающая следующие изменения от vevs:

    • для контроля версии из ББ3 - изменил ro.build.display.id=V5.2.x.x
    • обновил бинарник busybox до 1.22.1 (версии Libc и прочего совпадают - работает нормально), unzip теперь знает новые версии форматов;
    • заменил install-recovery.sh на родной (размер больше на 1 байт) - некоторые патчи и скрипты контролируют его по SHA1, поэтому его лучше не менять;
    • добавил файлик временных зон
    • исправил маленький косяк (или фичу) в init.rc, из-за которого tmpfs вёл себя призабавно при попытке залить патч больше 462 Mb.

p.s.  Не забываем поделиться этой новостью, а также про волшебную кнопку Поддержать проект  ;)

Технические подробности


Для тех кого интересуют технические подробности сборки или ответ на вопрос - почему же из официальных исходников TWRP нельзя было собрать рабочую версию, пока что могу рассказать следующее. В Мегафон Login 3 нестандартный framebuffer и overlay. Если обратить внимание на структуру mdp_overlay:

struct mdp_overlay {
 struct msmfb_img src;
 struct mdp_rect src_rect;
 struct mdp_rect dst_rect;
 uint32_t z_order; /* stage number */
 uint32_t is_fg;  /* control alpha & transp */
 uint32_t alpha;
 uint32_t blend_op;
 uint32_t transp_mask;
 uint32_t flags;
 uint32_t id;
 uint32_t user_data[6];
 uint32_t bg_color;
 uint8_t horz_deci;
 uint8_t vert_deci;
 struct mdp_overlay_pp_params overlay_pp_cfg;
 struct mdp_scale_data scale;
};

См. файл msm_mdp.h. Константа MSMFB_OVERLAY_SET после сборки превращается в 0xC2686D87. Если вдаваться в подробности и посмотреть как она получается:

#define IOCPARM_MASK 0x1fff  /* parameter length, at most 13 bits */
#define IOCPARM_LEN(x) (((x) >> 16) & IOCPARM_MASK)
#define IOCBASECMD(x) ((x) & ~IOCPARM_MASK)
#define IOCGROUP(x) (((x) >> 8) & 0xff)
#define IOC_OUT  0x40000000 /* copy out parameters */
#define IOC_IN  0x80000000 /* copy in parameters */
#define IOC_INOUT (IOC_IN|IOC_OUT) = C0000000
#define _IOC(inout,group,num,len) (inout | ((len & IOCPARM_MASK) << 16) | ((group) << 8) | (num))
#define _IOWR(g,n,t) _IOC(IOC_INOUT, (g), (n), sizeof(t))
#define MSMFB_IOCTL_MAGIC 'm'
#define MSMFB_OVERLAY_SET       _IOWR(MSMFB_IOCTL_MAGIC, 135, struct mdp_overlay)

То недрудно понять что 0x268 - это не что иное как размер структуры, т.е. sizeof(mdp_overlay). Так вот, в нашем планшете overlay surface structure, т.е. struct mdp_overlay другая. Она длиннее на 0x60 байтов. Поэтому при сборке из исходников при запуске TWRP мы получаем либо отсутствие изображения, либо синий экран - т.е. невозможность проинициализировать Overlay (Overlay Set Failed). В сборке же TWRP из этого поста, за счет использования патченных бинарников от других устройств - используется правильная структура overlay'я, поэтому он работает.

Видеоинструкция по установке TWRP


Совсем недавно уважаемый zzzepr, с замечательными видеороликами которого вы можете ознакомиться на его канале YouTube, снял небольшую видеоинструкцию по установке TWRP на Мегафон Login 3:


Так что теперь, проблем с установкой TWRP, если они у кого-то возникали, не должно остаться совсем.

пятница, 10 июля 2015 г.

Мегафон Login+. Android.Backdoor.232.origin.

Вчера один из пользователей 4PDA под ником Melmar сообщил о том, что DrWeb на официальной стоковой прошивке Мегафон Login+ (V025) стал детектировать угрозу Android.Backdoor.232.origin в файле /system/app/SystemPipe.apk ... В этом посте я постараюсь разобраться в причинах проблемы, а также расскажу о том, каким образом можно удалить данный файл с телефона, даже не обладая root-правами как таковыми. Начну пожалуй с того, что корни этой проблемы оказались гораздо глубже, чем казалось на первый взгляд.

Первое что было сделано, это отправлен запрос в службу технической поддержки антивируса DrWeb с приложением данного файла:

"Добрый день. После недавнего обновления DrWeb, как для десктопа, так и для мобильных устройств стал детектировать приложенный во вложении файл как Android.Backdoor.232.origin. По результатам проверки файла на VirusTotal угрозу в нем детектирует только DrWeb. Данный файл является системным приложением в стоковой прошивке фаблета Мегафон Login+ и присутствует у всех пользователей данного устройства по-умолчанию (т.е. располагается он в /system/app). Можно ли попросить вас провести дополнительный анализ данного конкретного файла и выдать заключение, является ли он вредоносным или нет? Я пробовал разобрать APK'шку и проанализировать декомпилированные исходники этого приложения. Java-код является обфусцированным и на его анализ у меня может уйти достаточно много времени. Что видно сразу - это функционал отправки GET и POST запросов через HTTP, содержащих информацию о IMEI устройства, IMSI SIM-карты и некоторой другой информации об устройстве. URL куда отправляются данные запросы определить пока не удалось, ввиду обфускации приложения. Хотелось бы услышать комментарии специалистов, заранее спасибо!"

VirusTotal при анализе данного файла действительно показывал наличие угрозы, с показателем выявления 1 / 55, т.е. из 55 антивирусов файл как вредоносный определил только DrWeb.

К сожалению, ответа технических специалистов я не получил, зато система практически мгновенно прислала мне результат автоматической обработки запроса [drweb.com #5826005] Обработано: SUBMITTED FALSE ALARM:

Это приложение установлено в системную область вашего устройства. У антивируса нет доступа к системной области, поэтому он не может удалить это приложение. Выполните следующие шаги:

1) Переустановите официальную прошивку устройства (это можно сделать в сервисных центрах производителя вашего устройства).
2) Если после переустановки прошивки приложение все еще присутствует в системной области вашего устройства, попробуйте обратиться к производителю устройства за дополнительной информацией об этом приложении.
3) В случае, если на вашем устройстве открыт root-доступ, вы можете попробовать удалить это приложение с помощью специальных утилит.


Основываясь на результатах анализа DrWeb, а также на собственных результатах исследования (странная эта APK, и функционал у нее странный, например, при ее анализе четко видно, что одной из функций является отправка GET / POST запросов с полной информацией об устройстве, включая IMEI, IMSI и другие параметры куда-то во вне ... все это конечно можно было бы списать на системную активность, но обфусцирование кода внутри APK, а также наличие крайне странных констант и т.п. однозначно наводят на мысль что это приложение с большой вероятностью не может принадлежать к легитимным системным приложениям, т.к. все остальные компоненты прошивки, включая системные приложения, framework и т.п. не обфусцированы и не содержат столько подозрительного кода, так что с большой долей вероятности SystemPipe.apk все же является BackDoor'ом), я принял решение удалить его из телефона. Однако перед этим решил посмотреть, в какой же версии прошивки он появился ...

И вот тут мне действительно пришлось удивиться. Во-первых я обнаружил что файл SystemPipe.apk присутствует не только во всех версиях стоковой прошивки - V023, V024 или V025, но также каким-то образом попал и в прошивки для других устройств на базе MediaTek MT6582M, в частности KingSing S1 и некоторых других. Если подразумевать что имело место внедрение вредоносного кода в прошивку, то он был внедрен в исходники Android для MTK из которых собирались релизные версии прошивок у китайцев. Для прошивки KingSing Mod S1 я уже выпустил фикс login_plus_kingsin_fix_04.zip для установки через кастомное recovery (CWM или PhilZ), которое позволяет удалить SystemPipe.apk. Сам фикс можно взять на странице прошивки в разделе Q&A (см. последний вопрос).

Первый способ это с помощью получения root-прав, т.е. получаем root, устанавливаем тот же Root Explorer и удаляем /system/app/SystemPipe.apk через него.

Второй способ.

  • Устанавливаем приложение Debug Menu Access и в нем выбираем пункт MTK User2Root, а затем нажимаем кнопку Root. На экране при этом должна появиться надпись - Update to Root Success. 
  • Активируем режим разработчика и отладку по USB, после чего качаем platform-tools, например, отсюда и проверяем что мы можем подключиться к телефону через adb, с помощью adb devices
  • Если по каким-то причинам устройство видится как Android ADB Interface в диспетчере устройств, но тем неменее по adb devices у вас пусто, добавьте в файл %USERPROFILE%\.android\adb_usb.ini строчку 0x1271.
  • После чего заходим в консоль с помощью adb shell и делаем следующее:
  • mount -o remount,rw /system (монтируем системный раздел на запись)
  • rm /system/app/SystemPipe.apk (удаляем SystemPipe.apk)
Третий способ - это прошить фикс, описанный выше.

Также после удаления SystemPipe.apk рекомендуется сделать Wipe Data / Factory Reset (!), т.к. заранее неизвестно какие приложения были установлены в телефон за время работы backdoor'а, у меня например оказался установленным data/app/com.therefore.miner-1.apk , который в списке запущенных приложений отображался как ease c такой вот безобидной иконкой:


Естественно, что я такой не устанавливал. К слову, как пишут здесь это приложение несколько раз появлялось у человека автоматически, даже после удаления. Так что вопрос что еще оказалось измененным в системе - остается открытым.

Это же приложение отвечало за показ рекламы прямо на рабочем столе. Установить это было довольно просто, когда рекламное окошко поверх рабочего стола все-таки всплыло, я обнаружил процесс ease в списке процессов по ps:

u0_a96    2844  134   632528 54256 ffffffff 400dd99c S com.therefore.miner

Сразу же после kill -9 2844 данное окно с рекламой пропало. Так что плюс ко всему не мешает проверить телефон на наличие com.therefore.miner.

Обновлено: com.therefore.miner-1.apk не что иное как Adware.Downstairs.1.origin в классификации DrWeb. Собственно вот результат на VirusTotal'е.

Выводы: Крайне не хочется сгущать краски, но, к сожалению, в наше время реалии таковы, что даже покупка нового смартфона в салоне связи или в офисе оператора не гарантирует вам того, что на нем не будет предустановлено вредоносного ПО. Как вы знаете, большинство Android устройств производятся на фабриках в Китае и оператор, заказывая производство определенного устройства фактически полагается на честность и порядочность китайских разработчиков. Безусловно, наверняка перед тем как выпустить устройство в продажу проводятся какие-то тесты, экспертизы и т.п., но от "ошибок" никто не застрахован. Сложно сказать на каком этапе вредоносное ПО было внедрено в состав прошивки, скорее всего, т.к. файл присутствует в прошивке сразу нескольких устройств - компрометация исходников произошла еще на сборочных серверах в Китае. При этом, ранее угроза не была выявлена, т.к. файл попал в вирусные базы антивируса только недавно. К слову, опять же, если задуматься ... во многих устройствах произведенных в Китае включена функция FOTA, т.е. беспроводного обновления. Как вы понимаете, сервера FOTA также находятся в Китае ;) Так что если допустить, что они могут быть скомпрометированы злоумышленниками, то абсолютно все пользователи такого устройства могут получить вредоносное ПО со следующим обновлением ... а это миллионы устройств ... (ведь хотел же не сгущать краски, но видимо не вышло) ... И если при этом, вредонос будет в /system, то штатными средствами, т.е. без получения root и т.п. - вычистить его не удастся, и единственным выходом остается ожидания очередного исправления, в котором возможно, это ПО будет удалено. Однако, такие ситуации, как правило не получают огласку, даже если исправляются, поэтому пользователи все равно остаются в счастливом неведении, что же именно выполняется на их смартфонах.

Обновлено 13.07.2015 18:54 (MSK):

Файл был отправлен в антивирусную лабораторию Касперского:


Буквально через пару минут пришел ответ автоматической системы обнаружения, основывающийся на проверке Антивирусом Касперского с последними базами:


Что вообщем-то, естественно, т.к. судя по анализу на VirusTotal'е в базах KAV'а данный файл не значится. Но я решил не останавливаться на достигнутом и аналогичное письмо было отправлено в аvast!, AVG и ESET. О результатах расскажу позже.

Обновлено 14.07.2015 11:27 (MSK): 

Также был оставлен запрос на форуме ЛК в ветке Защита мобильных устройств -  Android.Backdoor.232.origin, но ответ пока не был получен. При желании, вы можете присоединиться к обсуждению проблемы в комментариях здесь, либо в указанной ветке на форуме ЛК.

Забавляет другое, если раньше, еще пару лет назад можно было без проблем отправить новую угрозу на исследование и получить оперативный ответ, то теперь, приходится сталкиваться вот с такими вот автоматическими системами и пытаться хоть как-то "найти концы", куда отправить подозрительный файл, чтобы им занялись вирусные аналитики. К слову, от AVG пришел "отлуп" что по указанному email подобные заявки о новых угрозах не обрабатываются.

Обновлено 15.07.2015 00:00 (MSK): 

Общение с техподдержкой антивирусных вендоров зачастую напоминает войну с огромными боевыми человекоподобными роботами, стоящими на страже их рубежей. Системы тикетов, автоматического анализа запросов - это безусловно хорошо, но в результате запрос о новом вредоносе так или иначе не достигает своей цели. avast! и AVG - молчание, в ЛК (KAV) - ситуация изменилась только тем, что на форуме спросили номер KLAN. Запрос в ESET отправленный на samples@eset.com остался проигнорированным, был отправлен повторный запрос уже на support@esetnod32.ru, именно этот адрес значится в их FAQ в качестве ответа на вопрос "Каким образом можно отослать зараженный файл Вам для анализа?". Идут вторые сутки ... ждем ... ;)

Обновлено 15.07.2015 16:29 (MSK): 

Наконец-то получен ответ от специалистов Лаборатории Касперского:


В присланном Вами файле обнаружено новое вредоносное программное обеспечение:
Backdoor.AndroidOS.Agent.bl
Его детектирование будет включено в очередное обновление антивирусных баз. 
Благодарим за оказанную помощь.

Обновлено 15.07.2015 21:39 (MSK): 

ESET "проснулся" и обработал запрос:


Честно говоря, я уже и не надеялся. Так или иначе, можно ожидать что Android.Backdoor.232.origin / Backdoor.AndroidOS.Agent.bl будет в базах как минимум трех популярных антивирусов, что уже хорошо.

Обновлено 16.07.2015 17:22 (MSK): 


Ну вот собственно и результат (к слову, ESET в процессе добавления в базы, от них пришло письмо в стиле "Thank you for your submission.
The detection for this threat will be included in our next signature update, expected version: 11950.". Удивительно то, что на добавление угрозы Лабораторией Касперского среагировал и китайский антивирус Baidu-International ;)

Обновлено 16.07.2015 23:55 (MSK): 

ESET, как и следовало ожидать, также внес данный backdoor в свои антивирусные базы, итого, классификация следующая: Android.Backdoor.232.origin (DrWeb), HEUR:Backdoor.AndroidOS.Agent.bl (Kaspersky), Android/Agent.BJ (ESET-NOD32), Backdoor.AndroidOS.Agent.bl (Baidu-International).

Как говорится, Mission Accomplished ;)

Обновлено 18.08.2015 13:09 (MSK): 

В официальном обновлении прошивки V028_20150812, которое вышло 12 августа backdoor все-таки был удален. Правда в описании обновления про это нам, естественно, не рассказали, ограничившись лишь двумя фразами: 
  1. Повышена стабильность работы устройства.
  2. Исправлены ошибки.
Впрочем, ошибки действительно были исправлены, а вредоносный код был удален. Поэтому обновление V028 настоятельно рекомендуется к установке. 

четверг, 9 июля 2015 г.

Билайн Смарт Dual. Телепаты не ошиблись.

Не так давно я писал о скором старте продаж аппарата Билайн Смарт Dual, так вот "телепаты" снова не ошиблись. Буквально пару дней назад стартовали продажи данного аппарата в Армении и Кыргызстане.

"Beeline Smart Dual уже сегодня поступил в продажу в Бишкеке и Чуйской области. А с 10 июля мобильное устройство можно будет приобрести в любом из офисов продаж и обслуживания или торговой точке компании по всей республике. Телефон имеет ряд преимуществ. Во-первых, это доступная стоимость современного мобильного устройства, которая составляет в рознице всего 3890 сомов. Это самая низкая цена на рынке среди устройств со схожими характеристиками. Кроме того, при покупке смартфона Beeline Smart Dual предоставляет в подарок 4 Гб интернет-трафика на 2 месяца. На устройство предоставляется гарантия сроком на 1 год. Ну и, наконец, возможность пользоваться двумя SIM-картами одновременно, что так привлекает абонентов.
Beeline Smart Dual – современный смартфон с возможностью пользоваться двумя SIM-картами одновременно. Один из разъемов работает только в сети Beeline и поддерживает стандарт 3G. А второй позволяет пользоваться связью других операторов и настроен на стандарт 2G.
Девайс работает под управлением последней версии операционной системы Android 4.4 KitKat с мощным двухъядерным процессором 1,3 ГГц и сенсорным дисплеем 4 дюйма, 3,2–мегапиксельной камерой со вспышкой и емким аккумулятором. Смартфон поддерживает Wi-Fi, Bluetooth 4.0, а также обладает GPS-приемником." (с) Стартовали продажи новых смартфонов Beeline Smart Dual


Ожидается ли продажа данного телефона в российском Билайне - пока нет никакой информации. Заявленная цена аппарат в Кыргызстане составляет 3890 сомов, т.е. около 3560 руб., в Армении - 33 900 др. (4055 руб.)

Ссылки по теме:

Мегафон Login+ (MFLoginPH). ChikitO Rom v4.

Давненько я не брал в руки шашек ... вернее не рассказывал ничего о фаблете Мегафон Login+, так что возможно этот пост покажется кому-то необычным, во-первых потому что я решил вернуться на некоторое время к обзорам данного устройства, а во-вторых, потому что сегодня я постараюсь рассказать вам о прошивке, которая была сделана другим разработчиком, ChikitO. Для тех кто не знаком с его работами, могу сказать что ChikitO - это тот человек, который портировал рекордное количество прошивок с устройств в MT6582M на Мегафон Login+, сколько точно, наверное он и сам затрудняется сказать. Некоторая часть из них портировалась "ради интереса" и имела незначительные недоработки, однако, в основной своей массе - прошивки получались вполне работоспособными и довольно интересными. Об одной из таких - ChikitO ROM v4 и будет сегодняшний рассказ.

Как следует из названия, это уже четвертая версия данной прошивки, с множеством оптимизаций и исправленных багов. Саму прошивку можно скачать здесь - ChikitO Rom v4, там же вы сможете найти ее подробное описание и историю версий.

Установка прошивки осуществляется через любое кастомное recovery - CWM или PhilZ Touch Recovery по стандартной схеме, т.е. скачиваем ZIP с прошивкой из этого поста на внешнюю карту памяти (к слову, там же есть и подробная инструкция по установке), загружаемся в CWM или PHilz, делаем Wipe Data / Factory Reset для очистки разделов Data и Cache и затем, устанавливаем zip с прошивкой через меню Install Zip. Забегая вперед, скажу что прошивка получилась очень легкой и не требовательной к ресурсам - сам архив с прошивкой занимает всего 230 Mb.


После успешной установки прошивки телефон какое-то время инициализируется, отображая при этом "гипнотизирующую анимацию" и в итоге мы попадаем на "рабочий стол". Мастер первоначальной установки по-умолчанию отключен и телефон сразу же после первого запуска готов к работе (подключиться к WiFi или настроить аккаунт Google можно из меню Настройки):



Список изменений в последней версии прошивки:

ChikitO Rom v4 
  • Оптимизация 
  • Исправление багов (баг с неработающей кнопкой настройки в лаунчере, память телефона в стандартном файловом менеджере и другие) 
  • Новые обои по умолчанию 
  • Добавлены приложения (Фонарик, UnlockClub) 
  • Правки в build.prop 
  • Обновлен браузер AOSP, до более нового 
  • Новый локскрин (теперь на нем показаны оба оператора) 
  • Новая бутанимация 

Как видно из скриншотов - прошивка минималистична, удалены все сторонние приложения и присутствует только самое необходимое. В прошивке используется ядро от стоковой версии V026, поддерживаются две SIM-карты, а также реализован перенос приложений на карту памяти. Все функции прошивки работоспособны и протестированы.


Обсуждение прошивки ведется в соответствующей теме форума, там же можно пообщаться с разработчиком и задать ему интересующие вас вопросы.