Android apk破解後重簽名
阿新 • • 發佈:2019-01-26
本文所訴內容為在實現《Android軟體安全與逆向分析》第二章內容所遇到的問題
本章內容為手動破解一個簡單的示例apk,體驗破解apk的過程。
1、使用apktool反編譯apk後,修改smali程式碼進行破解。
>apktool d crackme02.apk -o outdir
2、再次使用apktool編譯,將在oudir目錄下生成dist與build兩個目錄,其中未簽名的apk位於dist目錄下
>apktool b outdir
3、手工對apk簽名時,由於沒有android原始碼,無法按照書中所述,使用signapk.jar、testkey.x509.pem、testkey.pk8(缺少如上檔案)對apk進行重簽名,上網翻閱資料,找到一個簡單的方法, (只需按照java jdk即可)
------------------------------------------------------------------------------------------------------------------------
參考:http://www.cnblogs.com/qianxudetianxia/archive/2011/04/09/2010468.html
命令列下對apk簽名
建立key,需要用到keytool.exe (位於jdk1.6.0_24\jre\bin目錄下),使用產生的key對apk簽名用到的是jarsigner.exe (位於jdk1.6.0_24\bin目錄下),把上兩個軟體所在的目錄新增到環境變數path後,開啟cmd輸入
D:\>keytool
-genkey -alias demo.keystore -keyalg RSA -validity 40000 -keystore demo.keystore
/*說明:-genkey
產生金鑰
-alias
demo.keystore 別名 demo.keystore
-keyalg
RSA 使用RSA演算法對簽名加密
-validity
40000 有效期限4000天
-keystore
demo.keystore */
D:\>jarsigner
-verbose -keystore demo.keystore -signedjar demo_signed.apk demo.apk demo.keystore /*說明:-verbose
輸出簽名的詳細資訊
-keystore
demo.keystore 金鑰庫位置
-signedjar
demor_signed.apk demo.apk demo.keystore 正式簽名,三個引數中依次為簽名後產生的檔案demo_signed,要簽名的檔案demo.apk和金鑰庫demo.keystore.*/
|
按照如上,方法簽名獲得signed.apk,執行 >adb install signed.apk 提示[INSTALL_PARSE_FAILED_NO_CERTIFICATES] 原因:jdk1.7以上的簽名工具需要timestamp的原因 (本人使用的jdk1.8) 解決方法:在簽名命令中加入-digestalg SHA1 -sigalg MD5withRSA引數 >jarsigner -verbose -keystore demo.keystore -signedjar demo_signed.apk demo.apk demo.keystore -digestalg SHA1 -sigalg MD5withRSA 解決!不過簽名時還是會提示