一次不成功的apk重新打包經過
我在 https://github.com/qpython-android/qpython3/releases/download/1.0.0/qpython3-app-release-1.0.0.apk 上下載了安裝包,
方法1:
用winrar開啟它,發現assets目錄下有個private3.mp3檔案,大約有8M,就把它用一個小的同名檔案替換。winrar重新壓縮,
結果放在android裝置上,能出來安裝提示框,但安裝不成功。
方法2:
在http://www.oogps.com/post/apktool.html 上看到了apktool工具,到https://ibotpeaches.github.io/Apktool/下載了目前(20170207)最新版本,apktool_2.2.2.jar,並按照上文提示,編輯了apktool.bat檔案,內容如下:
java -jar "%~dp0\apktool_2.2.2.jar" %1 %2 %3 %4 %5 %6 %7 %8 %9
我的java版本是:
java version "1.8.0_101"
Java(TM) SE Runtime Environment (build 1.8.0_101-b13)
Java HotSpot(TM) Client VM (build 25.101-b13, mixed mode, sharing)
執行D:\abc>d:\apktool d d:\qpython3-app-release-1.0.0.apk命令解包
把assets目錄下private3.mp3檔案用一個小的同名檔案替換
執行D:\abc>d:\apktool b qpython3-app-release-1.0.0命令重新打包
把D:\abc\qpython3-app-release-1.0.0\dist目錄下的apk檔案放在android裝置上,仍然是能出來安裝提示框,但安裝不成功。
把原始檔案apk檔案放在android裝置上,能安裝成功。
哪位網友如果已經成功地重新打包此檔案,請分享經驗。
我的裝置android版本是4.2.1.
apktool生成的apk預設是不帶 META-INF目錄的,要用-c選項才包含。
META-INF目錄下的MANIFEST.MF檔案中包含了每個檔案的sha1碼,如果真像前文所述地校驗,簡單複製應該不行.
從下面網頁下載檢視sha1摘要的工具
https://support.microsoft.com/en-us/help/841290/availability-and-description-of-the-file-checksum-integrity-verifier-utility
但它得出的sha1程式碼是16進位制,而MANIFEST.MF中的是Base64編碼。按照文件提示,用以下命令列
D:\abc>fciv D:\abc\qpython3-app-release-1.0.0\assets\public3.mp3 -both -xml p3.xml // // File Checksum Integrity Verifier version 2.05. // Error loading XML document. Create New XML database ---- <?xml version="1.0" encoding="UTF-8"?> -<FCIV> -<FILE_ENTRY> <name>d:\abc\qpython3-app-release-1.0.0\assets\public3.mp3</name> <MD5>x4wQ997IgAoijGlKn2DOAQ==</MD5> <SHA1>lLzGYyqDYZ4OJ1kkOjP80zi66go=</SHA1> </FILE_ENTRY> </FCIV>
這與MANIFEST.MF中的記錄一致。
相關文章
- Android Apk 檔案反編譯和重新打包的過程分析AndroidAPK編譯
- Cordova 打包 apk,html 打包 apkAPKHTML
- Flutter的apk打包FlutterAPK
- 轉[Android]APK打包過程詳解(一)AndroidAPK
- 轉[Android]APK打包過程詳解(二)AndroidAPK
- Android Apk 打包AndroidAPK
- 一次不成功的11g rac for aix經歷AI
- Android APK打包流程AndroidAPK
- MAC使用APKTool反編譯apk修改版本號後重新打包MacAPK編譯
- React Native 打包apk的那些坑React NativeAPK
- 練習向:一次簡單的APK反編譯後二次打包APK編譯
- Flutter 打包 android端 apkFlutterAndroidAPK
- Android Apk反編譯系列教程(二)APK重打包AndroidAPK編譯
- uni-app專案打包成apk(本地打包篇)APPAPK
- 簽名打包Android版apkAndroidAPK
- Android開發 —— apk打包流程AndroidAPK
- 在打包過程中小米手機的apk圖示失敗的解決方法APK
- Android之重新簽名APKAndroidAPK
- vue 專案打包成apk(Hbuilder方案)VueAPKUI
- Android Studio打包專案:APKAndroidAPK
- Android自定義打包apk名稱AndroidAPK
- Android Studio打包apk,aar,jar包AndroidAPKJAR
- android 使用ANT批量打包apk步驟AndroidAPK
- 動態庫so打包到android apkAndroidAPK
- andriod 原始碼開發,打包so到apk原始碼APK
- 記錄一次vue-cli工程打包部署過程Vue
- docker新增檔案重新打包Docker
- Flutter 38: 圖解 Android 打包 APK 檔案Flutter圖解AndroidAPK
- Android 生成簽名apk與多渠道打包AndroidAPK
- Android使用Ant進行apk多渠道打包AndroidAPK
- Android開發把專案打包成apkAndroidAPK
- APK安裝過程APK
- LayaNative打包iOS-APP過審經驗分享!iOSAPP
- uniapp打包成apk,監聽安卓手機的返回鍵APPAPK安卓
- Unity 編譯 Android 的原理解析和 apk 打包分析Unity編譯AndroidAPK
- 測試平臺-記一次不成功的 RF 遠端庫問題解決過程
- 通過Ant將Android project編譯打包成APK檔案並安裝到手機AndroidProject編譯APK
- 再記一次經典Net程式的逆向過程