最近一个项目里需要得到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;
}
}
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()方法可以创建新文件)后再将内容输出。
分享到:
相关推荐
类实现了直接读取apk包中指定的XML文件内容(使用PHP的zip功能函数直接解压apk包),无需手动解压apk获取文件。
可以查看或解压android系统的system.img userdata.img等文件,提取出apk文件等等
Android apk包解压逆向工具,你可以用它来解压apk文件,来分析Android apk大致的架构。比较适合Android apk 分析。
android 应用签名工具,微信开放平台要求填写签名,获取手机应用的数字签名,用于对当前应用进行二次身份校验,开发者可以使用签名生成工具直接从安装当前应用的手机中获取。...解压后把APK文件放在手机中安装
unity调用安卓方法实现apk文件的安装。亲测支持安卓7,8,9。附有安卓源码在MyApplication目录下面。请用unity2018.2.13以上版本打开。直接在unity打包安卓即可测试。如果出现打包失败的报错可能是你把项目解压到了...
3、包含了AndroidResEdit,可对apk文件解压时的resources.arsc直接进行编辑; 4、包含了dex2jar,可将apk文件解压时的classes.dex反编译为jar包文件; 5、包含了jd-jui,可将jar包文件反编译为java源代码; 6、包含...
比如有apk文件:qq.apk,将其改名为qq.zip,然后解压,可以看到classes.dex。 2.解压"apk反编译工具.zip": 解压后,将classes.dex拷贝到该目录下,在命令行进入该目录,执行:dex2jar.bat classes.dex,回车,可...
mac电脑apk文件解压软件,简单的用图形界面将apktools包装了下,使用起来非常简单,可以将apk文件批量解压缩,方便大家查看一些东东,仅供学习目的。
android(安卓)安装包apk文件反编译工具,下载解压安装就可以直接使用,安卓开发人员必备工具,开发效率高
所以手机乐园官方为广大的Android手机用户开发了一款小巧简单的apk软件安装助手,只要您在电脑上安装好了手机驱动,使用手机乐园APK安装助手可以方便将APK文件安装到手机上。 软件特点: 1)支持APK文件信息查看:...
android开发中有时会想研究借鉴一下设计思路和UI风格,但解压apk包后 layout文件夹下xml文件一般都是加密的。在网上找到了一个工具,可以完美地解密xml文件,但这个工具的使用方法是:调cmd 然后...
所以安卓帮帮为广大的Android手机用户开发了一款小巧简单的apk软件安装助手,只要您在电脑上安装好了手机驱动,使用安卓帮帮APK安装器可以方便将APK文件安装到手机上。 【软件特点】 1)支持APK文件信息查看:应用...
APK编辑器是八神智能天下编程组成员罗茂才出品的一个可以编辑apk文件的软件。它包括对apk文件的解包、打包、签名、汉化、应用共存制作、文字翻译等等操作!而本软件也是手机端首个,Android汉化软件,让你在没有电脑...
首先将apk文件后缀改为zip并解压,得到其中的classes.dex,它就是java文件编译再通过dx工具打包而成的,将classes.dex复制到dex2jar.bat所在目录dex2jar-0.0.9.9文件夹。 在命令行下定位到dex2jar.bat所在目录,运行
win7下显示apk文件的图标,相当实用! win7、xp系统测试通过 如何使用APK扩展 ---安装--- 下载download里面的最新压缩包apkshellext_v2_1.zip 解压缩到安全的地方,卸载这个扩展前将不能移动也不能删除 ,注意要用...
工具采用baksmali和smali以及dex2jar脚本工具,解压apk文件并处理成jar包文件,提供给jd-gui程序打开,方便破解apk以及源码阅读;
可以针对Android apk包解压后的二进制文件进行修改。多用于修改渠道名称。
把.apk文件改名为.zip,然后解压缩,得到其中的classes.dex文件,它就是java文件编译再通过dx工具打包成的,所以现在我们就用上述提到的2个工具来逆方向导出java源文件 2.把classes.dex拷贝到dex2jar.bat所在目录。 ...
首先将apk文件后缀改为zip并解压 得到其中的classes dex 它就是java文件编译再通过dx工具打包而成的 将classes dex复制到dex2jar bat所在目录 dex2jar 0 0 9 9文件夹 在命令行下定位到dex2jar bat所在目录 运行 dex...
java 读取APK文件 可以读取version等(解决乱码问题) 我们通过纯java来解读APK里面的AndroidManifest.xml文件 这样可以读取versioncode 注意 是用纯java 而不是Android库 test是实例 其中AXMLPrinter2.jar这个要...