APK文件剖析
- 格式:docx
- 大小:38.62 KB
- 文档页数:4
apk漏洞分析近日,在对某应用软件检测时,发现该应用软件一处通用的本地拒绝服务漏洞,这个漏洞可能会导致造成大面积的app拒绝服务。
这是一个相当严重的问题,如果被入侵了,那么这个应用将会无法正常使用,导致应用本地拒绝服务。
接下来给大家分析分析该应用代码中出现的漏洞。
漏洞应用代码片段:Intent i = getIntent();if(i.getAction().equals("serializable_action")){i.getSerializableExtra("serializable_key");//未做异常判断}攻击应用代码片段:Intent i = new Intent();i.setAction("serializable_action");i.setClassName("com.exp.serializable", "com.exp.serializable.MainActivity");i.putExtra("seriadddddlizable_dkey",XXX);//此处是传入畸形数据startActivity(i);比如XXX处传入BigInteger.valueOf(1)极有可能发生转型异常错误ng.ClassCastException。
当传入一个自定义的序列化对象Serializable或getParcelable对象时,接收Intent的目标组件在getSerializableExtra()、getParcelable()等会抛出类未定义的异常ng.NoClassDefFoundError。
这是因为,当你给漏洞应用传入一个应用本身并没有的序列化类对象,在应用上下文中肯定是找不到这个类的。
自定义的序列化类很简单:public class DataSchema implements Serializable {private static final long serialVersionUID = -3601187837704976264L;public DataSchema() {super();}}对应的攻击代码中XXX处传入new DataSchema()我们发现传入的key不管是否与漏洞应用相同,都会抛出类未定义的异常。
解析:apk文件加密前后安全检测的结果近期小编看到有些朋友用某软件在爱内测(,最后给出的分数有些出乎意料。
大家都在猜测:是我的软件安全做的有那么差吗?还是爱内测测试的不准嘞?既然大家有这个疑问,那么今天小编我要来做一个尝试,我先把在网上随便下载一个大家比较常见的单机游戏斗地主(至于哪个版本的,小编也不好公布出来),用这个源文件做一个检测;然后再放到加密平台中做一个比较简单的加密,把这个加密以后的apk文件在做一个检测,看看最后的分数与分析有什么不同吧。
未加密检测首先,我们把这款apk源文件上传到爱内测平台(,并做一个分数记录:我们在还没登陆爱内测账号时,现在可以看到一些比较简单的数据,从中我们知道这款软件存在16个问题,主要只是代码混淆、so文件保护、ContentProvider安全、测试数据移除安全这四项做了安全加密保护。
Apk文件加密接下来,我们在加密平台中做一个比较简单的防二次打包的加密。
加密以后,把这个已加密的apk文件下载到电脑本地做备用。
Apk加密加密文件检测我把这个已经加密过的文件重新上传到爱内测(有上面数据中,我们可以很明显的看出,做了加密以后的文件检测出的分数是高于未加密的。
总结无论上面检测的分数高低,小编都发现这款游戏都是存在漏洞的,虽然做了一个简单的加密,但是都有检测出一些漏洞,这个还是要给程序员们敲一个警钟。
现在这个移动互联网,产生多种app应用软件也是一个必然产品。
在前段时间《阿里巴巴移动安全分析报告》中,指出有97%的app是存在漏洞的。
程序员们对应用做加密的意思也是越来越高了,但是却忽略了,应该要“对症下药”。
如果在app开发完成以后,做一个相对完整的检测,知道哪些是遗漏的,然后针对性的做加密,这样无论是对程序员自己还是应用本身安全问题,相对来说都是一个比较好的过程。
小编温馨提醒一下程序员们:已经开发好的app需要先做安全检测,修复好以后再上线;如果已经上线了,可以做定期多安全检测,可以对文件出现的漏洞及时做修复。
APK⽂件结构APK (Android Package) ⽂件,是⼀个后缀名为.apk的压缩⽂件,APK⽂件中包含了⼀个Android应⽤程序的所有内容,是Android平台⽤于安装应⽤程序的⽂件。
assets 存放需要打包到 APK 中的静态⽂件lib 存放应⽤程序所依赖的 native 库res 存放应⽤程序的资源⽂件META-INF 存放应⽤程序的签名和证书AndroidManifest.xml 应⽤程序配置⽂件classes.dex dex 可执⾏⽂件resources.arse 资源索引表,记录资源⽂件和资源 ID 之间的映射关系res是resource的缩写,存放资源⽂件,存在这个⽂件夹下的所有⽂件都会映射到Android⼯程的.R⽂件中,⽣成对应的ID,访问的时候直接使⽤资源ID,即R.id.filename。
res ⽂件夹下可以包含多个⽂件夹,其中aim存放动画⽂件drawable⽬录存放图像资源layout⽬录存放布局⽂件values⽬录存放⼀些特征值,colors.xml存放color颜⾊值,dimens.xml定义尺⼨值,string.xml定义字符串的值,styles.xml定义样式对象xml⽂件夹存放任意 xml ⽂件,在运⾏时可以通过 Resources.getXML() 读取raw是可以直接赋值到设备中的任意⽂件,⽆需编译lib存放应⽤程序依赖的native库⽂件,⼀般是⽤C/C++编写,这⾥的lib库可能包含4中不同类型,根据CPU型号的不同,⼤体可以分为ARM,ARM-v7a,MIPS,X86,分别对应着ARM架构,ARM-V7架构,MIPS架构和X86架构。
不同的CPU架构对应着不同的⽬录,每个⽬录中可以放很多对应版本的so库,且这个⽬录的结构固定,⽤户只能按照这个⽬录存放⾃⼰的so库。
⽬前市场上使⽤的移动终端⼤多是基于ARM或者ARM-V7a架构的,X86和MIPS架构的移动智能终端⽐较少,所以有些应⽤程序lib⽬录下只包含armeabi⽬录或者armeabi-v7a⽬录。
安卓系统中APK和各种英文文件名详解一个完整的ROM根目录会有以下几个文件夹及文件:dataMETA-INsystemboot.img系统目录说明1. 应用程序安装目录1) 系统应用程序所在目录/system/app/*.apk2)用户安装应用程序所在目录/data/app/*.apk3) 注意:a)在模拟器中,每重启一次,/system/app/下的应用都会被还原,有时/data/app下也会被清除b)若在/system/app和/data/app下有重名的应用,不一定会启动哪一个,尤其是在adb install杀死正在运行的程序时,有时旧的就会被启动2.用户数据所在目录/data/data/应用包名/shared_prefs 配置文件/data/data/应用包名/databases/* 库文件所在目录3. SD卡对应目录/sdcard/而我们需要处理的只是两个文件夹里面的内容:data/app –该文本夹里的文件可以全删,也可以自由添加自已所需安装的应用软件,刷机安装后可以自由删除。
system/app –在这个文件夹下的程序为系统默认的组件,可以看到都是以APK格式结尾的文件,但有些自制的ROM里面还有和APK文件名对应的odex文件。
我们主要是针对该文件夹里的文件进行精简,如果有odex文件的,删除APK文件名时同时也删除与其对应的odex 文件。
虽然一般定制时只是对以上两个文件夹里的文件做相应的增减,但我们还是一起来了解system相应目录相应文件的用途吧。
(rom版本不同里面的APK也会不一样)\\system\\app\\system\\app\\AlarmClock.apk 闹钟\\system\\app\\Browser.apk 浏览器\\system\\app\\Bugreport.apk Bug报告\\system\\app\\Calculator.apk 计算器\\system\\app\\Calendar.apk 日历\\system\\app\\CalendarProvider.apk 日历提供\\system\\app\\Camera.apk 照相机\\system\\app\\com.amazon.mp3.apk 亚马逊音乐\\system\\app\\Contacts.apk 联系人\\system\\app\\DownloadProvider.apk 下载提供\\system\\app\\DrmProvider.apk DRM数字版权提供\\system\\app\\Email.apk 电子邮件客户端\\system\\app\\FieldTest.apk 测试程序\\system\\app\\GDataFeedsProvider.apk GoogleData提供\\system\\app\\Gmail.apk Gmail电子邮件\\system\\app\\GmailProvider.apk Gmail提供\\system\\app\\GoogleApps.apk 谷歌程序包\\system\\app\\GoogleSearch.apk 搜索工具\\system\\app\\gtalkservice.apk GTalk服务\\system\\app\\HTMLViewer.apk HTML查看器\\system\\app\\HtcTwitter.apk 集成Twitter客户端PEEP\\system\\app\\IM.apk 即使通讯组件包含MSN、yahoo通\\system\\app\\ImCredentialProvider.apk\\system\\app\\ImProvider.apk\\system\\app\\Launcher.apk 启动加载器\\system\\app\\HtcNaviPanel.apk 导航软件\\system\\app\\Maps.apk 电子地图\\system\\app\\MediaProvider.apk 多媒体播放提供\\system\\app\\Mms.apk 短信、彩信\\system\\app\\Music.apk 音乐播放器\\system\\app\\MyFaves.apk T-Mobile MyFaves程序\\system\\app\\NewsReader.apk 新闻阅读器\\system\\app\\PackageInstaller.apk apk安装程序\\system\\app\\Phone.apk 电话拨号器\\system\\app\\Settings.apk 系统设置\\system\\app\\SettingsProvider.apk 设置提供\\system\\app\\SetupWizard.apk 设置向导\\system\\app\\SoundRecorder.apk 录音工具\\system\\app\\Street.apk 街景地图\\system\\app\\Sync.apk 同步程序\\system\\app\\Talk.apk 语音程序\\system\\app\\T elephonyProvider.apk 电话提供\\system\\app\\Updater.apk 更新程序\\system\\app\\VpnServices.apk VPN服务\\system\\app\\Vending.apk 制造商信息\\system\\app\\VoiceDialer.apk 语音拨号器\\system\\app\\VoiceSearch.apk 语音搜索\\system\\app\\YouTube.apk Youtube视频\\system\\bin这个目录下的文件都是系统的本地程序,从bin文件夹名称可以看出是binary二进制的程序,里面主要是Linux系统自带的组件,Android手机网就主要文件做下简单的分析介绍:\\system\\bin\\akmd\\system\\bin\\am\\system\\bin\\app_process 系统进程\\system\\bin\\dalvikvm Dalvik虚拟机宿主\\system\\bin\\dbus-daemon 系统BUS总线监控\\system\\bin\\debuggerd 调试器\\system\\bin\\debug_tool 调试工具\\system\\bin\\dexopt DEX选项\\system\\bin\\dhcpcd DHCP服务器\\system\\bin\\dumpstate 状态抓取器\\system\\bin\\dumpsys 系统抓取器\\system\\bin\\dvz\\system\\bin\\fillup\\system\\bin\\flash_image 闪存映像\\system\\bin\\hciattach\\system\\bin\\hcid HCID内核\\system\\bin\\hostapd\\system\\bin\\hostapd_cli\\system\\bin\\htclogkernel\\system\\bin\\input\\system\\bin\\installd\\system\\bin\\itr\\system\\bin\\linker\\system\\bin\\logcat Logcat日志打印\\system\\bin\\logwrapper\\system\\bin\\mediaserver\\system\\bin\\monkey\\system\\bin\\mountd 存储挂载器\\system\\bin\\netcfg 网络设置\\system\\bin\\ping Ping程序\\system\\bin\\playmp3 MP3播放器\\system\\bin\\pm 包管理器\\system\\bin\\qemud QEMU虚拟机\\system\\bin\\radiooptions 无线选项\\system\\bin\\rild RIL组件\\system\\bin\\sdptool\\system\\bin\\sdutil\\system\\bin\\service\\system\\bin\\servicemanager 服务管理器\\system\\bin\\sh\\system\\bin\\ssltest SSL测试\\system\\bin\\surfaceflinger 触摸感应驱动\\system\\bin\\svc 服务\\system\\bin\\system_server\\system\\bin\\telnetd Telnet组件\\system\\bin\\toolbox\\system\\bin\\wlan_loader\\system\\bin\\wpa_cli\\system\\bin\\wpa_supplicant\\system\\etc从文件夹名称来看保存的都是系统的配置文件,比如APN接入点设置等核心配置。
精简程序刷机等资料system/app目录里的东西都是*.apk文件,但有些自制的ROM里面还有和APK文件名对应的odex文件。
我们主要是针对该文件夹里的文件进行精简,如果有odex文件的,删除APK文件名时同时也删除与其对应的odex文件。
data/app–该文本夹里的文件可以全删,也可以自由添加自已所需安装的应用软件,刷机安装后可以自由删除。
我手机版本system/app目录下apk文件解释(蓝字代表我手机版本里的,红色代表在精简过程中可删的,绿色代表我手机里有,但不确定是什么功能)1 AccountSyncManager.apk账号管理程序(设置里面的账户与同步,删除后进不去)2 AdobeReader.apkPDF阅读器(可删)3 Android_Finance_5_0_for_API_1_6_update.apkCSL旗下的Invest Pro财经资讯程序(可删)4 AndroidMusicHolic.apkCSL的One2Free的流动娱乐服务Musicholic,音乐库(可删)5 ApplicationsProvider.apk应用程序支持服务(删除后不能连接电脑同步电话号码)6 AppSharing.apk应用程序分享(可删,但进程序列表,按菜单键无分享选项)7 BlackBoard.apk内置的黑板皮肤(自带皮肤,可删)8 Bluetooth.apk蓝牙共享(删了就没有蓝牙了)9 BrcmBluetoothServices.apk蓝牙服务(同上)(8和9的蓝牙服务不可删)10 Browser.apk谷歌浏览器(可删)11 Calculator.apk计算器(可删)12 Calendar.apk日历(会自启动,可删)13 CalendarProvider.apk日历存储服务(不用会议、约会之类的可删)14 CertInstaller.apk证书安装程序15 CheckinProvider.apk签入服务16 Clicker.apk键盘输入校正工具(可删)24 ContactsProvider.apk存储联系人信息25 CSPeopleSyncService.apkHTC提供的同步服务(不用GOOGLE服务的可删)26 CustomizationSettingsProvider.apk自定义设置服务27 CustomizationSetup.apk自定义安装程序28 DCSImpl.apk集散控制系统服务29 DCSStock.apk股票后台传输程序(可删)30 DCSUtility.apk集散控制系统公共程序组件31 DebugTool.apk调试工具33 DFPI.apk这个不太清楚,但经过试验,删除了没影响。
智能检测apk的原理
智能检测APK的原理主要包括以下几个方面:
1. 静态分析:静态分析是对APK文件进行解析,提取其中的关键信息,如文件结构、权限、代码逻辑等。
通过分析APK的文件名、权限申请、API调用、Manifest 文件等,可以判断APK的行为是否可疑或恶意。
静态分析可以快速检测APK的恶意行为,但无法检测动态生成的恶意行为。
2. 动态分析:动态分析是在实际环境中执行APK文件,并监测其行为。
通过模拟器、虚拟机或真实设备等执行APK文件,并观察其运行过程中的网络通信、系统调用、文件操作等行为,从而确定APK的恶意性质。
动态分析可以检测动态生成的恶意行为,但相对静态分析来说更加耗时和资源消耗。
3. 机器学习:使用机器学习算法对APK文件进行分类和标记。
通过训练算法使用已知恶意和正常APK样本,建立恶意APK文件的模型,并根据模型对新的APK文件进行预测。
机器学习可以辅助静态和动态分析,提高检测准确率。
4. 行为分析:对APK文件的行为进行分析,比如检测是否存在隐私泄露、恶意代码执行等。
行为分析可以从APK的行为特征中判断是否有恶意行为。
综上所述,智能检测APK的原理是通过静态和动态分析APK文件,使用机器学习算法和行为分析等方法,从而确定APK文件是否具有恶意行为。
第一课apk安装包文件结构首先,打开APK编辑器,未注册版的会出现提示,而且只能汉化两页资源,但是这并不影响学习,这些我们先不管打开APK编辑后出现的是手机中的文件和文件夹列表,找到本节课的课程文件x-plore,单击打开,其实APK就是一个变相的压缩文件这时我们看到META-INF,resources.arsc、classes.dex等文件和文件夹,让我们出个来了解如图:META-INF是证书文件,这个我们不用管,因为APK编辑支持汉化保存后自动签名,当然也可以单独签名文件res文件夹里面是程序布局和资源文件(drawable是程序资源文件,layout,xml是程序布局文件)软件部分需要汉化的单词就在这些文件夹里面AndroidManifest.xml文件里包含了软件名称、版本、权限、库文件等信息,软件极少需要汉化的单词这里也会出现classes.dex是Java源码编译后的代码文件,仅次于.arsc的主要语言包resources.arsc文件是编译后的资源文件,主要语言包如图:总结:我们汉化的时候首先查找resources.arsc,其次res文件夹的.xml,最后classes.dex这样下来基本就能完成,也会很少出现如txt,html等需要汉化的文件,后面会讲到现在只需要了解这些文件,其他的你们慢慢去理解下面简单说说APK编辑器的操作:APK编辑器的汉化方式依然是列表汉化汉化界面:长按一个单词或语句弹出复制/谷歌翻译菜单,复制就是复制原语句字符谷歌翻译就是在线翻译原语句咯,翻译后的意思会出现在输入框中,可以进行编辑如图:谷歌翻译:非常强大的功能,可以翻译当前页,所有页语句,后面会讲到如图:多语言选择:点击屏右下角[strings]-string,软件自动帮你把英文字符分类出来了如果你想选择其他语言,那么继续点“default”弹出“资源分支”选框,这个时候选择你就可以选择其他语言了不过有个情况例外,就是极少的情况下会把某个英文也屏蔽了,建议汉化后不屏蔽其他语言的情况下再浏览一般看看还有没有英文需要汉化如图:搜索:下面靠左的放大镜图标,汉化/编辑词典可以搜索字符串,实现快速查找替换:替换jar/zip/apk/ear/war文件中的单个文件(长按文件名),比如你P好的图片需要替换就在这里选择解压:解压缩APK文件到某个文件夹(长按文件名)如图:保存:保存汉化资源并返回目录,不保存的情况下按返回键也会提示你保存并加入词典词典:重点!相当于数据库,以前汉化过并保存了的语句都在这里,汉化时短按菜单选择“使用词典翻译”-选择词典,就可以进行自动翻译了,初次使用会提示新建词典,这个要保存好,是汉化者的命根子如图:优化并签名:zipalign优化,签名文件(长按文件名)其他如删除,重命名,帮助等常规功能,这里不再阐述,需要注意的是APK为注册用户只能汉化两页资源,所有需要购买或者加入汉化组后作品超过5个获得完成汉化后保存,自动返回APK目录文件夹,到此汉化结束了,无需签名再点击上级菜单,我们看到:后缀.apk就是我们刚刚汉化的软件,下面有一个后缀为.apk.bak的文件这个.apk.bak是上一次汉化文件的自动备份,汉化错误后可以通过这个文件恢复上一次的汉化,去掉.bak就可以了如图:备份也是非常重要的,建议新手汉化一些就备份安装一次,时间长了可以看情况选择最后长按.apk文件安装看看吧本节课就讲到这里,所谓工欲善其事,必先利其器,首先熟悉了工具才能去使用它,大家没事可以去试试APK编辑的这些功能!本教程所需软件可以登录八神只能天下下载。
【Android】【apk反编译基础】大家都应该知道APK文件其实就是一个MIME为ZIP的压缩包,我们修改ZIP后缀名方式可以看到内部的文件结构,例如修改后缀后用RAR打开鳄鱼小顽皮APK能看到的是(Google Play下载的完整版版本):Where's My Water.zip\asset\ <资源目录1:asset和res都是资源目录但有所区别,见下面说明>lib\ <so库存放位置,一般由NDK编译得到,常见于使用游戏引擎或JNI native调用的工程中>|---armeabi\ |---<so库文件分为不同的CPU架构>|---armeabi-v7a\META-INF\ <存放工程一些属性文件,例如Manifest.MF>res\ <资源目录2:asset和res都是资源目录但有所区别,见下面说明>|---drawable\ |---<图片和对应的xml资源>|---layout\ |---<定义布局的xml资源>|---...AndroidManifest.xml <Android工程的基础配置属性文件>classes.dex <Java代码编译得到的Dalvik VM能直接执行的文件,下面有介绍>resources.arsc <对res目录下的资源的一个索引文件,保存了原工程中strings.xml等文件内容>asset和res资源目录的不同在于:1. res目录下的资源文件在编译时会自动生成索引文件(R.java),在Java代码中用R.xxx.yyy来引用;而asset目录下的资源文件不需要生成索引,在Java代码中需要用AssetManager来访问;2. 一般来说,除了音频和视频资源(需要放在raw或asset下),使用Java开发的Android 工程使用到的资源文件都会放在res下;使用C++游戏引擎(或使用Lua binding等)的资源文件均需要放在asset下。
android应用分析之apk文件结构
实际上,一个APK文件就是一个.zip格式的压缩包,我们可以用解压缩工具打开任何一个APK文件,由于代码混淆和加密,通过普通解压缩工具打开里面的文件或目录会看到各种乱码。
一个典型的apk文件包含以下内容:
•AndroidManifest.xml
Android应用的配置清单文件,它向Android系统介绍了这个应用的很多配置信息,系统可以根据这个文件在相当程度上了解这个应用的一些信息。
该文件是每个应用都必须定义和包含的,它描述了应用的名字、版本、权限、引用的库文件等等信息,如要把apk上传到Google Market上,也要对这个xml做一些配置。
在apk中的AndroidManifest.xml是经过压缩的,可以通过AXMLPrinter2工具(针对该文件)或apktool工具进行反编译(反编译整个apk)。
•META-INF目录
META-INF目录下存放的是签名信息,用来保证apk包的完整性和系统的安全。
没有签名的应用是不被系统认可的,也无法安装到手机中。
Android SDK在对APK进行打包的时候,会把APK中全部文件的完整信息保存到这里,这样应用在安装的时候会进行完整性校验,确保APK的文件不会被篡改,大大提升了应用和系统的安全性与完整性。
META-INF目录下有CERT.RSA、CERT.SF和MANIFEST.MF这几个文件,其中的CERT.RSA文件记录了开发者的私钥对APK 签名后的信息,MANIFEST.MF文件则保存了整个APK中所有文件的SHA-1进行base64编码后的值,CERT.SF则与MANIFEST.MF差不多,包括了后者所有的信息,然后又加入了MANIFEST.MF文件的SHA-1并base64编码的值。
•res目录
存放各种资源文件的目录。
这个目录中的所有文件,最终会被映射到Android 工程中的R文件中,生成对应的int型的ID,在程序中访问这些资源文件的时候,直接使用资源的ID就能进行调用了。
res目录下还包含着多个子文件夹:anmi中存放着动画文件;drawable则存放着一些图片资源;layout中存放的是布局文件;menu则是自定义菜单的项;raw 目录中的文件则是可以直接复制到设备中的文件,不会被编译;values中存放着一些特殊的值——colors.xml记录的是你自定义的颜色,dimens.xml记录着你自定义的尺寸,strings.xml则是你自定义的字符串常量值,styles.xml定义了一些样式。
•lib目录
这个目录中存放着应用依赖的native库文件,这些以.so结尾的文件是用C或者C++语言编写的,一个简单的Android应用可能并不需要这些库,但一个功能全面而又追求性能的应用是不可能无视这个目录的,譬如图片处理、网络处理、音视频处理等一些对性能要求很高的功能,单纯依靠Java会十分吃力,性能更加强大而且更加接近底层的C/C++就是更合适的选择了。
根据手机CPU的架构,lib库大体上可以分为4种:ARM、ARM-V7、MIPS 和X86,分别对应着4种CPU架构,在lib目录里则分别是armeabi、armeabi-v7a、mips和x86一共4个目录。
每个目录中的.so库名字都是一样的,实际上功能也是相同的,它们只是为了适配不同架构的CPU而存在。
实际上,市面上的手机几乎全都是ARM架构的,所以大多数情况下我们只需要有armeabi和armeabi-v7a两种类型的库就足够了。
•assets目录
跟res目录有点相似,但实际上二者还是有区别的。
res目录中的文件会映射到R文件中,每个资源文件都有自己的ID,而assets中的文件则直接通过访问文件的地址来使用AssetManager类进行访问,而且assets目录你可以添加任意深度的子目录,这一点会比较方便管理和归类文件。
相比较之下,res目录目前不能支持更深级的子目录。
•classes.dex文件
classes.dex是java源码编译后生成的java字节码文件(首先是java文件通过jdk编译成字节码文件然后经过dex编译成classes.dex)。
但由于Android 使用的dalvik虚拟机与标准的java虚拟机是不兼容的,dex文件与class文件相比,不论是文件结构还是opcode都不一样。
目前常见的java反编译工具都不能处理dex文件。
Android模拟器中提供了一个dex文件的反编译工具,dexdump。
用法为首先启动Android模拟器,把要查看的dex文件用adb push 上传的模拟器中,然后通过adb shell登录,找到要查看的dex文件,执行dexdump xxx.dex。
对比普通java程序和安卓程序差异:
普通java程序 java虚拟机 java字节码(class) 基于栈
安卓程序 Davlik虚拟机 Dalvik字节码(dex) 基于寄存器
•resources.arsc
编译后的二进制资源文件的索引,记录了资源文件(即res目录中的文件)和资源文件ID的映射关系,这样程序运行的时候就可以根据资源的ID获取到相应的资源了。