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