Android apk破解后重签名

本文所诉内容为在实现《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

解决!不过签名时还是会提示


你可能感兴趣的:(Android apk破解后重签名)