В рамках проекта чтения содержимого APK файла, было реализовано несколько плагинов для чтения часто используемых форматов файлов внутри APK архива. Итого разобраны форматы Davlik (.dex), ELF (.so), и JavaClass (.class).
Данный плагин представляет из себя визуализацию результата работы сборки ByteCodeReader, исходный код которой доступен на GitHub. Интерфейс плагина доступен в меню: View→Executables→ByteCode View
.
Динамические структуры Constants и All Attributes представлены в интерфейсе динамических таблиц, с возможностью просмотра исходных и преобразованных данных. Некоторые секции можно просмотреть в исходном виде. Если такая возможность поддерживается, то в контекстном меню элемента дерева окна "Class View", появится элемент "Bin View". Так-же, если для элемента нет доступного интерфейса, но есть возможность просмотра бинарного содержимого, то откроется окно просмотра секции файла в исходном виде. На момент написания декодирование объектов не поддерживается, но достаточно легко читается. Пример: [[Ljava/lang/String;
в декодированном варианте: java.lang.String[][]
.
MaxArrayDisplay
10 — Максимальная визуализация массивов.ShowAsHexValue
False — Отображать цифры в виде десятичной или щестнадцатеричной системы исчисления.ShowBaseMetaTables
False — Отображать в динамических структурах басзовые таблицы, вместо строго типизированных (Ближе к бинарному виду файла).MonitorFileChange
False — При обновлении файла на жёстком диске, файл автоматом обновится во всех открытых окнах отображения данных из текущего файлаType GetEntityType()
— Получить тип ClassFileObject CreateEntityInstance(Object dataItem)
— Создать экземпляр класса ClassFile, передав в качестве аргумента путь к файлу на дискеObject[] GetSearchObjects()
— Получить массив файлов с расширением *.class из папки, выбираемой в пользовательском интерфейсе.