安卓逆向学习----apk重打包和签名

1.apktool d Wandoujia.apk 反编译为smali,dex2jar 和jd-gui可以看到java级别的源码,这里只考虑smali语言。
res/values/strings.xml中有字符串资源,索引值在同目录下的public.xml中
全局搜索id可以确定字符串在何处使用。
这些资源在开发时在gen/<packagename>/R.java文件的string类中被标识


2.对apk代码修改,这里的修改指的是smali层面


3.apktool b dir/ -o xxx.apk 重打包为apk


4.keytool -list -printcert -jarfile XXX.apk可以查看apk签名,或者
keytool -printcert -file CERT.RSA  查看META-INF文件夹下的证书文件
以wuandoujia.apk为例,以下为签名信息:
Signer #1:

Signature:

Owner: CN=Oasis Feng
Issuer: CN=Oasis Feng
Serial number: 50ac911f
Valid from: Wed Nov 21 16:30:23 CST 2012 until: Fri Nov 14 16:30:23 CST 2042
Certificate fingerprints:
     MD5:  14:D5:86:45:A1:2D:42:93:A9:C8:9E:57:60:FE:6E:16
     SHA1: 6B:DB:E6:CE:E1:81:B0:F3:1F:87:61:0D:AC:CC:8A:B7:7F:8A:D4:03
     SHA256: 44:3B:BA:F9:F4:15:3B:55:8B:C1:43:C8:34:67:42:EC:BF:4B:2A:B3:4A:EB:74:7E:01:C6:B3:03:18:97:2C:20
Signature algorithm name: SHA1withRSA
Subject Public Key Algorithm: 1024-bit RSA key
Version: 3


5.对重打包之后的APK进行签名

有两种方法,一种是使用jarsigner,另一种是使用signapk.jar

方法一:这是在调试的时候的签名
1)建立个人的密钥储存器(keystore)

keytool -genkey -v -keystore [keystore name] -alias [key alias] -keyalgRSA -keysize 2048 -validity [valid days]

2)

 jarsigner -verbose -sigalg MD5withRSA -digestalg SHA1 -keystore [keystore name] [XX.apk] [keysore alias]

3)jarsigner -verify xxx.apk 验证是否签名成功,虽然签名成功但是会提示

the jar will be treated as unsigned because it is signed with a weak algorithm that is now disabled by the security property: jdk.jar.disabledAlgorithms=MD2, MD5, RSA keysize < 1024,DSA keysize < 1024

使用这种方法签名之后可以安装,但是使用keytool看不到签名信息,这个问题我还没有解决

方法二:

这种是在应用打包发布的时候进行签名,使用下面的命令,这里的签名信息是由安卓系统提供的。

java -jar signapk.jar platform.x509.pem platform.pk8 unsigned.apk signed.apk

其中.x509.pem .pk8文件可以在ld/target/product/security文件夹下找到,signnapk.jar可以通过编译安卓源码的bin/build/tools/signapk得到,编译太麻烦,建议直接百度下载。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值