我是一名對Android安全性感興趣的學生。我試圖使用baksmali和smali修改APK文件。但是,我無法在手機上運行重新打包的應用程序。當我單擊圖標時,它說“不幸的是,測試已停止”並且存在。 (即使該應用程序的圖標已更改,現在我看到的是默認的android圖標,而不是該應用程序的舊真實彩色圖標)
這可能是什麼原因?實際上,我什至沒有修改過apk文件的代碼。我只是解壓縮apk以獲取dex文件,然後使用 baksmali.jar
將其轉換為smali,然後使用 smali.jar
還原為dex。最後壓縮並簽名。
我已完成的詳細操作:
-
解壓縮apk文件
$解壓縮test.apk
-
將1classes.dex1轉換為smali
$ baksmali -x classes.dex -o smaliClasses
-
將類轉換回
classes.dex
(替換了舊的classes.dex
,實際上我沒有向smali文件添加任何新代碼。我想知道這是否先行。)$ smali smaliClasses -o classes.dex
-
壓縮所有文件到
test.zip
$ zip test.zip AndroidManifest.xml classes.dex res META-INF resourses.arsc
-
將
test.zip
重命名為test.apk
$ mv test.zip test.apk
> ol> -
java -jar signapk.jar testkey.x509.pem testkey.pk8 test.apk test-patched.apk cod e>
-
我嘗試安裝新的重新打包的APK。使用adb shell。 Adb Shell顯示成功安裝。但是,我無法在移動設備上運行重新打包的應用程序。當我單擊它時,該應用程序崩潰。它說“不幸的是,測試已停止”。
ol>
現在,我相信我必須再次對APK進行簽名,如果此處有誤,請糾正我。
已編輯 :
為什麼重新打包的應用程序不運行?我不明白我在這裡缺少什麼?我使用它提取了smali文件並重新打包。但是,為什麼重新包裝不能與baksmali,smali,zip和signapk一起使用。在此過程中壓縮真正的問題嗎?與原始的apk文件相比,我將其壓縮並將其重命名為.apk時,該應用程序的大小已大大減少: