1、pull一个apk文件
[sdk安装路径]\tools\android create avd -n new1 -t 1(这是系统镜像id)
[sdk安装路径]\tools\emulator -avd new1 -no-boot-anim (之后便是等待虚拟机启动)
[sdk安装路径]\platform-tools\abd pull /system/app/Contacts.apk (因为是在avd之外操作的,所以要先确认一下Contacts.ap文件是否存在)
2、在apk中有一个META-INF文件夹,这里面有三个文件MANIFEST.MF、CERT.RSA、CERT.SF
MANIFEST.MF: 这个文件声明了资源,与CERT.SF文件非常相似
CERT.RSA: 这个文件公钥证书。 (格式是PKCS#7)
CERT.SF: 这个文件包含了app中的所有资源文件,它负责对app进行签名,其中含有JAR指定的密码学意义上的签名。
用java语言获取CERT.RSA文件中的内容代码如下:
byte[] ss = getFileBytes("c:\\CERT.RSA");
<span style="font-family: Arial, Helvetica, sans-serif;">PKCS7 p7 = new PKCS7(ss);</span>
3、对apk进行重新签名
在进行重新签名之前,在apk文件中删掉META-INF文件夹
1.首先建立一个keystore。(keytool工具在安装JDK时也同时安装上了)
keytool -genkey -v -keystore [keystore名称] -alias [密钥的别名] -keyalg RSA -keysize 2048 -validity [有效天数]
2.用新的密钥存储器去对app签名
jarsigner -verbose -sigalg MD5withRSA -digestalg SHA1 -keystore [你的keystore名字] [你的.apk文件] [你密钥的别名]
执行完之后apk文件终会加入META-INF的文件夹。
3.验证app签名
jarsigner -verify -verbose [你的apk文件存放路径]
4、apktool工具的安装和使用
1.首先下载两个文件apktool1.5.2.tar.bz2、apktool-install-windows-r05-ibot.tar.bz2,将其解压后放在sdk安装路径下platform-tools目录下的同一个目录中(如apktool)
2.搞定之后,测试一下/[apktool]所在目录]/apktool -help
3.用apktool提取apk所有文件
[apktool]所在目录]/apktool d -f -s Contacts.apk decode(这个decode指定了解压后存放的路径)
5、通过ADB与activity管理器交互
1.pm list package 列出已安装的activity列表
2.am start [包名]运行指定的activity
其中am start还有一大堆参数,这里不写了,具体需要查看文档。