您现在的位置是: 首页 > 励志格言 励志格言
apk签名提取工具
ysladmin 2024-05-12 人已围观
简介apk签名提取工具 最近有些忙碌,今天终于有时间和大家聊一聊“apk签名提取工具”的话题。如果你对这个领域还比较陌生,那么这篇文章就是为你而写的,让我们一起来了解一下吧。1.如何反编译android应用以及重编译,签名和对齐优化
最近有些忙碌,今天终于有时间和大家聊一聊“apk签名提取工具”的话题。如果你对这个领域还比较陌生,那么这篇文章就是为你而写的,让我们一起来了解一下吧。
1.如何反编译android应用以及重编译,签名和对齐优化
2.没有签名的apk怎样才可以装在手机可以用
如何反编译android应用以及重编译,签名和对齐优化
首先,了解一下我们为什么需要反编译apk
大部分情况下,是由于想本地化一款优秀的应用,才需要做这事儿;又或者进行少量的smali修改以达到想要的效果(如添加归属地,使3G版Nexus 7支持Wi-Fi热点)。
下面我们先准备运行环境和工具
建立工作目录,如.\workspace\apktoolbox (下面同样以此路径为例)
必不可少的JDK:Oracle Java下载,安装完成后把<jdk-inst-path>\bin添加到$PATH环境变量中
反编译和重编译工具apktool:Google Code下载,按平台下载(一个apktool-install-<platform>-<ver>-tar.bz2,一个apktool<ver>.tar.bz2,下载完成后解压至.\workspace\apktoolbox\bin
密钥文件,共4组。test/shared/media/platform,从android source中获取,分别对应不同共享用户ID时签名所需(查看应用AndroidManifest.xml第二行android:sharedUserId项 ),放到.\workspace\apktoolbox\bin下
test - 无android:sharedUserId项
shared - android:sharedUserId=android.uid.shared
media - android:sharedUserId=android.uid.media
platform - android:sharedUserId=android.uid.system
签名工具signapk.jar,放到.\workspace\apktoolbox\bin下
对齐优化工具zipalign(从android sdk中获取,在tools目录下),放到.\workspace\apktoolbox\bin下
准备工作完成
接下来我们就要开始工作了(以本地化工作为例)
把待反编译的apk放到.\workspace\apktoolbox\apks下
在命令行模式下进入.\workspace\apktoolbox\bin目录,输入以下命令进行解包(反编译)
apktool d ..\apks\<apkfile>.apk ..\apks\<outdir>
.\workspace\apktoolbox\apks\<outdir>\res下的values目录(英文原版)和values-r<locale>目录(本地化)就是我们需要的对象。
本地化工作完成后,在命令行中输入以下命令进行重新打包(重新编译)
apktool b ..\apks\<outdir>
.\workspace\apktoolbox\apks\<outdir>\dist目录下会生成重新打包后的apk(未签名,未对齐优化)
重新打包完成后,在命令行中输入以下命令进行签名(根据实际情况选用密钥,这里以test密钥为例)
java -jar signapk.jar testkey.x509.pem testkey.pk8 ..\apks\<outdir>\dist\<apkfile>.apk ..\apks\<apkfile>_signed.apk
签名完成后,在命令行中输入以下命令进行对齐优化
zipalign -f -v 4 ..\apks\<apkfile>_signed.apk ..\apks\<apkfile>_zipaligned.apk
<apkfile>_zipaligned.apk就是我们最终需要的apk了。
完成
部分apk需要系统框架资源,没有的话在重新打包时会报错,这种情况下我们只需要先安装一下对应系统框架即可(从你目标ROM中把/system/framework/framework-res.apk提取出,放到.\workspace\apktoolbox\apks下)。在命令行中输入以下命令进行安装
apktool if ..\apks\framework-res.apk
没有签名的apk怎样才可以装在手机可以用
签名的apk自己无法查看,是安装的时候android系统验证用的。
1.签名的意义
为了保证每个应用程序开发商合法ID,防止部分开放商可能通过使用相同的Package Name来混淆替换已经安装的程序,我们需要对我们发布的APK文件进行唯一签名,保证我们每次发布的版本的一致性(如自动更新不会因为版本不一致而无法安装)。
2.签名的步骤
a.创建key
b.使用步骤a中产生的key对apk签名
3.具体操作, 命令行下对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.*/
注意事项:android工程的bin目录下的demo.apk默认是已经使用debug用户签名的,所以不能使用上述步骤对此文件再次签名。正确步骤应该是:在工程点击右键->Anroid Tools-Export Unsigned Application Package导出的apk采用上述步骤签名。
没有签名的apk是不可以装在手机上的,1、首先我们要对apk文件进行改名与后缀,将其连同后缀一起改掉,如1.zip:
2、这时文件就变成一个zip压缩包了,我们可以提取解压这个压缩包,打开这个解压的文件,
3、下载安装ZipSigner手机签名工具,并打开:
4点击输入,浏览文件目录找到你刚修改好并重新压缩的zip文件,在输出选项可以修改其名称,
5、然后点击签名,模式为auto-testkey就可以了,等一会就签名未完成了:
6、然后在输出目录中找到你签名并输出的文件,这时为signed.zip,再将其后缀改成.apk,
7、然后就可以显示出程序图标了,然后安装上去就可以了。
好了,今天关于“apk签名提取工具”的探讨就到这里了。希望大家能够对“apk签名提取工具”有更深入的认识,并且从我的回答中得到一些帮助。