Android逆向 APK文件组成
一 了解APK文件
我们知道Android系统能运行的程序是.apk文件格式,其实它就是一个压缩包而已,把.apk修改成.zip,然后解压就可以得到该apk内部的文件结构。
PS: 既然可以把apk文件改成zip解压,能不能再把这些文件压缩成zip格式,再修改成apk文件安装到手机里呢?
肯定是不行的,因为解压时文件已经被修改了,要想重新压缩成apk成功安装的话需要重新签名的。
上节课编写一个Android程序生成的apk太多简单,所以文件组成过于简单。自己接触unity方面比较多,这儿用一个unity生成的apk解压后得到的文件来介绍,如图:

1 assets文件夹:
资源目录,在Java代码中需要使用AssetManager来访问该目录。
PS:使用C++游戏引擎(Unity,UE等)开发的APK中的资源文件均需放在asset文件夹下。( Icon图标还是会放到res文件夹下)
2 lib文件夹:
so库存放目录,一般由NDK编译得到,常见于使用游戏引擎活JNI native调用的工程中
3 META-INF文件夹:
存放工程的属性文件,例如CERT.RSA
4 res文件夹:
资源目录,res目录下的资源文件在编译时会自动生成索引文件R.java,在Java代码中引用的话需要用R.xxx.xxx方式引用。
比如我们上节在activity_main.xml中定义的Button的id为@+id/button_Confirm,在MainActivity.java中引用这个Button的话就得用R.id.button_Confirm方式引用。
PS:使用Java开发的Android工程,除了音频和视频资源放在raw或asset文件夹下,其他资源都放在res文件夹下。
Android逆向 APK文件组成的更多相关文章
- 将HTML5封装成android应用APK文件的几种方法
越来越多的开发者热衷于使用html5+JavaScript开发移动Web App.不过,HTML5 Web APP的出现能否在未来取代移动应用,就目前来说,还是个未知数.一方面,用户在使用习惯上,不喜 ...
- 将HTML5封装成android应用APK文件的几种方法(转载)
越来越多的开发者热衷于使用html5+JavaScript开发移动Web App.不过,HTML5 Web APP的出现能否在未来取代移动应用,就目前来说,还是个未知数.一方面,用户在使用习惯上,不喜 ...
- Unity3d导出Android的apk文件时相关问题的解决办法
今天上午着手将一个unity3d开发的小游戏build到android手机上运行,结果遇到了不少问题. 首先遇到的第一个问题是在build到一半的时候,弹出如下报错: Error building P ...
- 将HTML5封装成android应用APK文件的几种方法(转)
作为下一代的网页语言,HTML5拥有很多让人期待已久的新特性.HTML5的优势之一在于能够实现跨平台游戏编码移植,现在已经有很多公司在移动 设备上使用HTML5技术.随着HTML5跨平台支持的不断增强 ...
- Android 校验apk文件渠道号、包名、版本号
功能:可查看单个或目录下所有apk文件的渠道号.包名.版本号 下载地址:http://download.csdn.net/detail/zgz345/9248487使用:以查看包名.版本号为例 1.c ...
- Android之APK文件签名——keytool和jarsigner
一.生成密钥库将位置定位在jdk的bin文件中,输入以下命名行:keytool -genkey -alias ChangeBackgroundWidget.keystore -keyalg RSA - ...
- (转载)反编译android的apk文件步骤
下面的方法我已经尝试过,完全可以成功,重点的步骤我在这里说一下 1.必须要有java环境,记得配置好环境变量 2.如果只查看class中的函数文件,只需要下载dex2jar和jd-gui 3.下载地址 ...
- Android 将APK文件安装到AVD中并分析其界面结构
配置环境变量 将android sdk 中的android-sdk\tools .android-sdk\platform-tools 添加到windows环境变量中.用于打开android sdk中 ...
- cocos2d-x 3.0 将cpp-tests编译成Android版本号APK文件
cmd模式 进入到 E:\cocos2d-x-3.0rc1\cocos2d-x-3.0rc1\build 输入命令 android list targets 在输入: android-build.py ...
随机推荐
- List集合和Set集合的遍历方法
Set集合遍历方法: 对 set 的遍历 1.迭代遍历: Set<String> set = new HashSet<String>(); Iterator<String ...
- ES练习代码
package elasticsearch; import java.util.HashMap; import java.util.List; import java.util.Map; import ...
- 图片按日期分类和查看程序(WPF开发)(附源码)
手机方便了我们的生活,可以随时随地拍摄.越来越多的图片堆砌在电脑里.看到杂乱无章的图片,实在感到头痛.手动整理太复杂.基于此,我写了一个小程序,可以将图片按日期整理和查看.按日期查看图片,回忆过去的点 ...
- double转换为int以及浮点型相加损失精度问题
最近在做支付相关模块的业务,数据库字段却使用的是double类型,其实也行,只要计算不在sql语句中进行,也是没有问题的. 预先的类属性设置的是Double类型,自己算的时候发现小数相加会出现损失精度 ...
- Spring学习之路-注解
Spring的注解总结. 地址:https://docs.spring.io/spring/docs/4.3.12.RELEASE/spring-framework-reference/htmlsin ...
- date时间格式化
Date方法的扩展 /** * 时间格式化 * @param fmt * @returns {*} * @constructor */ // (new Date()).Format("yyy ...
- c# winform播放声音的两种方式
axWindowsMediaPlayer1.settings.setMode("", true); axWindowsMediaPlayer1.URL = "skcg.m ...
- sql语句将查询的结果拼接成字符串
表样: sqlserver: --方法1 DECLARE @STR VARCHAR(8000) SELECT @STR=ISNULL(@STR+',','')+userID FROM (SELECT ...
- (六)彻底理解synchronized
1.sychronized简介 在学习知识之前,我们先来看一个现象 public class SynchronizedDemo implements Runnable { private static ...
- cloudera Manager使用总结
最近在用cloudera Manager来 在几个虚拟机上进行hadoop 的安装,总结一下遇到的问题. 1 似乎没有 start-balancer.sh 命令 似乎安装包中没有这个命令 怎么 ...