Апплет WeChat "декомпиляция" бой (1): распаковка

WeChat JavaScript Апплет WeChat
Апплет WeChat "декомпиляция" бой (1): распаковка

Этот практический учебник шаг за шагом расскажет вам, как «декомпилировать» для получения исходного кода других небольших программ, включая «распаковку» и «восстановление исходного кода», в основном ссылаясь на сообщения на форуме 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информация, лучшая читаемость;
  • 资源文件: различные изображения, аудио и другие файлы ресурсов.

Суммировать

В этой статье в основном рассказывается, как получить мини-программу..wxapkgpackage и как его распаковать, чтобы получить запутанный код и файлы ресурсов, «скомпилированные» апплетом. В следующей статье «Мини-программа WeChat «Декомпиляция» Actual Combat (2): восстановление исходного кода» будет рассказано, как.wxapkgСодержимое пакета восстанавливается до содержимого до «компиляции».

Ссылка на ссылку