`
v5qqbrowser
  • 浏览: 356752 次
文章分类
社区版块
存档分类
最新评论

Android 解压APK文件

 
阅读更多

最近一个项目里需要得到Android已安装程序的签名文件(CERT.RSA)的SHA1值,所以就调研解压APK文件。

  • 通过包名来得到已安装程序在系统的安装包路径。
private static String getApkPath(String pkgName) {
		PackageManager pm = mContext.getPackageManager();
		ApplicationInfo pi = null;
		try {
			pi = pm.getApplicationInfo(pkgName,PackageManager.GET_UNINSTALLED_PACKAGES);
			if(pi != null)
			    return pi.sourceDir;
			else 
			    return null;
		} catch (NameNotFoundException e) {
			e.printStackTrace();
			return null;
		}
	}
  • 解压对应的APK包,得到需要的文件(.RSA)
public static void UnZip(String unzipfile){
		      try {   
		        File zipFile = new File(unzipfile); //解压缩的文件路径(为了获取路径) 
		        if(!zipFile.exists())
		        {
		        	Log.i(TAG,"FILE !EXIST");
		        	return ;
		        }
		        ZipInputStream zin = new ZipInputStream(new FileInputStream(zipFile));   
		        ZipEntry entry;   
		        while ( (entry = zin.getNextEntry()) != null){
		          if (!entry.isDirectory()) { //匹配文件,跳过文件夹  
		        	 String filePath = entry.getName();
		        	 Pattern p = Pattern.compile(".*(RSA|DSA|rsa)$"); //匹配RSA后缀的文件  
		        	 Matcher m = p.matcher(filePath);
		        	 if(m.matches())
		        	 {	
		        		 ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
		        		 byte[] buffer = new byte[1024];   
		        		 int count;       
		        		 while ((count = zin.read(buffer)) != -1) {
		        				 baos.write(buffer, 0, count);     
		        			 }
		        		 
		        		try {
							String sha1 = Sha1.getSha1(baos);
							Log.i(TAG, "Sha1:"+sha1+"");
						} catch (Exception e) {
							e.printStackTrace();
						}
		        			} 
		        		 } 
		        }//while
		        zin.closeEntry();   
		      }//try   
		      catch (IOException e) {   
		        e.printStackTrace();   
		      }
		  }

主要就是通过ZipInputStream来读取对应文件,然后将该文件写到SD卡上,然后调用sha1方法读取该文件得到sha1值。

ZipInputStream类,比较重要,值得学习一下。

SDK里:

总结:ZipInputStream是InputStream的子类,通过此类可以方便地读取ZIP格式的压缩文件。

通过ZipInputStream类中的getNextEntry()方法可以依次取得每一个ZipEntry,那么将此类与ZipFile结合就可以对压缩的文件夹进行解压缩操作。但是需要注意的是,在mldndir.zip文件中本身是包含压缩的文件夹的,所以在进行解压缩前,应该先根据ZIP文件中的文件夹的名称在硬盘上创建好一个对应的文件夹,然后才能把文件解压缩进去,而且在操作时对于每一个解压缩的文件都必须先创建(File类的createNewFile()方法可以创建新文件)后再将内容输出。

分享到:
评论

相关推荐

    PHP 读取 Android APK XML文件,无需JDK

    类实现了直接读取apk包中指定的XML文件内容(使用PHP的zip功能函数直接解压apk包),无需手动解压apk获取文件。

    img2apk android系统apk解压工具

    可以查看或解压android系统的system.img userdata.img等文件,提取出apk文件等等

    Android apk包解压逆向工具

    Android apk包解压逆向工具,你可以用它来解压apk文件,来分析Android apk大致的架构。比较适合Android apk 分析。

    获取android应用签名-解压后把APK文件放在手机中安装Gen_Signature_Android.apk.zip

    android 应用签名工具,微信开放平台要求填写签名,获取手机应用的数字签名,用于对当前应用进行二次身份校验,开发者可以使用签名生成工具直接从安装当前应用的手机中获取。...解压后把APK文件放在手机中安装

    unity调用安卓安装apk文件(支持安卓9)

    unity调用安卓方法实现apk文件的安装。亲测支持安卓7,8,9。附有安卓源码在MyApplication目录下面。请用unity2018.2.13以上版本打开。直接在unity打包安卓即可测试。如果出现打包失败的报错可能是你把项目解压到了...

    Android apk文件反编译、编辑、签名工具大集合

    3、包含了AndroidResEdit,可对apk文件解压时的resources.arsc直接进行编辑; 4、包含了dex2jar,可将apk文件解压时的classes.dex反编译为jar包文件; 5、包含了jd-jui,可将jar包文件反编译为java源代码; 6、包含...

    反编译apk文件(android)

    比如有apk文件:qq.apk,将其改名为qq.zip,然后解压,可以看到classes.dex。 2.解压"apk反编译工具.zip": 解压后,将classes.dex拷贝到该目录下,在命令行进入该目录,执行:dex2jar.bat classes.dex,回车,可...

    mac电脑批量解压android apk文件图形化工具--apkDecode

    mac电脑apk文件解压软件,简单的用图形界面将apktools包装了下,使用起来非常简单,可以将apk文件批量解压缩,方便大家查看一些东东,仅供学习目的。

    apk文件反编译工具【解压可直接安装使用】

    android(安卓)安装包apk文件反编译工具,下载解压安装就可以直接使用,安卓开发人员必备工具,开发效率高

    Android手机安装apk程序助手

    所以手机乐园官方为广大的Android手机用户开发了一款小巧简单的apk软件安装助手,只要您在电脑上安装好了手机驱动,使用手机乐园APK安装助手可以方便将APK文件安装到手机上。 软件特点: 1)支持APK文件信息查看:...

    Android APK xml 批量解密工具

    android开发中有时会想研究借鉴一下设计思路和UI风格,但解压apk包后 layout文件夹下xml文件一般都是加密的。在网上找到了一个工具,可以完美地解密xml文件,但这个工具的使用方法是:调cmd 然后...

    安卓网apk安装器3.0

    所以安卓帮帮为广大的Android手机用户开发了一款小巧简单的apk软件安装助手,只要您在电脑上安装好了手机驱动,使用安卓帮帮APK安装器可以方便将APK文件安装到手机上。 【软件特点】 1)支持APK文件信息查看:应用...

    APk 编辑器 Android

    APK编辑器是八神智能天下编程组成员罗茂才出品的一个可以编辑apk文件的软件。它包括对apk文件的解包、打包、签名、汉化、应用共存制作、文字翻译等等操作!而本软件也是手机端首个,Android汉化软件,让你在没有电脑...

    android apk编辑器

    首先将apk文件后缀改为zip并解压,得到其中的classes.dex,它就是java文件编译再通过dx工具打包而成的,将classes.dex复制到dex2jar.bat所在目录dex2jar-0.0.9.9文件夹。 在命令行下定位到dex2jar.bat所在目录,运行

    ApkShellExt_v2.1(显示APK真实图标)——Android安卓

    win7下显示apk文件的图标,相当实用! win7、xp系统测试通过 如何使用APK扩展 ---安装--- 下载download里面的最新压缩包apkshellext_v2_1.zip 解压缩到安全的地方,卸载这个扩展前将不能移动也不能删除 ,注意要用...

    Android-APK 一键自动反编译工具

    工具采用baksmali和smali以及dex2jar脚本工具,解压apk文件并处理成jar包文件,提供给jd-gui程序打开,方便破解apk以及源码阅读;

    命令行修改Android apk包xml二进制文件

    可以针对Android apk包解压后的二进制文件进行修改。多用于修改渠道名称。

    反编译apk文件工具及使用方法

    把.apk文件改名为.zip,然后解压缩,得到其中的classes.dex文件,它就是java文件编译再通过dx工具打包成的,所以现在我们就用上述提到的2个工具来逆方向导出java源文件 2.把classes.dex拷贝到dex2jar.bat所在目录。 ...

    Android反编译工具 APK反编译工具

    首先将apk文件后缀改为zip并解压 得到其中的classes dex 它就是java文件编译再通过dx工具打包而成的 将classes dex复制到dex2jar bat所在目录 dex2jar 0 0 9 9文件夹 在命令行下定位到dex2jar bat所在目录 运行 dex...

    java 读取APK文件 可以读取version等(解决乱码问题)

    java 读取APK文件 可以读取version等(解决乱码问题) 我们通过纯java来解读APK里面的AndroidManifest.xml文件 这样可以读取versioncode 注意 是用纯java 而不是Android库 test是实例 其中AXMLPrinter2.jar这个要...

Global site tag (gtag.js) - Google Analytics