Android-目录结构及反编译
一 安装的app的目录
系统app: system/app
用户app: data/app
二 常用文件夹功能
Android 文件夹:引用的framework类库
src: 源代码文件
gen: 自动生成的文件,删除还是会自动生成,对应res里面的文件夹,res资源的映射
assets: 使用的资源文件,例如mp3文件,通过具体的路径访问,是程序下的一个普通的文件夹
速度快点,建议使用assert,
res :应用程序资源包
图片资源
dpi分辨率 一英寸范围有多少个点
应用程序图标使用下面的文件夹
drawable-hdpi 240dpi,比较高的分辨率
drawable-ldpi 120dpi, 较小的分辨率
drawable-mdpi 160dpi 中等的分辨率
通用的,不区分的使用下面的文件夹
drawable
layout:界面布局文件
value:值,例如字符串,将文本写到字符串变量里,用变量代替字符串,用@引用的标识符,如@string,则value里面
就有对应string文件,文件定义了string的值
AndroidManifest.xml:全局配置文件,类库,组件,发布信息等
default.properties:java的配置文件,例如要求的运行环境
proguard.efg:配置文件,在2.2以上,配置应用程序的混淆信息,防止反编译apk
doc:javadoc文件
menu:菜单
raw:原生程序,图片,视频,在R.java中生成相应的ID,可以通过R.java文件访问
注意 raw文件夹不参与编译
anim:动画
xml:额外的xml文件
二 apk结构
META-INF签名配置信息
res 资源文件
AndroidManifest.xml全局配置文件
classes.dex虚拟机可执行文件
resources.arsc资源索引文件,为了应用程序更快的查找到资源
三 反编译dex
方法一
dx工具:将class文件变为dex文件,即虚拟机可执行的二进制文件
aapt:将整个项目打包为apk
dexdump:反编译apk文件,将dexdump目录加到系统环境变量
上面三个文件放在同一目录,并且该目录加入环境变量
得到的文件所用的语言为smail,但是这种反编译不易读
反编译需要编译res和xml
主要采用下面的方法二
反编译用到的命令
前提需要将两个工具加入path变量,或者在工具的相应目录下执行工具
apktool阶段:apktool d ***.apk ***(文件夹的名称,自动生成)
dex2jar阶段:dex2jar classes.dex ***.jar(不需要建立,会自动生成)
过程:dex->jar包->calss
工具需要dex2jar和XJad
1 apktool阶段,使用命令即可
2 将apk包解压,使用dex2jar将classes.dex->***.jar
3 使用XJad将***.jar反编译为java源文件
4 将反编译的java源文件夹改名为src,放入apktool阶段生成的文件夹即可
反编译的常用思想及方法
因为apk是一个压缩包,所以反编译就是反编译dalvik二进制文件和压缩的xml文件
常用的方法就是apktool+dex2jar+xjad