APKTool签名的一个问题

0x01 昨天写了反编译,今天就写下签名的问题

 

0x02 apktool的重打包功能大家都知道,堪称神器,各类破解人事必备之良器,

         用法不多说,只说签名容易遇到的问题

0x03 创建私钥仓库这个事情就不多说,方法很多,eclipse和keytool       都有类似功能

        需要注意的是,这个私钥仓库一共有两个密码,一个是私钥仓库的密码(storepass),另一个则是仓库里面每一个私钥对应一个密码(keypass),都是需要记住的。一个私钥仓库可以有多个私钥。

 

        换句话说每个私钥仓库创建的时候,这几个参数是要记录的

-storepass 123456789 私钥仓库的密码

-keypass    1987XXXX   私钥的密码

-keystore  F:\\webattack\android\AndroidMasterKey_icefish.key  私钥仓库文件在哪

icefish              私钥的名称

 

 

0x04   下来就是签名的东西了,jarsigner

用法 jarsigner -help可以看到。

这里面比较关键的几个参数

-storepass   -keypass  -keystore  上面的都说了,

 

-verbose  输出详细信息

特别注意的是  -signedjar 这个参数,他一共有三个选项,第一个是签名后的apk文件名,第二个选项是需要签名的apk路径,第三个很关键,就是前面提到的私钥的名称了。

一个常见的如下所示

jarsigner -verbose -keystore F:\\webattack\android\AndroidMaster
Key_icefish.key -storepass 123456789 -keypass 1987XXXX -signedjar Modify_signed.
apk F:\\webattack\android\result\ModifyCompile\Modify.apk icefish

 

 

0x05 在实际使用中,我们成功打包,成功签名,然后Android机子上一装,报错:

 10-14 07:06:50.223: W/PackageParser(61): java.lang.SecurityException: META-INF/ICEFISH_.SF has invalid digest for res/menu/main.xml in /data/app/vmdl-2089432299.tmp

   

甚至没有改动任何代码的直接签名都报这个错。

原因如下:

http://hardpass.iteye.com/blog/1534636

   

   实质就是jdk7改变了jarsigner的默认选项,不再是SHA 128了,而是变成了SHA256,

   这样Android 模拟器就验证不对了

   解决办法就是再jarsigner的调用中在强制设置摘要算法

   -digestalg SHA1 -sigalg MD5withRSA

 

这样就可以了。

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值