Как обновить бинарный SU файл на Андроид — восстанавливаем root-доступ для приложения SuperSu. Запись и чтение пользовательских типов данных в двоичные файлы
Файлам. При этом с точки зрения технической реализации на уровне аппаратуры, текстовые файлы являются частным случаем двоичных файлов, и, таким образом, в широком значении слова под определение «двоичный файл» подходит любой файл.
Часто двоичными файлами называют исполняемые файлы и сжатые данные , однако некорректно так ограничивать это понятие.
Визуализация
Для наглядного представления двоичного файла он разбивается на куски равного размера, представляемые в виде чисел, записываемых, обычно, в шестнадцатеричной системе , иногда в восьмеричной , двоичной или десятичной . Означенный размер куска может быть равен одному октету , а также двум или четырём (в случае разбиения на куски по несколько октетов применяется порядок байтов , принятый на используемой платформе). Зависимость диапазона представляемых чисел от размера куска показана в таблице:
октетов | кол-во бит | шестнадцатеричное | восьмеричное | десятичное беззнаковое |
десятичное знаковое |
---|---|---|---|---|---|
1 | 8 | 00 … FF |
000 … 377 |
0 … 255 |
-128 … 127 |
2 | 16 | 0000 … FFFF |
000000 … 177777 |
0 … 65535 |
-32768 … 32767 |
4 | 32 | 00000000 … FFFFFFFF |
00000000000 … 37777777777 |
0 … 4294967295 |
-2147483648 … 2147483647 |
Нередко, помимо числовых значений байт, выводятся так же символы кодовой страницы , например печатными ASCII-символами справа) начала PNG -файла логотипа Википедии:
00000000 89 50 4e 47 0d 0a 1a 0a 00 00 00 0d 49 48 44 52 |.PNG........IHDR| 00000010 00 00 00 87 00 00 00 a0 08 03 00 00 00 11 90 8f |................| 00000020 b6 00 00 00 04 67 41 4d 41 00 00 d6 d8 d4 4f 58 |.....gAMA.....OX| 00000030 32 00 00 00 19 74 45 58 74 53 6f 66 74 77 61 72 |2....tEXtSoftwar| 00000040 65 00 41 64 6f 62 65 20 49 6d 61 67 65 52 65 61 |e.Adobe ImageRea| 00000050 64 79 71 c9 65 3c 00 00 03 00 50 4c 54 45 22 22 |dyq.e<....PLTE""| 00000060 22 56 56 56 47 47 47 33 33 33 30 30 30 42 42 42 |"VVVGGG333000BBB| 00000070 4b 4b 4b 40 40 40 15 15 15 4f 4f 4f 2c 2c 2c 3c |KKK@@@...OOO,<| 00000080 3c 3c 3e 3e 3e 3a 39 39 04 04 04 1d 1d 1d 35 35 |<<>>>:99......55| 00000090 35 51 50 50 37 37 37 11 11 11 25 25 25 0d 0d 0d |5QPP777...%%%...| 000000a0 27 27 27 1a 1a 1a 38 38 38 2a 2a 2a 08 08 08 20 |"""...888***... | 000000b0 20 20 17 17 17 2e 2e 2e 13 13 13 bb bb bb 88 88 | ..............|
Инструменты
Для визуализации
- debug (в Microsoft Windows , частично)
- hexdump (в GNU/Linux и т. п.)
Для редактирования
Литература
- Webster’s New World Dictionary of Computer Terms, 4th. Ed, Prentice Hall, NY, 1992. ISBN 0-671-84651-5
- Леонтьев Б. К. Форматы файлов Microsoft Windows XP: Справочник, М.: ЗАО «Новый издательский дом», 2005. ISBN 5-9643-0059-6
Wikimedia Foundation . 2010 .
Смотреть что такое "Бинарный файл" в других словарях:
Сущ., м., употр. сравн. часто Морфология: (нет) чего? файла, нет? файлу, (вижу) что? файл, чем? файлом, о чём? о файле; мн. что? файлы, (нет) чего? файлов, чем? файлам, (вижу) что? файлы, чем? файлами, о чём? о файлах 1. Файлом называется массив… … Толковый словарь Дмитриева
Двоичный (бинарный) файл в широком смысле: последовательность произвольных байтов. Название связано с тем, что байты состоят из бит, то есть двоичных (англ. binary) цифр. В узком смысле слова двоичные файлы противопоставляются текстовым файлам.… … Википедия
Двоичный (бинарный) файл в широком смысле: последовательность произвольных байтов. Название связано с тем, что байты состоят из бит, то есть двоичных (англ. binary) цифр. В узком смысле слова двоичные файлы противопоставляются… … Википедия
конфигурационный файл - Бинарный или текстовый файл, содержащий информацию, которая определяет поведение приложения, компьютера или сетевого устройства. Тематики сети вычислительные EN configuration file … Справочник технического переводчика
У этого термина существуют и другие значения, см. IPA (значения). .IPA формат архивных файлов приложений от Apple для iPhone, iPod Touch и iPad. Файлы с данным расширением хранятся в магазине App Store и загружаются с помощью iTunes для… … Википедия
Эта статья или раздел нуждается в переработке. В Паскале нет модулей, ООП и прочих новомодных веяний. Описание расширений должно присутствовать только в статьях о соответ … Википедия
Pascal Семантика: процедурный Тип исполнения: компилятор Появился в: 1970 г. Автор(ы): Никлаус Вирт Паскаль (англ. Pascal) высокоуровневый язык программирования общего назначения. Один из наиболее известных языков программирования, широко… … Википедия
Gopher Название: Gopher Порт/ID: 70/TCP Спецификация: RFC 1436 Основные реализации (клиенты): Mozilla Firefox, Microsoft Windows: IE 5.x, IE 6 (ограничено MS) Gopher сетевой протокол распределённого поиска и передачи документов, бывший широко рас … Википедия
Название: Gopher Порт/ID: 70/TCP Спецификация: RFC 1436 Основные реализации (клиенты): Mozilla Firefox, Microsoft Windows: Internet Explorer 5.x, Internet Explorer 6 (ограничено MS) Gopher сетевой протокол распределённого поиска и передачи… … Википедия
- / * A B C D E F G H I J K L M N O P Q R S T U V W X Y Z Примечание: Поскольку расширение имени файла может быть любым, представленный список не является полным … Википедия
Сегодня мы поговорим о самой распространённой ошибке, возникающей во время запуска программы SuperSu. Сама проблема проявляется в виде уведомления следующего содержания: «Нет бинарного файла SU и SuperSu». Как обновить бинарный su файл на Андроид? Об этом вы и узнаете из нашего материала.
SuperSU – специальное приложение для администрирования, позволяющее осуществлять расширенное управление всеми установленными приложениями. Иными словами, с SuperSU вы получаете полный контроль над своим Android-устройством. Подробнее о программе:
Итак, при запуске SuperSU на экране появилось вот такое сообщение:
Здесь нужно пояснить, что файл Su является основополагающим компонентом прав «Суперпользователя», поэтому с его удалением вы теряете root-права. И даже если у вас старая версия SuperSU, которая не исключает возможность работать на ней, то проблемы, связанные с выполнением каких-либо операций, однозначно возникнут. Поэтому обновить, или вернее, правильно установить бинарный файл Su придётся в любом случае.
Для этого нам понадобится скачать и установить программу Baidu Root . В Гугл Плее этого приложения нет, так что можно, открыв любой браузер, найти эту утилиту, или нажав на указанную ссылку, скачать прямо с этой страницы. После чего начнётся загрузка ark-файла, процесс которой будет виден на дисплее:
Теперь нам нужно открыть файл и нажать кнопку «Установить». На запрос о разрешении установки, нажимаем кнопку «ОК»:
Затем откроется окошко с информацией о данных, к которым приложение получит доступ, и предупреждение об ответственности самого пользователя. Соглашаемся со всем, и вот, установка Baidu Root завершена:
После установки внизу дисплея справа и слева появятся две кнопки, жмём на правую, после чего, по центру экрана появится синий монитор, где будет указана ваша модель Андроид, и голубая кнопка по центру (получить root) , нажимаем на неё, после чего произойдёт перезагрузка аппарата. Теперь пробуем запустить приложение SuperSU. От Baidu Root появится запрос на Root-доступ (права Суперпользователя), предоставляем. Далее появится запрос на обновление бинарного файла SU, нажимаем кнопку «Продолжить»:
Затем программа предложит способ, которым устанавливать файл SU, выбираем «Нормально». Начнётся процесс установки, о чём нам сообщит система, и венчает все наши усилия опять же сообщение от системы, что установка завершилась успешно, жмём «ОК»:
Всё, процедура завершена, и мы можем в полной мере пользоваться программой SuperSu и использовать все инструменты, имеющиеся в арсенале программы, в том числе и проводить т.н. временный ‘unroot’ на своём устройстве.
Как установить бинарный файл Su на Андроид с помощью кастомного Recovery
Описанный выше способ не решил проблему? Что ж, такое возможно, особенно это может касаться моделей HTC. В таком случае, придётся воспользоваться кастомным (альтернативным) рекавери. И если он у вас ещё не установлен, но желание стать продвинутым пользователем ОС Android присутствует, то установить его рано или поздно придётся. Потому, что этот инструмент позволит выполнять множество необходимых операций: создавать резервные копии, устанавливать системные обновления или перепрошивать свой Андроид другой версией операционки (ROM) и т.д.
Мы не станем сейчас рассказывать, как установить кастомное Recovery, потому что, это тема отдельного разговора, и если она вам интересна, пишите, и мы расскажем во всех подробностях, как выполнить эту операцию.
Сейчас же мы будем исходить из того, что вы в теме и вернёмся к нашему вопросу. То есть, если у вас есть кастомное рекавери (или вы знаете, как его установить), то смотрим на последний скриншот, и вместо кнопки «Нормально », нажимаем «CWM/TWRP ». После окончания процедуры, перезагружаем смартфон, после чего, вместе с обновлением системы, обновится и бинарный файл Su.
Как установить файл SU через командную строку
Если оба способа не помогли установить (обновить) файл SU, то ситуация осложняется, правда не фатально. Следующий способ, о котором мы расскажем, ориентирован на достаточно продвинутых пользователей, которые имеют опыт работы с командной строкой и знакомы с файловой структурой OS Android.
Итак, наши действия:
Качаем приложения Terminal Emulator for Android и Root Browser . Затем, скачиваем архив updatesu.zip , разархивируем его и перемещаем папку updatersu на SD-карту или внутреннюю память своего устройства Андроид.
Теперь запускаем Root Browser , заходим в папку updatersu и копируем следующие файлы: (.has_su_daemon ) (.installed_su_daemon ) (install-recovery.sh ) в папку /system/etc
После этого нам нужно для этих файлов задать верные права:
Затем нам надо перейти в следующую папку, а именно /system/bin и создать папку .ext и задать для неё права:
Следующим шагом копируем файл su, находящийся в папке /system/xbin
в только что созданную папку (/system/bin/.ext
), переименовываем файл su, поставив перед названием точку (.su) и задаём для него права:
Нам осталось запустить приложение Terminal Emulator for Android и ввести следующие команды:
Теперь перезагружаемся и снова пробуем обновить бинарный файл su с помощью кнопки «Нормально» в программе SuperSu (см. выше).
записей ), то вполне понятно желание как-то сократить неиспользуемый, но занимаемый объем памяти.Специально для таких случаев существуют записи с вариантной частью .
Описание записи с вариантной частью
В разделе var запись с вариантной частью описывают так:
var <имя_записи>: record <поле1>: <тип1>; [<поле2>: <тип2>;] [...] case <поле_переключатель>: <тип> of <варианты1>: (<поле3>: <тип3>; <поле4>: <тип4>; ...); <варианты2>: (<поле5>: <тип5>; <поле6>: <тип6>; ...); [...] end;
Невариантная часть записи (до ключевого слова case ) подчиняется тем же правилам, что и обычная запись . Вообще говоря, невариантная часть может и вовсе отсутствовать.
Вариантная часть начинается зарезервированным словом case , после которого указывается то поле записи , которое в дальнейшем будет служить переключателем. Как и в случае обычного оператора case , переключатель обязан принадлежать к одному из перечислимых типов данных (см. лекцию 3). Список вариантов может быть константой, диапазоном или объединением нескольких констант или диапазонов. Набор полей , которые должны быть включены в структуру записи , если выполнился соответствующий вариант, заключается в круглые скобки.
Пример . Для того чтобы описать содержимое библиотеки, необходима следующая информация:
Графы "Название" и "Издательство" являются общими для всех трех вариантов, а остальные поля зависят от типа печатного издания. Для реализации этой структуры воспользуемся записью с вариантной частью :
type biblio = record name,publisher: string; case item: char of "b": (author: string; year: 0..2004); "n": (data: date); "m": (year: 1700..2004; month: 1..12; number: integer); end;
В зависимости от значения поля item , в записи будет содержаться либо 4, либо 5, либо 6 полей .
Механизм использования записи с вариантной частью
Количество байтов, выделяемых компилятором под запись с вариантной частью , определяется самым "длинным" ее вариантом. Более "короткие" наборы полей из других вариантов занимают лишь некоторую часть выделяемой памяти.
В приведенном выше примере самым "длинным" является вариант " b ": для него требуется 23 байта (21 байт для строки и 2 байта для целого числа). Для вариантов " n " и " m " требуется 4 и 5 байт соответственно (см. таблицу).
name, publisher | item | Вариантная часть | ||||||||||||||||||||
... | "b" | author | year | |||||||||||||||||||
... | "n" | data | ||||||||||||||||||||
... | "m" | year | month | number | ||||||||||||||||||
... | "b" | author | year |
Бинарные файлы
Бинарные файлы хранят информацию в том виде, в каком она представлена в памяти компьютера, и потому неудобны для человека. Заглянув в такой файл , невозможно понять, что в нем записано; его нельзя создавать или исправлять вручную - в каком-нибудь текстовом редакторе - и т.п. Однако все эти неудобства компенсируются скоростью работы с данными.
Кроме того, текстовые файлы относятся к структурам последовательного доступа , а бинарные - прямого. Это означает, что в любой момент времени можно обратиться к любому, а не только к текущему элементу
В приведенном выше примере самым "длинным" является вариант "b ": для него требуется 23 байта (21 байт для строки и 2 байта для целого числа). Для вариантов "n " и "m " требуется 4 и 5 байт соответственно (см. таблицу).
name, publisher item Вариантная часть
Бинарные файлы
Бинарные файлы хранят информацию в том виде, в каком она представлена в памяти компьютера, и потому неудобны для человека. Заглянув в такой файл, невозможно понять, что в нем записано; его нельзя создавать или исправлять вручную - в каком-нибудь текстовом редакторе - и т.п. Однако все эти неудобства компенсируются скоростью работы с данными.
Кроме того, текстовые файлы относятся к структурам последовательного доступа, а бинарные - прямого. Это означает, что в любой момент времени можно обратиться к любому, а не только к текущему элементубинарного файла .
Типизированные файлы
Переменные структурированных типов данных (кроме строкового) невозможно считать из текстового файла. Например, если нужно ввести из текстового файла данные для наполнения записи toy информацией об имеющихся в продаже игрушках (название товара, цена товара и возрастной диапазон, для которого игрушка предназначена):
age: set of 0..18; {в файле задано границами}
то придется написать следующий код:
c: char; i,j,min,max: integer;
a: array of toy;
begin assign(f,input); reset(f);
for i:=1 to 100 do if not eof(f)
then with a[i] do
begin readln(f,name,price,min,max); age:=;
for j:= min to max do age:=age+[j];
Как видим, такое поэлементное считывание весьма неудобно и трудоемко.
Выход из этой ситуации предлагают типизированные файлы - их элементы могут относиться к любому базовому или структурированному типу данных. Единственное ограничение: все элементы должны быть одного и того же типа. Это кажущееся неудобство является
непременным условием для организации прямого доступа к элементам бинарного файла : как и в случае массивов, если точно известна длина каждого компонента структуры, то адрес любого компонента может быть вычислен по очень простой формуле:
<начало_структуры> + <номер_компонента>*<длина_компонента>
Описание типизированных файлов
В разделе var файловые переменные, предназначенные для работы стипизированными файлами , описываются следующим образом:
var <файловая_перем>: file of <тип_элементов_файла>;
Никакая файловая переменная не может быть задана константой.
Назначение типизированного файла
С этого момента и до конца раздела под словом "файл" мы будем подразумевать "бинарный типизированный файл " (разумеется, если специально не оговорено иное).
Команда assign(f,"<имя_файла>"); служит для установления связи между файловой переменнойf и именем того файла, за работу с которым эта переменная будет отвечать.
Строка "<имя_файла> " может содержать полный путь к файлу. Если путь не указан, файл считается расположенным в той же директории, что и исполняемый модуль программы.
Открытие и закрытие типизированного файла
В зависимости от того, какие действия ваша программа собирается производить с открываемым файлом, возможно двоякое его открытие:
reset(f); - открытие файла для считывания из него информации и одновременно длязаписи в него (если такого файла не существует, попытка открытия вызовет ошибку). Эта же команда служит для возвращения указателя на начало файла;
rewrite(f); - открытие файла длязаписи в него информации; если такого файла не существует, он будет создан; если файл с таким именем уже есть, вся содержавшаяся в нем ранее информация исчезнет.
Закрываются типизированные файлы процедуройclose(f) , общей для всех типов файлов.
Считывание из типизированного файла
Чтение из файла, открытого для считывания, производится с помощью команды read() . В скобках сначала указывается имя файловой переменной, а затем - список ввода1) :
Вводить из файла можно только переменные соответствующего объявлению типа, но этот тип данных может быть и структурированным. Cкажем, если вернуться к примеру, приведенному в начале п. "Типизированные файлы ", то станет очевидным, что использованиетипизированного файла вместо текстового позволит значительно сократить текст программы:
type toy = record name: string; price: real;
age: set of 0..18; {задано границами}
var f: file of toy;
a: array of toy; begin
assign(f,input);
for i:=1 to 100 do
if not eof(f) then read(f,a[i]); close(f);
Поиск в типизированном файле
Уже знакомая нам функция eof(f:file):boolean сообщает о достигнутом конце файла. Все остальные функции "поиска конца" (eoln() ,seekeof() иseekeoln() ), свойственные текстовым файлам, нельзя применять к файламтипизированным .
Зато существуют специальные подпрограммы, которые позволяют работать с типизированными файлами как со структурами прямого доступа:
1. Функция filepos(f:file):longint сообщит текущее положение указателя в файлеf . Если он указывает на самый конец файла, содержащегоN элементов, то эта функция выдаст результатN . Это легко объяснимо: элементы файла нумеруются начиная с нуля, поэтому последний элемент имеет номер N-1 . А номерN принадлежит, таким образом, "несуществующему" элементу - признаку конца файла.
2. Функция filesize(f:file):longint вычислит длину файлаf .
3. Процедура seek(f:file,n:longint) передвинет указатель в файлеf на началозаписи с номеромN . Если окажется, чтоn больше фактической длины файла, то указатель будет передвинут и за реальный конец файла.
4. Процедура truncate(f:file) обрежет "хвост" файлаf : все элементы начиная с текущего и до конца файла будут из него удалены. На самом же деле произойдет лишь переписывание признака "конец файла" в то место, куда указывал указатель, а физически "отрезанные" значения останутся на прежних местах - просто они станут "бесхозными".
Запись в типизированный файл
Сохранять переменные в файл, открытый для записи , можно при помощи командыwrite() . Так же как и в случае считывания, первой указывается файловая переменная, а за ней - список вывода:
write(f,a,b,c); - записать в файлf (предварительно открытый длязаписи командамиrewrite(f) илиreset(f) ) переменныеa ,b ,c .
Выводить в типизированный файл можно только переменные соответствующего описанию типа данных. Неименованные и нетипизированные константы нельзя выводить в
типизированный файл.
Типизированные файлы рассматриваются как структуры одновременно и прямого, и последовательного доступа. Это означает, чтозапись возможна не только в самый конец файла, но и в любой другой его элемент. Записываемое значение заместит предыдущее значение в этом элементе (старое значение будет "затерто").
Например, если нужно заместить пятый элемент файла значением, хранящимся в переменной а , то следует написать следующий отрывок программы:
seek(f,5); {указатель будет установлен на начало 5-го элемента}
write(f,a); {указатель будет установлен на начало 6-го элемента}