Firmware_tool - для разборки/сборки/део/одексирования

Прошивки и их моды\ Кухни\ Игры и приложения\ Различные настройки\ Различные вопросы по ОС Android и WM и т.п.

Модераторы: Lunat, pvsurkov, AlexG1, KSAT

Куратор темы: michфуд

Firmware_tool - для разборки/сборки/део/одексирования

Сообщение Ответ:#1 » michфуд » 10 май 2012, 14:19

Предлагаю вниманию коллег по разработке и модификации прошивок
некоторый собственный набор, призванный максимально упростить работу
по разборке, редактированию, сборке, одексированию и пр.

[/successbox]


 Изменения v2.1
 Изменения v2.
 Изменения v1.9
 Изменения v1.8
 Изменения v1.7
 Изменения v1.6
 Изменения v1.5
 Описание и назначение:
 Системные требования:
 Используемые папки, их структура и назначение:
 Как пользоваться программой:
Вложения
siir.es.adbWireless-1.rar
(333.32 КБ) Скачиваний: 2742
Последний раз редактировалось michфуд 03 фев 2015, 15:11, всего редактировалось 127 раз(а).
  • 192

Аватара пользователя
michфуд

Разработчик
 
Сообщения: 3423
Зарегистрирован: 10 окт 2011, 12:55
Откуда: Н.Новгород
Репутация: 3323

Firmware_tool - для разборки/сборки/део/одексирования

Сообщение Ответ:#21 » steelunicorn » 22 май 2012, 09:38

michфуд писал(а):я наверное просто предупреждение сделаю чтоб выскакивало при каждой операции, если в папке frame_for_work нет или меньше 5 файлов скажем.
просто unp_sys - может быть заполнен не целиком - например когда с тела 1 файл стянут - да и так выбирать проще с которым работать - в глазах не рябит от файлов.

Не-не, я про другое говорил. Вот у тебя блок распаковки system.img. В нем не надо делать копирование папки framework в 3_framework_for_work
Достаточно просто сделать set %FM_PATH% = %FirmWare%\%SOURCE%\%SystemImageUnpacked%\framework в начале скрипта.
Тогда полюбому будет использоваться фреймворк только что распакованной прошивки. И есть 100% гарантия что он в прошивке есть, если конечно прошивка рабочая :-):
 


michфуд писал(а):вопросы:
1. как вывести список файлов из телефона из папки system/app (framework) в алфавитном порядке и только apk (без odex) с помощью команд busybox например?

Ну примерно вот так: busybox ls /system/app/*apk*

michфуд писал(а):2. при создании apk или jar (последний более наглядно) с помощью 7za получается архив размером каким угодно, но не 313 байт. т.е. исходный jar содержит в себе только папку с манифестом и весит ровно 313 байт, при этом степень сжатия - 102%. как я не изголялся с архиватором - точно такой же получить не смог. т.е. все работает, но дело как бы в принципе...

Вот тут не понял о чем речь.

Добавлено спустя 3 минуты 49 секунд:
Kostik44 писал(а) on 22 май 2012, 09:37:
michфуд писал(а) on 22 май 2012, 07:10:В папке framework for work должны лежать все файлы фреймворка а не только 2.

Закинул туда полнолстью содержимое папки framework, результат тот же.

 лог


Если ты 0.2 версией пользуешься, то там в bin нету aapt.exe может в этом дело?
Star A3
Сборка: 11HX1.JY138.111205_SU [Odex] | [Deodex]
Радиомодуль: MAUI.11AMD.W11.37.SP.V6, 2012/03/16 13:44
  • 0

Аватара пользователя
steelunicorn
Специалист
 
Сообщения: 394
Зарегистрирован: 14 мар 2012, 20:43
Откуда: Воронеж
Репутация: 221

Firmware_tool - для разборки/сборки/део/одексирования

Сообщение Ответ:#22 » michфуд » 22 май 2012, 10:16

steelunicorn писал(а) on 22 май 2012, 09:42:В нем не надо делать копирование папки framework в 3_framework_for_work

но для чего-то я это сделал изначально :-) - сам не помню уже...

по поводу ls - кажись понял косяк - он сперва заглавные буквы выводит, а потом маленькие, линукс, фигли :a_g_a:

про архив - исходный одексированный jar имеет размер 313 байт.
если его распаковать и снова запаковать архиватором 7za - то 313 уже не получится
  • 0

Аватара пользователя
michфуд

Разработчик
 
Сообщения: 3423
Зарегистрирован: 10 окт 2011, 12:55
Откуда: Н.Новгород
Репутация: 3323

Firmware_tool - для разборки/сборки/део/одексирования

Сообщение Ответ:#23 » steelunicorn » 22 май 2012, 10:55

michфуд писал(а) on 22 май 2012, 10:16:
steelunicorn писал(а) on 22 май 2012, 09:42:В нем не надо делать копирование папки framework в 3_framework_for_work

но для чего-то я это сделал изначально :-) - сам не помню уже...

по поводу ls - кажись понял косяк - он сперва заглавные буквы выводит, а потом маленькие, линукс, фигли :a_g_a:

про архив - исходный одексированный jar имеет размер 313 байт.
если его распаковать и снова запаковать архиватором 7za - то 313 уже не получится

Скорее всего для порядка сделал. Но полезной функции она не несет, поэтому можно и убрать.

Насчет архива - я думаю это несущественно. 7z - это все таки чисто zip а другой архиватор, разные реализации алгоритма сжатия.
Star A3
Сборка: 11HX1.JY138.111205_SU [Odex] | [Deodex]
Радиомодуль: MAUI.11AMD.W11.37.SP.V6, 2012/03/16 13:44
  • 1

Аватара пользователя
steelunicorn
Специалист
 
Сообщения: 394
Зарегистрирован: 14 мар 2012, 20:43
Откуда: Воронеж
Репутация: 221

Аватара пользователя
michфуд

Разработчик
 
Сообщения: 3423
Зарегистрирован: 10 окт 2011, 12:55
Откуда: Н.Новгород
Репутация: 3323

Firmware_tool - для разборки/сборки/део/одексирования

Сообщение Ответ:#25 » savyol » 22 май 2012, 11:27

michфуд писал(а):ps. в 4м андроиде не хочет собирать framework-res.pk

вот эта программа разбирает и собирает в 4-ке framework-res.apk(проверенно на расширенном меню), посмотри может что возьмёшь из неё.
 Мои смартфоны
0610 0818
  • 1

Аватара пользователя
savyol
Гуру
 
Сообщения: 2250
Зарегистрирован: 04 сен 2011, 23:52
Откуда: г.Александров, Владимирская обл.
Репутация: 1993

Firmware_tool - для разборки/сборки/део/одексирования

Сообщение Ответ:#26 » michфуд » 22 май 2012, 11:49

savyol
там ничего нового - apktools 1.4.2
мой скрипт тоже собирает, ошибка идет когда ставится framework 1.apk
вот при таких настройках - это также как тот скрипт работает, проверь
Изображение

Добавлено спустя 33 минуты 26 секунд:
хотя нет - был не прав... у меня была версия apktool 1.4.2 269870b а в той сборке применена 31e6dc5
добавим...
  • 0

Аватара пользователя
michфуд

Разработчик
 
Сообщения: 3423
Зарегистрирован: 10 окт 2011, 12:55
Откуда: Н.Новгород
Репутация: 3323

Firmware_tool - для разборки/сборки/део/одексирования

Сообщение Ответ:#27 » Kostik44 » 22 май 2012, 15:14

michфуд
Попробовал новую версию (правда на другом компе), деодексирует корректно, собирает изменённый файл тоже. А вот связаться с телефоном через ADB чтобы сделать одексацию не получается, не пойму в чём дело. Драйвера ADB стоят, busybox на телефоне тоже, dexopt-wrapper закинул. :du_ma_et:
Sony Xperia V
  • 0

Аватара пользователя
Kostik44
Пользователь
 
Сообщения: 105
Зарегистрирован: 16 фев 2011, 01:11
Репутация: 12

Аватара пользователя
michфуд

Разработчик
 
Сообщения: 3423
Зарегистрирован: 10 окт 2011, 12:55
Откуда: Н.Новгород
Репутация: 3323

Firmware_tool - для разборки/сборки/део/одексирования

Сообщение Ответ:#29 » steelunicorn » 22 май 2012, 21:02

michфуд писал(а) on 22 май 2012, 17:09:что пишет? сам adb.exe имеется?

Не имеется в новой версии adb.exe ;;-)))
Не стоит рассчитывать что у конечного пользователя каким-то чудом в %PATH% найдется какой-нибудь нужный экзешник. Лучше пусть на пару мегабайт архив больше весит, но все необходимое должно лежать в bin.
Star A3
Сборка: 11HX1.JY138.111205_SU [Odex] | [Deodex]
Радиомодуль: MAUI.11AMD.W11.37.SP.V6, 2012/03/16 13:44
  • 1

Аватара пользователя
steelunicorn
Специалист
 
Сообщения: 394
Зарегистрирован: 14 мар 2012, 20:43
Откуда: Воронеж
Репутация: 221

Firmware_tool - для разборки/сборки/део/одексирования

Сообщение Ответ:#30 » michфуд » 22 май 2012, 21:18

его и в старых не имелось :-)
Ладно... Но уж минимум то надо иметь... Иначе и соваться не стоит...
А может пусть будет «защита от дурака?»

ps - добавил логгирование (мама-не-негорюй-расширенное - заблудиться можно)
версию апктул для 4го framework вложил в выбор апктулз
короче v0.4 получилось )))
http://narod.ru/disk/50149336001.aa1ba0 ... 4.rar.html
  • 1

Аватара пользователя
michфуд

Разработчик
 
Сообщения: 3423
Зарегистрирован: 10 окт 2011, 12:55
Откуда: Н.Новгород
Репутация: 3323

Firmware_tool - для разборки/сборки/део/одексирования

Сообщение Ответ:#31 » steelunicorn » 22 май 2012, 21:57

michфуд писал(а) on 22 май 2012, 21:18:его и в старых не имелось :-)
Ладно... Но уж минимум то надо иметь... Иначе и соваться не стоит...
А может пусть будет «защита от дурака?»

ps - добавил логгирование (мама-не-негорюй-расширенное - заблудиться можно)
версию апктул для 4го framework вложил в выбор апктулз
короче v0.4 получилось )))
http://narod.ru/disk/50149336001.aa1ba0 ... 4.rar.html

Не-не, в первом все было. И aapt и adb.
Я думаю дураков на форуме не так много чтобы от них защищаться :-)
Star A3
Сборка: 11HX1.JY138.111205_SU [Odex] | [Deodex]
Радиомодуль: MAUI.11AMD.W11.37.SP.V6, 2012/03/16 13:44
  • 0

Аватара пользователя
steelunicorn
Специалист
 
Сообщения: 394
Зарегистрирован: 14 мар 2012, 20:43
Откуда: Воронеж
Репутация: 221

Firmware_tool - для разборки/сборки/део/одексирования

Сообщение Ответ:#32 » Kostik44 » 23 май 2012, 09:40

michфуд писал(а) on 22 май 2012, 17:09:что пишет? сам adb.exe имеется?

Естестевенно, к тому же я в PATH прописал путь до C:\Program Files\Android\android-sdk\platform-tools

Запускается adb.exe и всё, постоянное ожидание подключения телефона к USB. В телефоне отладка по USB включена, драйвера ADB стоят. Может конечно драйвер кривой... :du_ma_et: Просто у меня через USB MyPhoneExplorer тоже не соединяется. Смарт Lenovo A750.
  • 0

Аватара пользователя
Kostik44
Пользователь
 
Сообщения: 105
Зарегистрирован: 16 фев 2011, 01:11
Репутация: 12

Аватара пользователя
michфуд

Разработчик
 
Сообщения: 3423
Зарегистрирован: 10 окт 2011, 12:55
Откуда: Н.Новгород
Репутация: 3323

Firmware_tool - для разборки/сборки/део/одексирования

Сообщение Ответ:#34 » Kostik44 » 23 май 2012, 11:21

michфуд писал(а) on 23 май 2012, 09:55:а через что соединяется?

MyPhoneExplorer работает через WiFi. Если я правильно понял вопрос.
Пробовал оригинальные драйвера доработать:
C:\Program Files\Android\android-sdk\extras\google\usb_driver
 "usb_driver"

Драйвера ставятся, но соединяться всё равно не хочет.

PS: Заменил файл adb.exe в system32 и ADB заработало. :)

Добавлено спустя 4 часа 14 минут 32 секунды:
Не понял один момент, беру один и тот же деодексированный файл Contacts.apk, apktool_1.4.1 декомпилирует его и внутри получается этот файл TwelveKeyDialer.smali, а если тоже делаю командой 23 в ANDROID FIRMWARE TOOL v0.4 (SMALI 13.2), то в папке получается этот TwelveKeyDialer.smali. И ещё теперь новые ошибки при работе через ADB:
 ошибки

Я так понимаю что то не так установил и настроил на самом телефоне, можно поподробнее где скачать правильные "dexopt-wrapper и busybox с правами 777". Как установить.
  • 0

Аватара пользователя
Kostik44
Пользователь
 
Сообщения: 105
Зарегистрирован: 16 фев 2011, 01:11
Репутация: 12

Firmware_tool - для разборки/сборки/део/одексирования

Сообщение Ответ:#35 » steelunicorn » 23 май 2012, 16:16

Kostik44 писал(а) on 23 май 2012, 15:36:Не понял один момент, беру один и тот же деодексированный файл Contacts.apk, apktool_1.4.1 декомпилирует его и внутри получается этот файл TwelveKeyDialer.smali, а если тоже делаю командой 23 в ANDROID FIRMWARE TOOL v0.4 (SMALI 13.2), то в папке получается этот TwelveKeyDialer.smali.

Apktool разбирает файл сам. А FW_Tool по умолчанию разбирает через baksmali с опцией -p (использовать именование v<x> вместо p<x> для регистров размеченных в методах - я сам не понимаю что это, просто перевел :-) ) Выбери в FW_tool разборку через apktool и получишь идентичные smali.

Kostik44 писал(а) on 23 май 2012, 15:36:И ещё теперь новые ошибки при работе через ADB:
 ошибки

Я так понимаю что то не так установил и настроил на самом телефоне, можно поподробнее где скачать правильные "dexopt-wrapper и busybox с правами 777". Как установить.

ro.secure=1 в default.prop?
Star A3
Сборка: 11HX1.JY138.111205_SU [Odex] | [Deodex]
Радиомодуль: MAUI.11AMD.W11.37.SP.V6, 2012/03/16 13:44
  • 1

Аватара пользователя
steelunicorn
Специалист
 
Сообщения: 394
Зарегистрирован: 14 мар 2012, 20:43
Откуда: Воронеж
Репутация: 221

Firmware_tool - для разборки/сборки/део/одексирования

Сообщение Ответ:#36 » michфуд » 23 май 2012, 16:41

steelunicorn
именно так.
про это собирался отдельно написать.
на сайте автора smali подробно расписано.
если проще - есть 2 вида регистров p и v - в чем разница - я так и не понял сам если честно.
понял одно - когда они все вида v - гораздо проще разбираться с ними.
и еще - если в методе объявлено 6 регистров вида v и в этот метод передается 2 переменные - то они будут иметь номера v6 и v5.

- Что такое apk?
Это контейнер для приложения андроид. На самом деле - zip архив. Но содержимое этого архива (файлы лежащие внутри) - сжато по специальной технологии. Т.е. если бы внутри лежал файл *.txt - после извлечения из архива прочитать его невозможно в текстовом редакторе - его необходимо еще один раз распаковать.
Обязательный состав:
- папка META-INF внутри которой лежат сертификаты и подпись,
- AndroidManifest.xml - файл с различными свойствами приложения, в том числе - неразрывно связан с предыдущей папкой META-INF. Изменение той или иной составляющей этой связки приведет к тому, что приложение утратит свою подпись, не будет запускаться и будут появляться ошибки.
- папки res, assets и пр - папки, в которых лежат ресурсы - картинки, библиотеки и пр.
- classes.dex - файл с кодом для далвик-машины - то что мы потом увидим как смали.
- resources.arsc - тоже файл с ресурсами (этот файл как правило не сжимается в архиве - по умолчанию у меня все arsc кладутся в архив без сжатия - мое мнение таково, что это пусть мизер, но уменьшит нагрузку на проц телефона при их извлечении - обратная сторона - занимаемое место в разделе system. Иногда оно жестко лимитировано. Здесь нужно действовать по ситуации и поставленным целям).

- Что такое apktools?
Это ява-скрипт, который распаковывает apk в нормальные читаемые файлы. В состав apktools УЖЕ внедрна та или иная версия smali - поэтому он имеет возможность распаковывать classes.dex на смали. НО!!! эта версия жестко привязана к самой версии apktools и мы не имеем возможность запускать smali с параметрами для гибкости - например "-p" - для создания всех регистров в виде v. Т.е. apktools - прекрасно разбирается со всем содержимым apk, кроме самого кода - classes.dex.
Но всегда есть нюансы - от версии к версии правились разные баги, и до сих пор встречаются ситуации, когда apktools косячит с такими вещами, как знаки %, $ и тому подобное - это то с чем сталкивался лично я. Т.е. apktools не всегда может правильно разобрать или собрать apk. Причем разные версии делают это по разному.
И еще одно важное замечание - apktools может рахобрать только заранее ДЕОДЕКСИРОВАННОЕ приложение, т.е. он просто не умеет работать с 2мя файлами в комплексе - *.apk + *.odex - apk он разберет, но кода там не будет.

- Что такое smali / backsmali?
Тоже ява-скрипты, но они работают только с кодом для далвик-машины - другими словами - разбирают и собирают classes.dex или ***.odex - без разницы, одинаково принимает и то и другое - причем если ему подсунуть apk внутри которого лежит classes.dex - он его тоже схавает и разберет. У этих скриптов тоже несколько версий и несколько параметров для запуска. Именно это нам и нужно для правильной разборки/сборки.

Алгоритм моего скрипта таков:
1. Если на входе одексированный apk:
- с помощью apktools разбираем сам apk чтобы извлечь все ресурсы
- с помощью backsmali разбираем ***.odex - чтобы получить код в виде smali файлов.
- потом если надо (или не надо) - коды преобразуются с помощью smali в classes.dex и запихиваются в исходный apk
т.о. получаем распакованные ресурсы, код и в добавок - деодексированный вариант файла.

2. Если на входе деодексированный файл apk:
- с помощью архиватора вынимаем classes.dex и разбираем с помощью backsmali код (classes.dex удаляем из архива, чтобы его потом нечаянно не разобрал apktools)
- с помощью apktools разбираем все ресурсы и прикладываем к коду
т.о. также получаем распакованные ресурсы, код, а деодексированный файл у нас уже был.

3. Cборка - в обратном порядке - apktools сжимает все ресурсы, причем и classes.dex тоже создает из кода - на этом можно остановиться, а можно пересобрать classes.dex с помощью smali и заменить им уже ранее собранный classes.dex с помощью apktools. Для этого и есть опция - что использовать в качестве компилятора для classes.dex.
Напоследок - перетаскиваем все что связно с подписью в новый файл apk и производим выравнивание архива с помощью zipalign - якобы так системе проще ориентироваться внутри архива и сразу находить нужные файлы.

Изменится размер apk, степень сжатия и пр. - но это не важно - главное он сохраняет работоспособность и более того - разработчики smali заявляют, что полученный после сборки код может быть более эффективным и оптимизированным нежели исходный.
Что касается jar - все точно также, с маленькими нюансами.
Последний раз редактировалось michфуд 23 май 2012, 19:48, всего редактировалось 5 раз(а).
  • 3

Аватара пользователя
michфуд

Разработчик
 
Сообщения: 3423
Зарегистрирован: 10 окт 2011, 12:55
Откуда: Н.Новгород
Репутация: 3323

Firmware_tool - для разборки/сборки/део/одексирования

Сообщение Ответ:#37 » Kostik44 » 23 май 2012, 17:03

steelunicorn писал(а) on 23 май 2012, 16:16:Выбери в FW_tool разборку через apktool и получишь идентичные smali.

Пробовал до того как написать, всё равно получается такой как написал.

steelunicorn писал(а) on 23 май 2012, 16:16:ro.secure=1 в default.prop?

Да. Я так понимаю это ReadOnly? И нужно исправить на 0.

PS: Я раньше на WM сидел. :nez-nayu:
  • 0

Аватара пользователя
Kostik44
Пользователь
 
Сообщения: 105
Зарегистрирован: 16 фев 2011, 01:11
Репутация: 12

Firmware_tool - для разборки/сборки/део/одексирования

Сообщение Ответ:#38 » michфуд » 23 май 2012, 17:36

Kostik44
все понятно - см выше что я писал. возможно надо доработать скрипт.
т.е. у меня компилятор smali/apktools только для сборки переключается, а при разборке - всегда smali. может надо и разборку разную сделать - так будет корректнее.
другими словами - в моем скрипте ты получаешь файл от TwelveKeyDialer.smali сгенерированный с помощью smali 1.3.2 - а в случае когда отдельно разбираешь с помощью apktools - сгенерированный той версией smali, которая заложена внутри самого apktools - в данном случае с 1.4.1 думаю что это smali v1.2.3 - поробуй в моем скрипте поставить эту версию смали и должен получить одинаковый результат - за исключением того, что apktool всегда тебе выдаст и p и v регистры - у меня же будут только v - возможно это тоже надо поставить в настройки для возможности делать и так и так. :-)

Добавлено спустя 2 минуты 38 секунд:
по поводу ro.secure уже выше писали, да и все остальное, связанное с правами доступа, рутом, дровами на телефон немного выходит за рамки моей темы
  • 0

Аватара пользователя
michфуд

Разработчик
 
Сообщения: 3423
Зарегистрирован: 10 окт 2011, 12:55
Откуда: Н.Новгород
Репутация: 3323

Firmware_tool - для разборки/сборки/део/одексирования

Сообщение Ответ:#39 » Kostik44 » 23 май 2012, 21:07

michфуд писал(а) on 23 май 2012, 17:39: в данном случае с 1.4.1 думаю что это smali v1.2.3 - поробуй в моем скрипте поставить эту версию смали

Тоже пробовал. :) Результат тот же.
michфуд писал(а) on 23 май 2012, 17:39: возможно это тоже надо поставить в настройки для возможности делать и так и так.

Было бы неплохо. :)
michфуд писал(а) on 23 май 2012, 17:39:по поводу ro.secure уже выше писали, да и все остальное, связанное с правами доступа, рутом, дровами на телефон немного выходит за рамки моей темы

Мне хватило бы ссылок на проверенные файлы dexopt-wrapper и busybox. Драйвера отдельная песня, согласен что данной темы не касается.
Sony Xperia V
  • 0

Аватара пользователя
Kostik44
Пользователь
 
Сообщения: 105
Зарегистрирован: 16 фев 2011, 01:11
Репутация: 12

Firmware_tool - для разборки/сборки/део/одексирования

Сообщение Ответ:#40 » steelunicorn » 23 май 2012, 21:14

Я тут в батниках поковырялся, вставил пару проверок, чтобы экранный вывод не возбуждал необоснованных подозрений :)
Ничего реально критичного нет, просто проверки на существование classes.dex перед разборкой его baksmali. И проверка существования shortlog.txt
Вложения
FW_TOOL_moreIFs.zip
(8.55 КБ) Скачиваний: 19
Star A3
Сборка: 11HX1.JY138.111205_SU [Odex] | [Deodex]
Радиомодуль: MAUI.11AMD.W11.37.SP.V6, 2012/03/16 13:44
  • 1

Аватара пользователя
steelunicorn
Специалист
 
Сообщения: 394
Зарегистрирован: 14 мар 2012, 20:43
Откуда: Воронеж
Репутация: 221

Пред.След.

Вернуться в Программная часть КПК

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0

x

#{title}

#{text}