获取apk文件的签名所有者、发行者和key

爬取apk的时候,要获取apk签名的一些信息,网上搜索到的一般都是签名判断的,没找到签名所属公司等信息,下面的代码,可以获取相关信息,其实也是非常简单。

    public static String getAPKSigInfo(String filePath) {
    	String subjectDN = "";
    	String issuerDN = "";
    	String publicKey = "";
       try {
           JarFile jarFile = new JarFile(filePath);
           JarEntry jarEntry = jarFile.getJarEntry("AndroidManifest.xml");
           if (jarEntry != null) {
           	byte[] readBuffer = new byte[8192];
	        InputStream is = new BufferedInputStream(jarFile.getInputStream(jarEntry));
             while (is.read(readBuffer, 0, readBuffer.length) != -1) {
                   // not using
               }
             Certificate[] certs = jarEntry.getCertificates();        	   
             if(certs!=null && certs.length>0)
             {
        		   //获取证书
        		   X509Certificate x509cert = (X509Certificate) certs[0];      
        		   //获取证书发行者
        		   issuerDN = x509cert.getIssuerDN().toString();
        		   //获取证书所有者
        		   subjectDN = x509cert.getSubjectDN().toString();   
        		   //证书key
        		   publicKey = x509cert.getPublicKey().toString();

             }
           }
       } catch (IOException e) {
           e.printStackTrace();
       } catch (Exception e) {
           e.printStackTrace();
       }
       return null;
   }
时间: 2024-10-11 11:20:22

获取apk文件的签名所有者、发行者和key的相关文章

【keytool jarsigner工具的使用】Android 使用JDK1.7的工具 进行APK文件的签名,以及keystore文件的使用

你看到的这个文章来自于http://www.cnblogs.com/ayanmw 一个android apk的编译过程 请参考: http://www.2cto.com/kf/201312/261475.html 典型的编译过程: aapt( Android Asset Packaging Tool): 把你的应用程序资源文件(例如: AndroidManifest.xml file and the XML files for your Activities),编译成R.java .它可以让你从

利用signapk.jar工具对apk文件进行签名

signapk.jar是Android源码包中的一个签名工具. 代码位于:Android源码目录下,signapk.jar 可以编译build/tools/signapk/ 得到. 使用signapk.jar签名时需要提供签名文件,我们可以使用安卓源码中提供的testkey.pk8与testkey.x509.pem,他们位于Android源码build/target/product/security目录. 使用android自带的签名工具signapk.jar 以及源码中的testkey.x50

获取apk文件包信息

PackageManager pm = context.getPackageManager(); PackageInfo info = pm.getPackageArchiveInfo(filePath, PackageManager.GET_ACTIVITIES); // filePath为apk文件路径 return info.versionCode; // apk安装包中的版本号

Android 生成正式签名的APK文件

应用已经开发出来了,下一步我们需要思考推广方面的工作.那么如何才能让更多的用户知道并使用我们的应用程序呢?在手机----领域,最常见的做法就是将程序发布到某个应用商店中,这样用户就可以通过商店找到我们的应用程序,然后轻松地进行下载和安装. 说到应用商店,在Android领域真的可以称得上是百家争鸣,除了谷歌官方推出的Google Play之外,在国内还有91.豌豆荚.机锋.360等知名应用商店.当然,这些商店所提供的功能都是比较类似的,发布应用的方法也大同小异,因此这里我们就只学习如何将应用发布

[转]Android应用安装包apk文件的反编译与重编译、重签名

背景介绍: 最近在做Robotium自动化测试,使用到solo.takeScreenshot()函数以在测试过程中截图,但此函数需要被测试APP具有<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />权限.在只有被测试APP的apk文件的情况下,修改apk文件后缀名为zip,解压缩后,修改AndroidManifest.xml文件,删除META-INF文件夹,重压缩为apk文

通过上传的APK文件,解析APK文件内容,获取应用权限包名等

通过上传的APK文件,解析APK文件内容,获取应用权限包名等 1工具导入: 下载aapt.exe反编译执行程序,放入Java工程资源文件夹下(具体路径自己可定义) 2编写ApkUtil类,获取apk文件信息 public class ApkUtil { public static final String VERSION_CODE = "versionCode"; public static final String VERSION_NAME = "versionName&q

破解第一个程序----分析APK文件

反编译APK成功后,在outdir目录下会生成一系列目录与文件. smali:程序所有的反汇编代码: res:程序中所有的资源文件: 如何寻找突破口是分析程序的关键.错误提示一般是指引关键代码的风向标,错误提示附近一般是核心验证代码,我们需要阅读这些代码来理解软件的注册流程. 错误提示是安卓中的字符串资源: 1:硬编码到源码中: 2:引用自“res\values"目录下的string.xml文件. apk文件在打包时,string.xml文件中的字符串被加密存储在resources.arsc文件

Java环境解析apk文件信息

概述:Java解析apk文件,获取apk文件里的包名,版本号,图标文件等; 功能:可以提供给windows和linux平台使用; 原理:利用aapt.exe或者aapt这些anroid平台解析apk文件的工具,借用终端shell调用命令解析输出信息; 代码: 这里贴出一些关键代码,并给出代码注释,如下 1 package com.apkutils; 2 3 import java.io.BufferedReader; 4 import java.io.Closeable; 5 import ja

apk去广告工具(利用apktool去除apk文件里的广告)

基本知识 apk安装包的文件结构 以知名桌面软件“LauncherPro”为例,apk安装包文件目录: 文件目录如下: - META-INF - res - anim - color - drawable - drawable-hdpi - drawable-land - drawable-land-hdpi - drawable-mdpi - drawable-port - drawable-port-hdpi - layout - layout-land - layout-port - xm