Этот практический учебник шаг за шагом расскажет вам, как «декомпилировать» для получения исходного кода других небольших программ, включая «распаковку» и «восстановление исходного кода», в основном ссылаясь на сообщения на форуме Kanxue, V2EX, GitHub и других веб-сайтах. , Учебники и инструменты приветствуются.Ссылки для справки, пожалуйста, смотрите в нижней части статьи, а также некоторые мои собственные понимания и резюме.
Сбор знаний — это публичный аккаунт команды, и еженедельнооригинальныйОбмен статьями, наши статьи будут сначала опубликованы в общедоступном аккаунте. Добро пожаловать, чтобы обратить внимание, чтобы увидеть больше контента.
Мы знаем, что после разработки апплета в инструментах разработчика WeChat мы нажимаем кнопку «Загрузить», и инструменты разработчика WeChat «компилируют», сжимают и обфускируют код JS и загружаютwxml
,wxss
Интеграция и упаковка с файлами ресурсов и т. д. в один.wxapkg
Файл загружен на сервер WECHAT.
Итак, чтобы «декомпилировать» апплет, сначала нам нужно получить соответствующий файл апплета..wxapkg
Сумка.
Была предыдущая статья о V2EXhttps://www.v2ex.com/t/419056
Описывает, как напрямую загрузить каждый апплет.wxapkg
, но вскоре был микро-конверт.
Поэтому мы можем начать только с мобильного телефона и найти клиент WeChat на мобильном телефоне, чтобы загрузить небольшой программный пакет, сохраненный локально.
Получите файл .wxapkg апплета
Инструменты: ВзломанныйiPhone
мобильный телефон илиRoot
изAndroid
мобильный телефон
Эта статья начинается с
iPhone 4S
,iOS 8.4.1
Например, версия для WeChat.v6.6.6
.
в побеге из тюрьмыiPhone
открыть наCydia
, ищите и устанавливайтеiFile
илиFilza
дождитесь просмотра файловApp
,ОткрытымiFile
илиFilza
, перейдите в локальный каталог установки приложения:/var/mobile/Containers/Data/Application/
, в этот момент вы можете увидеть текущийiPhone
установлен наApp
список, как показано на следующем рисунке:
Найдите каталог "WeChat" (соответствующая папка на моем мобильном телефоне: папка 297286CE-9055-400A-99FA-D2D7C0735DCF), нажмите для входа, то есть WeChat здесьiPhone
«Песочница» на (Sandbox
),ПолагатьiOS
Разработчики уже хорошо знакомы с этим каталогом, который в основном содержитDocuments
,Library
иtmp
и другие папки, которые обычно используются для хранения различных данных и файлов и здесь повторяться не будут. Ищем в текущем каталоге «песочницы» WeChatwxapkg
ключевое слово, чтобы найти текущийiPhone
Небольшой программный пакет, загруженный WeChat, как показано ниже:
Мы нашли искомое.wxapkg
Все имена файлов обозначаются цифрами, как показано на рисунке.2.wxapkg
и25.wxapkg
, каковы правила их наименования? Где он размещен? Давайте посмотрим вниз.
После несложного анализа мы обнаружили, что небольшой пакет программ, загруженный WeChat, хранится в следующем каталоге:
/path/to/WeiChat SandBox/Library/WechatPrivate/{UserId}/WeApp/LocalCache/release/
в,{UserId}
Для текущей учетной записи WeChatId
изMD5
значение (32-битная строка), например, полный каталог, в котором хранится пакет апплета на моем мобильном телефоне:
/var/mobile/Containers/Data/Application/297286CE-9055-400A-99FA-D2D7C0735DCF/Library/WechatPrivate/c15d9cced65acecd30d2d6522df2f973/WeApp/LocalCache/release/
Содержимое этого каталога показано ниже:
Есть рядwx...
папки, которые начинаются с этихwx...
18-битная строка, соответствующая каждому апплетуAppId
, в каждомwx...
Папки, соответствующие текущему апплету, помещаются.wxapkg
пакет, который назван в честь числа,Число представляет текущий пакет, выпущенный разработчиком.(Он отличается от номера версии, указанного разработчиком при выпуске апплета), например, наш апплет «Малый набор знаний» выпускает две версии, поэтомуwx48...85db
файл содержит2.wxapkg
документ:
Кроме того, мы обнаружили, что вiOS
, WeChat также назначает небольшую программу каждомуSandbox
Папки используются для управления данными и файлами, хранящимися локально апплетом, как показано на рисунке:
Его путь:
/path/to/WeiChat SandBox/Library/WechatPrivate/{UserId}/WeApp/Sandbox/wx...(小程序 AppId)
Кстати,Android
Каталог хранения пакета апплета на мобильном телефоне (требуется разрешение Root для доступа):
/data/data/com.tencent.mm/MicroMsg/{UserId}/appbrand/pkg/
Скопируйте файл .wxapkg на свой компьютер.
Благодаря приведенному выше анализу мы можем узнать сжатый пакет апплета..wxapkg
Где он хранится? Далее нам нужно сохранить.wxapkg
Скопируйте файл на компьютер.
Открыть на iPhoneCydia
ищи и устанавливайOpenSSH
после, вiPhone > 设置 > 无线局域网
Просмотр текущего подключения к телефону вWiFi
, и записьIP
Адрес, например мой:192.168.1.17
, затем откройте терминал на компьютере Mac (с помощьюiPhone
подключить то же самоеWiFi
), можно пройтиSSH
Войдите в свой телефон (подробности см.Cydia
начальствоOpenSSH
Инструкция по использованию на странице загрузки):
ssh root@192.168.1.17
Далее мы можем пройтиscp
команда отiPhone
скопируйте файлы к нам на компьютер, например, в мойMac
Выполните в командной строке выше (нет необходимостиssh
войти вiPhone
на, прямо наMac
Терминал):
scp root@192.168.1.17:/var/mobile/Containers/Data/Application/297286CE-9055-400A-99FA-D2D7C0735DCF/Library/WechatPrivate/c15d9cced65acecd30d2d6522df2f973/WeApp/LocalCache/release/wx48...85db/2.wxapkg /Users/Zubin/Desktop/WeApp/
Можно поставить пакет апплета "сбор знаний"2.wxapkg
скопировано на мой рабочий стол MacWeApp
в папке.
Конечно, если на вашем компьютереiTool
илиPP助手
такие как инструменты, когда соединение было взломаноiPhone
Кажется, что вы можете получить прямой доступ к каталогам и файлам на телефоне, так что это может быть не так хлопотно (не проверено).
.wxapkg распаковать
После долгих хлопот мы наконец-то получили каждый апплет.wxapkg
пакет, а затем мы можем его проанализировать. во-первых.wxapkg
Что такое файл? Вы можете подумать, что это похоже на Android.apk
или для iOS.ipa
установочный пакет, который по сути является.zip
Архив?Вообще-то нет!, это бинарный файл, фактическая структура файла выглядит следующим образом:
Изображение взято из статьиПримечания к чтению исходного кода апплета WeChat, и автор этой статьи также предоставляет скрипты (на разных языках) для понимания пакета наGitHubначальство:
Я загрузилPython 2
скрипт распаковки с.wxapkg
Поместите файл в каталог, а затем выполните следующее имя в командной строке, чтобы получить распакованный файл:
python unwxapkg.py 2.wxapkg
Взяв в качестве примера апплет «Сборник знаний», каталог файлов, полученный после распаковки, выглядит следующим образом (в основном он совпадает с каталогом проекта, в котором я разработал апплет «Сборник знаний»):
Распакованные файлы каждого апплета похожи, в основном это следующие файлы:
-
app-service.js
: сводка всех файлов JS в проекте апплета, который был запутан; -
app-config.json
: Небольшой программный проектapp.json
И сводка файлов конфигурации JSON каждой страницы, которую можно просмотреть напрямую; -
page-frame.html
: для всех страниц.wxml
иapp.wxss
Сводка файлов стилей имеет плохую читабельность и нуждается в восстановлении; -
*.html
: содержит соответствующий.wxss
информация, лучшая читаемость; -
资源文件
: различные изображения, аудио и другие файлы ресурсов.
Суммировать
В этой статье в основном рассказывается, как получить мини-программу..wxapkg
package и как его распаковать, чтобы получить запутанный код и файлы ресурсов, «скомпилированные» апплетом. В следующей статье «Мини-программа WeChat «Декомпиляция» Actual Combat (2): восстановление исходного кода» будет рассказано, как.wxapkg
Содержимое пакета восстанавливается до содержимого до «компиляции».