前段时间在工作中遇到一个问题,即在非android环境下获取apk签名信息,网上查了不少资料整理出一份代码,分享出来希望对看到的人有所帮助。
主要思路:读META-INF/路径下的证书,获取签名信息后,转换成字符数组(tochar方法是关键)。
解决方法整理程序如下:
private static char[] toChars(byte[] mSignature) { byte[] sig = mSignature; final int N = sig.length; final int N2 = N*2; char[] text = new char[N2]; for(int j=0;j<N;j++){ byte v = sig[j]; int d = (v>>4)&0xf; text[j*2] = (char)(d >= 10 ? ('a' + d - 10) : ('0' + d)); d = v&0xf; text[j*2+1] = (char)(d >= 10 ? ('a' + d - 10) : ('0' + d)); } return text; } private static java.security.cert.Certificate[] loadCertificates(JarFile jarFile, JarEntry je, byte[] readBuffer) { try { InputStream is = jarFile.getInputStream(je); while(is.read(readBuffer,0,readBuffer.length)!=-1) { } is.close(); return (java.security.cert.Certificate[])(je!=null?je.getCertificates():null); } catch (Exception e) { e.printStackTrace(); System.err.println("Exception reading "+je.getName()+" in "+jarFile.getName()+": "+e); } return null; } public static String getApkSignInfo(String apkFilePath){ byte[] readBuffer = new byte[8192]; java.security.cert.Certificate[] certs = null; try{ JarFile jarFile = new JarFile(apkFilePath); Enumeration entries = jarFile.entries(); while(entries.hasMoreElements()){ JarEntry je = (JarEntry)entries.nextElement(); if(je.isDirectory()){ continue; } if(je.getName().startsWith("META-INF/")){ continue; } java.security.cert.Certificate[] localCerts = loadCertificates(jarFile,je,readBuffer); System.out.println("File " + apkFilePath + " entry " + je.getName()+ ": certs=" + certs + " ("+ (certs != null ? certs.length : 0) + ")"); if (certs == null) { certs = localCerts; }else{ for(int i=0; i<certs.length; i++){ boolean found = false; for (int j = 0; j < localCerts.length; j++) { if (certs[i] != null && certs[i].equals(localCerts[j])) { found = true; break; } } if (!found || certs.length != localCerts.length) { jarFile.close(); return null; } } } } jarFile.close(); return new String(toChars(certs[0].getEncoded())); }catch(Exception e){ e.printStackTrace(); } return null; }
欢迎拍砖!
相关推荐
本主题聚焦于"android安卓获取apk签名工具",这通常涉及到APK签名的概念、过程以及如何使用特定工具来完成这一任务。 **APK签名的重要性** 1. **验证开发者身份**:签名提供了一种方式,让用户知道应用的来源,...
在Android应用开发中,APK签名是一个至关重要的步骤,它确保了应用的完整性和来源的可信性。在Windows环境下,开发者通常使用特定的工具来对APK进行签名,以使其能够在Android设备上顺利安装和运行。本文将详细介绍...
在Android系统中,APK签名...总结,Android 10 APK签名文件是应用开发不可或缺的一部分,它关乎应用的安全、权限获取以及用户信任。开发者需熟知签名机制,合理运用签名工具,遵循最佳实践,以确保应用的质量和安全性。
本源代码是使用JNI获得APK签名的哈希值,先通过获取app的包名,判断该包名是否合法,然后再获取该包名的签名,判断是否合法.我们不能够用jni来判断签名是否合法,然后又回到java那里去,只能使用jni来编写核心代码.否则是...
本文将详细介绍Android APK签名工具及其使用方法。 Android Studio,作为官方推荐的集成开发环境,内置了签名工具,允许开发者轻松地为他们的应用签名。描述中提到的"android system signature tool"很可能是指`...
APK签名的过程主要包括以下几个步骤: 1. **生成密钥对**:首先,开发者需要使用密钥生成工具(如Java的keytool)创建一个包含公钥和私钥的密钥对。私钥用于签名,而公钥则用于验证签名。 2. **构建APK**:开发...
本话题主要涉及“微信工具apk签名获取”,这是一个官方提供的帮助开发者获取APK签名的工具。 首先,我们来理解一下什么是APK签名。在Android系统中,每个安装到设备上的应用程序都需要一个数字签名,这是为了确保...
在这个场景下,"查看APK签名信息和版本号工具"显然是一个用于帮助开发者获取这些关键信息的实用工具,而"aapt.exe"则是实现这一功能的关键组件。 **aapt.exe**是Android Asset Packaging Tool的缩写,它是Android ...
在Android开发过程中,Apk签名是一个至关重要的步骤,它确保了应用的安全性和完整性。本文将深入探讨Android Apk签名工具的使用,以及它在构建和发布Android应用过程中的作用。 首先,我们需要理解什么是Apk签名。...
2. **提取签名信息**:签名信息通常是一串长长的十六进制字符串,可以通过` keytool `工具查看。例如: ``` keytool -printcert -file <your_apk>.apkCERT.RSA ``` 这将显示包括SHA-1和MD5在内的摘要信息,但...
微信签名工具,即`Gen-Signature-android.apk`,是一个专为开发者设计的工具,用于生成和管理Android应用的签名文件。这个工具可以帮助开发者对他们的APK进行签名,以确保其能够在用户的设备上正常安装和运行。由于...
3. **获取apk签名信息**:APK的签名用于验证应用的身份,确保未被篡改。获取签名信息通常需要用到`aapt`(Android Asset Packaging Tool),也是Android SDK的一部分。在Python中,我们可以调用`subprocess`模块执行...
本文实例讲述了Android获取apk签名指纹的md5值以防止重新被打包的实现方法。分享给大家供大家参考,具体如下: 做个记录(这里只是Java层的签名校验,java层容易被破解,我建议apk加固下) 获取md5值来进行Apk签名校验...
总之,"查看apk签名工具"是一个实用的辅助工具,它简化了查看APK签名信息的过程,对于调试、安全分析和应用分发具有很高的价值。通过输入APK的包名,开发者可以快速检查应用的签名状态,确保其符合发布要求,并保护...
APK签名是Android安全模型的一部分,它通过数字签名技术对APK进行验证,保证应用未经篡改,并且可以追溯到开发者。Android系统在安装APK时会检查签名,如果签名无效或缺失,系统将不允许安装。 批处理脚本是一种...
此外,非官方签名可能会导致系统不稳定,且可能违反Android的政策,因此不建议在生产环境中随意使用。 6. **替代方法**:如果可能,应优先考虑通过正规渠道获取系统权限,如开发系统级应用或申请成为设备的默认应用...
1. **复制文件至JDK bin目录**:为了确保签名过程不受环境变量的影响,建议将待签名的APK文件以及密钥库文件(如android.keystore)复制到JDK的bin目录下。 2. **打开命令提示符或终端**:使用命令行工具进入到JDK ...
1. **下载工具**:首先,需要从可靠的来源获取APK万能签名工具,例如`APKSign_7edown.com`。 2. **准备APK文件**:找到需要重新签名的APK文件,将其保存到本地。 3. **启动工具**:运行下载的签名工具,根据界面指示...
使用MD5签名工具,开发者可以快速获取APK的MD5哈希值,但这主要用于基本的校验,而非安全目的。 "第三方集成"是指将应用与其他服务或平台进行连接,例如社交媒体分享、支付系统等。在集成这些服务时,通常需要提供...