移动互联网中,主要的两个平台是Android和ios,android上文件的安装包是后缀名为apk的文件,ios上文件的安装包是后缀名为ipa的文件,在本文分析一下这两种文件的特点,以及如何用程序去解析这些安装包的资源。

1.    android的apk文件

(1) apk文件的结构

apk文件其实是zip格式,但后缀名被修改为apk,所以,把apk的文件后缀改为zip后,就能用压缩软件打开安装包。

打开apk文件后,可看到如下的文件结构,如图1:

图1

META-INF目录:存放的是签名信息,用来保证apk包的完整性和系统的安全。

lib目录:子目录armeabi存放的是一些so文件。

assets目录:存放一些配置文件,这些文件的内容在程序运行过程中可以通过相关的API获得。

res目录:放资源文件。包括图片,字符串等等。

AndroidManifest.xml:该文件是每个应用都必须定义和包含的,它描述了应用的名字、版本、权限、引用的库文件等等信息。

classes.dex:java源码编译后生成的java字节码文件(首先是java文件通过jdk编译成字节码文件然后经过dex编译成classes.dex)。

resources.arsc:编译后的二进制资源文件的索引(apk文件的资源表(索引))

(2) 如何获取apk文件的基本信息

要获取apk文件的基本信息(例如图标,应用名称,版本),可以使用android-apktool(我已打包上传到http://download.csdn.net/detail/newjueqi/7713025), 把里面的所有文件复制到/usr/local/bin/ 目录后,用如下命令就能获取apk的文件信息。

/usr/bin/sudo/usr/local/bin/aapt dump badging apk文件路径

执行的例子如图2:

图2

从上面红框的三行,就能获取apk的版本号,名称,图标。

2.    ios的ipa文件

(1) ipa文件架构

ipa文件其实也是一个zip文件,把ipa后缀名改为zip后,就能把它打开,打开后首先看的是”payload”文件夹,进入”payload”文件夹就是”应用名.app”文件夹,进入这个文件夹后就是资源的位置。

资源的例子,如图3所示:

_CodeSignature:文件的签名。

Info.plist: 被加密过的文件,应用名,版本,图标等信息都包含在这个文件中。

icon2.png,icon.png:不同尺寸的图标文件,也是被加密过的。

(2) 如何获取ipa文件的信息

在(1) 中已经提过了,ipa文件的信息是保存在Info.plist,用开源工具(https://github.com/rodneyrehm/CFPropertyList)就能把里面的内容解密。

简单的用法如下:

require_once(__DIR__.'/../classes/CFPropertyList/CFPropertyList.php');

$content =file_get_contents("/tmp/Info.plist");

$plist = new CFPropertyList();

$plist->parse($content);

var_dump( $plist->toArray() );

$plist这个数组的信息如下:

array(29) {

'CFBundleName' =>

string(12) "DataDemo"

'DTXcode' =>

string(4) "0511"

'DTSDKName' =>

string(11) "iphoneos7.1"

'DTSDKBuild' =>

string(6) "11D167"

'CFBundleDevelopmentRegion' =>

string(2) "en"

'CFBundleVersion' =>   //版本号

string(3) "2.0"

.........

'CFBundleDisplayName' => //应用名称

string(12) "DataDemo"

.........

array(1) {

'CFBundlePrimaryIcon' =>

array(1) {

'CFBundleIconFiles' =>  //图标文件

array(2) {

[0] =>

string(5) "icon2"

[1] =>

string(4) "icon"

}

}

在这个数组中,关键的部分如下:

'CFBundleVersion':版本号

'CFBundleDisplayName':应用名称

'CFBundlePrimaryIcon'->'CFBundleIconFiles':图标文件

根据这里的图标名称,在ipa文件中找到加密过的图标文件。使用开源工具(https://github.com/pcans/PngCompote),就能把加密过的图标文件还原。

Pngcompote的用法:

require_once 'pngCompote.php';

$filename = 'Lenna.crush.png'; //需要解密的文件路径

$newFilename = 'Lenna.compote.png'; //解密后的文件路径

$png = new PngFile($filename);

if ($png->revertIphone($newFilename)) {

echo 'cleaning done!'.PHP_EOL;

echo ''.PHP_EOL;

}

链接:

tar.xz文件如何解压

1. tar.xz介绍 XZ压缩最新压缩率之王 xz这个压缩可能很多都很陌生,不过您可知道xz是绝大数linux默认就带的一个压缩工具. 之前xz使用一直很少,所以几乎没有什么提起. 2. 压缩 ta ...

linux ubuntu12.04 解压中文zip文件,解压之后乱码

在windows下压缩后的zip包,在ubuntu下解压后显示为乱码问题 1.zip文件解压之后文件名乱码: 第一步 首先安装7zip和convmv(如果之前没有安装的话) 在命令行执行安装命令如下: ...

Linux下*.tar.bz2等文件如何解压--转

如果tar不支持j这个参数就先用 bzip2 -d xxx.tar.bz2 把它解压成.tar文件,然后再用 tar xvf xxx.tar 拆包.压缩解压 linux下怎么解后缀名是gzip的文件? ...

PHP zip压缩文件及解压

PHP zip压缩文件及解压 利用ZipArchive 类实现 只有有函数.界面大家自己写 ZipArchive(PHP 5.3 + 已自带不需要安装dll) /** * 文件解压 * @param ...

SpringMVC上传压缩文件,解压文件,并检测上传文件中是否有index.html

SpringMVC上传压缩文件,解压文件,并检测上传文件中是否有index.html 说明: 1.环境:SpringMVC+Spring+Tomcat7+JDK1.7 2.支持 zip和rar格式的压 ...

解决MOFH免费空间cpanel面板大文件无法解压的情况

解决办法: 解压大文件,重新压缩为tar格式的压缩格式,这样可以更小,而且也可以在cpanel面板解压,记得使用filezilla软件上传文件,在cpanel的网页界面不要刷新,一刷新就不可以解压大文 ...

Java实现zip压缩文件的解压

需求描述: 前段时间写了一篇博客,实现了一部分的业务需求.然而有些业务可能不止传送一个文件,有时候客户需要传多个文件,原有系统 ...

.tar.xz文件的解压方法

废话不多说: 直接看 方法一: tar -xvJf ***.tar.gz 方法二: 先减压成 .tar 格式的文件, 再解压 .tar #xz是一个工具, 系统中没有安装,需要下载 xz -d *** ...

Android 下载zip压缩文件并解压

网上有很多介绍下载文件或者解压zip文件的文章,但是两者结合的不多,在此记录一下下载zip文件并直接解压的方法. 其实也很简单,就是把下载文件和解压zip文件结合到一起.下面即代码: URLConne ...

随机推荐

EC笔记:第三部分:13、以对象管理资源

C++相比Java等含有gc的语言来说,内存管理方面(也包括资源管理)比较令人头疼.一些初级程序员,甚至是一些经验丰富的老程序员,也会经常在资源管理上犯错.这时候就需要一个能够自动管理资源的东西(gc ...

sql命令查看,清楚mysql bin日志

查看二进制日志文件 mysql> SHOW BINLOG EVENTS \G; mysql> SHOW MASTER LOGS; 清除二进制日志文件 mysql> PURGE { M ...

Circle(codevs 3134)

题目描述 Description 在一个圆上,有2*K个不同的结点,我们以这些点为端点,连K条线段,使得每个结点都恰好用一次.在满足这些线段将圆分成最少部分的前提下,请计算有多少种连线的方法 输入描述 ...

entityFramework使用 codefirst

新建项目 用nuget安装entityFramework,Install-Package Entityframework 建一个model和context //[Table("Custome ...

dom 表格操作

...

linux内核下载

01最新版:https://www.kernel.org/ 02老旧版:https://www.kernel.org/pub/linux/kernel/v3.x/ ------------------ ...

联想R720面板右下部分按压后和上面按键串联了

如图所示的位置,一用力按压,就会触发键盘的按键. 前提: 本人刚刚加装了内存条,内存条是京东买的 十铨(Team) DDR4 2400 8GB 笔记本内存,安装完内存以后,发现电脑出了这样的问题. 解 ...

计算几何总结(Part 1~2)

Preface 对于一个初三连三角函数都不会的蒟蒻来说计算几何简直就是噩梦. 反正都是要学的也TM没办法,那就慢慢一点点学起吧. 计算几何要有正确的板子,不然那种几百行CODE的题写死你. 本蒟蒻的学 ...

Spring学习三

Spring注解来注入bean 在classpath中扫描组件 组件扫描,即componetscanning 利用注解来扫描的组件有  @Component  :基本注解,表示一个受Spring管理的 ...

OC中双向链表的实现

双向链表的概念 双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱.所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点.一般我们都 ...

linux解压apk文件,关于ipa和apk文件的解压相关推荐

  1. 【Android 安全】DEX 加密 ( Java 工具开发 | 解压 apk 文件 | 加密生成 dex 文件 | 打包未签名 apk 文件 | 文件解压缩相关代码 )

    文章目录 一.解压 apk 文件 二.加密生成 dex 文件 三.打包未签名 apk 文件 四.完整代码示例 五.文件解压缩相关代码 六.执行结果 参考博客 : [Android 安全]DEX 加密 ...

  2. linux中解压.tgz, .tar.gz ,zip ,gz, .tar文件

    将.tgz文件解压在当前目录: tar zxvf MY_NAME.tgz 将.tar.gz文件解压在当前目录: tar zxvf MY_NAME.tar.gz tar -xvf file.tar // ...

  3. linux解压多个part rar,【linux】安装rar,并解压被压缩成多个rar的文件

    rar  官网:http://www.rarsoft.com/download.htm 选择  RAR for  linux   (注意你的系统是32位还是64位) 1 安装命令: $ cd /roo ...

  4. linux解压z格式文件夹,使用7zip解决解压zip格式文件名乱码, 最简单的解决解压z...

    使用7zip解决解压zip格式文件名乱码, 最简单的解决解压z 由于中文文件名与英文文件名编码的差异,很容易造成在Linux系统使用unzip命令解压zip格式的压缩包时造成中文文件名乱码. 最简单的 ...

  5. linux看zip的目录结构,无需解压如何查看一个归档或压缩文件的内容

    在本教程中,我们将学习如何在类 Unix 系统中查看一个归档或者压缩文件的内容而无需实际解压它.在深入之前,让我们先厘清归档和压缩文件的概念,它们之间有显著不同.归档是将多个文件或者目录归并到一个文件 ...

  6. linux中gz文件怎么解压,Linux解压gz文件的命令使用教程及详解

    今天小编给带来一篇linux解压方面的资料 Linux解压gz文件的命令有:gunzip命令.gzip命令.tar命令.下面本篇文章就来带大家了解一下 gz文件是一种压缩文件,以.gz或者.tar.g ...

  7. linux中解压tar.gz或zip类型的文件到具体文件夹

    zip对应的解压缩命令为unzip 命令格式:unzip [选项] 压缩包名 选项: -d:指定解压缩位置.示例: unzip -d /tmp/ test.zip 将tar.gz文件解压到指定的目录中 ...

  8. linux(64位)安装rar,并解压被压缩成多个rar的文件

    安装rar 下载rar安装包 下载地址:http://www.rarsoft.com/download.htm, 根据操作系统选择对应的二进制安装包,我的Redhat操作系统为64bit,因此下载的r ...

  9. linux 解压文件夹下所有zip文件

    解压上述文件. find . -name '*.zip' # 查看当前文件夹下所有zip文件 cd zip文件的父级文件夹目录 unzip '*.zip' # 运行此命令即可 还有一种方法, 直接使用 ...

  10. jadx 支持 Windows、Linux、 macOS,能够帮我们打开.apk, .dex, .jar,.zip等格式的文件

    作者:JavaGuide 链接:https://www.zhihu.com/question/20264247/answer/2306405289 来源:知乎 著作权归作者所有.商业转载请联系作者获得 ...

最新文章

  1. 【tensorboard】从tensorboard上看出模型是否存在过拟合
  2. 深度探索Hyperledger技术与应用之超级账本初体验(附部署代码)
  3. 【转】浅谈MS-SQL锁机制
  4. Java面向对象(七)包、内部类、垃圾回收机制
  5. Apache Dubbo 被曝出“高危”远程代码执行漏洞
  6. YOLOv5算法详解
  7. Java中的使用了未经检查或不安全的操作
  8. .Net 1.1下WEB引用Win控件的两个Bug
  9. 外设驱动库开发笔记32:HLPM025K3 PM2.5传感器驱动
  10. java人民币读法转换
  11. Ubuntu 下监控进程网络流量
  12. Fiddler显示只抓取特定网站或APP
  13. Windows Workflow HOL学习笔记(七):添加一个验证来检查Email参数
  14. java快速查找素数_Java实现快速查找某个范围内的所有素数
  15. 工训物流小车视觉开源代码,包含二维码、条形码、物块、标识靶识别
  16. php easyui filebox,easyui fileBox 获取文件名和添加下拉框
  17. 《我是北大旁听生/郑球洋》
  18. 中国云计算产业的发展趋势和当今现状
  19. Archlinux 安装Yaourt的方式
  20. 码绘VS手绘(二)动态绘图

热门文章

  1. Python求解平方怪圈问题
  2. 神舟笔记本键盘灯不亮驱动
  3. pycharm5.0.3在用QQ输入法候选框不跟随解决方法
  4. PAT 1006 解析
  5. node.js实现微信授权登陆
  6. 31个让你大呼惊艳的数据可视化作品!
  7. 《查拉图斯特拉如是说》读书笔记
  8. 墨尔本大学计算机科学要求,墨尔本大学计算机科学
  9. python计算手机销量年增长率_「净资产增长率」Python量化数据获取:总资产同比增长率与净资产同比增长率 - seo实验室...
  10. 解决sigmoid/softmax指数运算溢出问题及python实现