Сейчас я учусь реконструировать APK и добился значительного прогресса. Вот чего я достиг на данный момент:
Расшифровка и просмотр кода: Преобразовал байт-код Dalvik (файлы .dex) в читаемый вид. Код Java и JavaScript.
Распаковка: расшифрованные файлы JavaScript разделены. (Хотя они все еще минимизированы)
Расшифровка UUID: Выяснилось, как расшифровать UUID в имена файлов и наоборот, и нашли пути к ресурсам для некоторых UUID. li>
Однако мне не удается определить правильную структуру папок для определенных ресурсов в «Основной» папке.
Что я обнаружил на данный момент
Вот что я знаю о пакетах ресурсов в «Основной» папке:
< li>Каждый пакет ресурсов имеет UUID, который соответствует изображению, содержащему несколько ресурсов.
Для каждого пакета ресурсов существует файл JSON, но они не предоставляют много полезной информации о структура папок.
Каждый ресурс на изображении имеет собственный файл JSON, который включает:
Название пакета в начале.
Подробная информация о положении объекта на изображении.
[*]Манифест содержит сведения о каждом объекте. местоположение, но только ресурсы, перечисленные в /resources/config.json, имеют «пути», позволяющие повторно сопоставить их.
Мои вопросы< /h3>
Как определить правильную структуру папок для этих ресурсов?
Существует ли шаблон или инструмент, который поможет сопоставить эти ресурсы с соответствующими местоположениями?
Важное примечание: файла карты НЕТ — файл карты НЕТ. В манифесте перечислены запутанные имена и их md5 или sha-256 в зависимости от того, на что вы смотрите. Моя цель — вернуться к исходному формату, на который ссылается код.
Примеры кода и Структура
Я включил некоторые соответствующие фрагменты кода и детали структуры файлов, чтобы проиллюстрировать, с чем я работаю:
Я ищу эту строку (1e58fbfa7) во всех файлах и нахожу соответствующий JSON для каждого из ресурсов на этом изображении, вот пример одного:
(Я понимаю, что это такое — они указывают, где на упаковке находится ресурс, относящийся к этому файлу/UUID)
Этот JSON — это \assets\assets\main\import\3a\3aa50555-73a6-416d-b35a-cfab79466fa7.json
Если я конвертирую что для UUID (3apQVVc6ZBbbNaz6t5Rm+n) я найду его в двух местах: config.json (фрагмент, представленный выше) и в другом месте (\assets\assets\main\import\9f\9fde386a-2232-446d-9554-549e101dde19. json), который чем-то похож на config.json, но не совсем... фрагмент:
Я конвертирую это имя файла в UUID (9f3jhqIjJEbZVUVJ4QHd4Z) и нахожу его в другом файле (\assets\assets\main\import\d7\d726ed83-41aa-4389-bd34-dd1e963ba515 .json)...
Я пошел еще глубже, преобразовал это имя файла в UUID (d7Ju2DQapDib003R6WO6UV), посмотрел и нашел его в одном месте... исходный файл конфигурации. Итак, я вернулся к началу!
Сейчас я учусь реконструировать APK и добился значительного прогресса. Вот чего я достиг на данный момент: [list] [*][b]Расшифровка и просмотр кода:[/b] Преобразовал байт-код Dalvik (файлы .dex) в читаемый вид. Код Java и JavaScript. [*][b]Распаковка:[/b] расшифрованные файлы JavaScript разделены. (Хотя они все еще минимизированы) [*][b]Расшифровка UUID:[/b] Выяснилось, как расшифровать UUID в имена файлов и наоборот, и нашли пути к ресурсам для некоторых UUID. li> [/list] Однако мне не удается определить правильную структуру папок для определенных ресурсов в «Основной» папке. Что я обнаружил на данный момент Вот что я знаю о пакетах ресурсов в «Основной» папке: [list] < li>Каждый пакет ресурсов имеет UUID, который соответствует изображению, содержащему несколько ресурсов. [*]Для каждого пакета ресурсов существует файл JSON, но они не предоставляют много полезной информации о структура папок. [*]Каждый ресурс на изображении имеет собственный файл JSON, который включает:
Название пакета в начале. Подробная информация о положении объекта на изображении. [/list]
[*]Манифест содержит сведения о каждом объекте. местоположение, но только ресурсы, перечисленные в /resources/config.json, имеют «пути», позволяющие повторно сопоставить их.
Мои вопросы< /h3> [list] [*][b]Как определить правильную структуру папок для этих ресурсов?[/b] [*][b] Существует ли шаблон или инструмент, который поможет сопоставить эти ресурсы с соответствующими местоположениями?[/b] [/list] Важное примечание: файла карты НЕТ — файл карты НЕТ. В манифесте перечислены запутанные имена и их md5 или sha-256 в зависимости от того, на что вы смотрите. Моя цель — вернуться к исходному формату, на который ссылается код. Примеры кода и Структура Я включил некоторые соответствующие фрагменты кода и детали структуры файлов, чтобы проиллюстрировать, с чем я работаю: [h4]Пример config.json (UUID без путей):[/h4] [code]{ "paths": {}, "types": [], "uuids": [ "05mU7WsllFO4elu4Re6/pm", "fcTsdoxZlLpKd3It99/+h6" ], "scenes": { "db://assets/main.fire": 127, "db://assets/start.fire": 120 }, "redirect": [1, 0, 2, 0, 4, ... 0, 146, 0], "deps": ["resources", "internal"], "packs": {}, "name": "main", "importBase": "import", "nativeBase": "native", "debug": false, "isZip": false, "encrypted": true } [/code] [h4]Пример связанного кода перед разделением:[/h4] (но вы можете видеть, что в нижнем разделе представлена файловая структура/имена для пакетов, именно так я реконструировал и разделил его) [code]{ 1: [function(e, t, i) { "use strict"; const n = i; n.bignum = e("bn.js"); n.define = e("./asn1/api").define; n.base = e("./asn1/base"); n.constants = e("./asn1/constants"); n.decoders = e("./asn1/decoders"); n.encoders = e("./asn1/encoders"); }, { "./asn1/api": 2, "./asn1/base": 4, "./asn1/constants": 8, "./asn1/decoders": 10, "./asn1/encoders": 13, "bn.js": 15 }], [/code] [h4]Структура файла[/h4] Вот частичное представление файловой структуры, с которой я работаю: [code]Directory: T:\assets Subdirectory: ad-viewer Subdirectory: assets Subdirectory: dexopt Subdirectory: jsb-adapter Subdirectory: src File: audience_network.dex File: cid File: main.js File: project.json File: tt_mime_type.pro
[code][ 1, 0, 0, [ "cc.Texture2D" ], 0, [ "0,9729,9729,33071,33071,0,0,0", -1 ], [ 0 ], 0, [], [], [] ] [/code] [h4]Traceback[/h4] Я ищу эту строку (1e58fbfa7) во всех файлах и нахожу соответствующий JSON для каждого из ресурсов на этом изображении, вот пример одного: (Я понимаю, что это такое — они указывают, где на упаковке находится ресурс, относящийся к этому файлу/UUID) [code][ 1, [ "1e58fbfa7" ], [ "_textureSetter" ], [ "cc.SpriteFrame" ], 0, [ { "name": "UI_Bt_world", "rect": [ 342, 446, 127, 115 ], "offset": [ 0, 0.5 ], "originalSize": [ 129, 116 ], "capInsets": [ 0, 0, 0, 0 ] } ], [ 0 ], 0, [ 0 ], [ 0 ], [ 0 ] ] [/code] Этот JSON — это \assets\assets\main\import\3a\3aa50555-73a6-416d-b35a-cfab79466fa7.json Если я конвертирую что для UUID (3apQVVc6ZBbbNaz6t5Rm+n) я найду его в двух местах: config.json (фрагмент, представленный выше) и в другом месте (\assets\assets\main\import\9f\9fde386a-2232-446d-9554-549e101dde19. json), который чем-то похож на config.json, но не совсем... фрагмент: [code][ 1, [ "ecpdLyjvZBwrvm+cedCcQy", ... [ "node", "_spriteFrame", "_N$file", ... [ [ "cc.Node", [ "_name", ... "_children" ], -2, 4, ... ] ], [ 0, "58H6b2PPdJip4dKNTXDv0T", 1, 0 ], [ 4, 4278190080 ], [ 5, 1242, 2688 ] ] ], 0, [ 0, 12, ... 96, 97, 1 ] ] [/code] Я конвертирую это имя файла в UUID (9f3jhqIjJEbZVUVJ4QHd4Z) и нахожу его в другом файле (\assets\assets\main\import\d7\d726ed83-41aa-4389-bd34-dd1e963ba515 .json)... [code][ 1, [ "9f3jhqIjJEbZVUVJ4QHd4Z" ], [ "mainNode", "node", "scene" ], [ [ "cc.SceneAsset", [ "_name", "asyncLoadAssets" ], 1 ], [ "cc.Scene", [ "_name", ... [ 0, -1, 2, 0, 1, 2, 0, 2, 1, 2 ], [ 0 ], [ 0 ], [ 0 ] ] [/code] Я пошел еще глубже, преобразовал это имя файла в UUID (d7Ju2DQapDib003R6WO6UV), посмотрел и нашел его в одном месте... исходный файл конфигурации. Итак, я вернулся к началу!