逆向 Framework.jar
Ref:http://www.addictivetips.com/mobile/what-is-odex-and-deodex-in-android-complete-guide/
Ref:http://stackoverflow.com/questions/9593527/what-are-odex-files-in-android
这篇文章主要是之前在适配安卓手机的时候整理的,大家能够參考一下:\
odexed
某些.apk档内有一些预先処理过的odex档。这些odex档是经优化後应用的一部份,这做的好処是为了优化启动过程(BootProcess)及降低占用系统的空间。因其已预先装载程序的一部份内容,而达到优化启动过程的目的。还有一方面,它添加了安全性,由于odex档在运行前被抽出并放入了系统其他位置。
deodexed
而deodexing则是将这些odexed化过的apk档又一次打包,使其成为class.dex档,因此,全部.apk相关的档案又归於系统的一処,避免了程序的某些部份由于分散而导致的冲突。对一个经deodexed流程処理的apk其内的.dex档而言,其具有被Dalvik
Virtual Machine使用的cache档,同一时候它是储存於.apk档内;相对於.dex档来说,一个.odex档,是一个优化(optimized)版本号的.dex档,并存於.apk之外,Android对全部的系统应用预设採用odex技术。当一个Android系统启动的时候,供Dalvik系统运用的Dalvik
cache靠这样odex档所建立,使得操作系统能预先了解到哪些应用将要被装载至系统,因此提高了应用的启动过程。
优缺点:
deodexing的长处是改动的可能性较高。这通常在custom ROMs还有themes广泛的被使用,大部份开发人员建一个custom
ROM的时候,会先选择deodex ROM package,由于这样不仅仅同意它可更改各种apk,也为post-install
theming 留下了空间。
还有一方面,odex档是为了高速建立dalvik
cache而产生,移除它们代表的是添加启动时间。可是这也仅仅是对第一次启动而言,由于在第一次启动经过deodexing之後,cache也会建立。仅仅有在dalvik
cache不存在的情况下,应用的启动才会花较长的时间。
怎样合并odex和apk:
ref:http://blog.csdn.net/linuxer_hy/article/details/8223320
ref:http://blog.csdn.net/xiaoyaovsxin/article/details/8486242
怎样逆向:
ref:http://blog.sina.com.cn/s/blog_7c6cbaf601019604.html
首先,我们须要将 /system/framework/framework.jar 取出的,到 eclipse 的 ddms, 至 File Explorer 可将该档案 pull 出
下下面指令開始用 baksmali 逆向,有些机型会有 framework2.odex,这也是须要逆向的 odex 档:
$java -jarbaksmali-1.4.1.jar -c :core-junit.odex -x framework2.odex
使用baksmali-2.0.2.jar 逆向的过程中,出现例如以下错误讯息:
Error occured whileloading boot class path files. Aborting.
org.jf.util.ExceptionWithContext:Cannot locate boot class path file /system/framework/core.odex
at org.jf.dexlib2.analysis.ClassPath.loadClassPathEntry(ClassPath.java:217)
at org.jf.dexlib2.analysis.ClassPath.fromClassPath(ClassPath.java:161)
at org.jf.baksmali.baksmali.disassembleDexFile(baksmali.java:59)
at org.jf.baksmali.main.main(main.java:274)
解决的方法:到framework.odex档的folder外,用下面命令
$java -jar baksmali-2.0.2.jar -x -a 18 -d ./system/framework/./system/framework/framework.odex
然後会得到一堆.smali档,於是再下指令将那些.smali打成class.dex档
$java -jar smali-2.0.2.jar ./out-framework -o ./class.dex
再使用dex2jar
$ ./d2j-dex2jar.shclass.dex
最後再使用 jd-gui
$./jd-gui class-dex2jar.jar
系统框架源代码的zip包就产生了,然後就能够開始看这个系统的一些实现细节了。
逆向 Framework.jar的更多相关文章
- Spring Framework jar官方直接下载路径
SPRING官方网站改版后,建议都是通过 Maven和Gradle下载,对不使用Maven和Gradle开发项目的,下载就非常麻烦,下给出Spring Framework jar官方直接下载路径: h ...
- 修改替换/system/framework/framework.jar后重启手机为何没有效果?
自Android 5.0开始android默认使用art(Android4.4开始有实验性质的art),取代原来的Dalvik, art会加载boot.art和boot.oat两个文件(静态编译优化, ...
- Android Studio引用自定义的framework.jar包
1.在app/libs/目录下添加framework.jar包. 2.打开build->Edit Libraries and Dependencies,把libs/framework.jar放到 ...
- 解决 android push framework.jar 不生效的问题
. . . . . 在 Android 采用 ART 虚拟机后,为了提高运行时效率,在编译期间会将 jar 包中的 dex 文件编译为 odex.vdex 等文件.而这些文件并不存放在 framewo ...
- Robot Framework(十七) 扩展RobotFramework框架——扩展Robot Framework Jar
4.4扩展Robot Framework Jar 使用标准JDK安装中包含的jar命令,可以非常简单地向Robot Framework jar添加其他测试库或支持代码.Python代码必须放在jar里 ...
- Description Resource Path Location Type Missing artifact com.********:framework:jar:1.0.2 pom.xml /项目名 line **** Maven Dependency Problem
问题具体描述如下图所示: 对于该问题本人是这么解决的. 在window下[Preferences]目录找到[Maven]下的[usersetting] 查看local repository 里面的路径 ...
- [教程] 【【【【odex教程之jar】】】】/system/framework里面的jar做odex g13
dexopt-wrapper core.jar core.odex dexopt-wrapper ext.jar ext.odex dexopt-wrapper framework.jar frame ...
- spring 官方下载地址(Spring Framework 3.2.x&Spring Framework 4.0.x)
spring官方网站改版后,建议都是通过 Maven和Gradle下载,对不使用Maven和Gradle开发项目的,下载就非常麻烦,下给出Spring Framework jar官方直接下载路径: h ...
- android源码framework下添加新资源的方法
编译带有资源的jar包,需要更改frameworks层,方法如下: 一.增加png类型的图片资源 1.将appupdate模块所有用到的png格式图片拷贝到framework/base/core/re ...
随机推荐
- 浅谈数据库技术,磁盘冗余阵列,IP分配,ECC内存,ADO,DAO,JDBC
整理-----数据库技术,磁盘冗余阵列,IP分配, ECC内存,ADO, DAO,JDBC 1.MySQL MySQL是最受欢迎的开源SQL数据库管理系统,它由 MySQL AB开发.发布和支持.My ...
- UVA11552------FEWEST FLOPS------区间型的DP
题目地址:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...
- TEXT文本编辑框4 点击按钮读取文本框内容到内表
*&---------------------------------------------------------------------* *& Report ZTEST_CWB ...
- Thymeleaf模板的使用
使用模板的要点: 页面主体结构固定,具体参数可变,尽可能让参数动态化,才能提高模板的复用性 ================================================== ...
- 待机状态下,服务类型 WCDMA Service type in Idle mode
Services aredistinguished into categories defined in [7]; also the categorisation of cellsaccording ...
- cocos2d-x lua 内存回收
使用cocos2d-x lua架构,游戏中存在两种内存回收方式. 1.cocos2d-x 本身内存回收 PS:假设在lua在创建一个类,继承cocos2d-x的一个类A,则该A也遵循cocos2d-x ...
- VC/MFC 当鼠标移到控件上时显示提示信息
VC/MFC 当鼠标移到控件上时显示提示信息 ToolTip是Win32中一个通用控件,MFC中为其生成了一个类CToolTipCtrl,总的说来其使用方法是较简单的,下面讲一下它的一般用法和高级用法 ...
- oracle 之数据字典屣履造门。
oracle 之数据字典屣履造门.(更新中) 今天是2013-06-20,哎,写这篇笔记的时候,我发现我是一个非常懒惰的人,这篇文章本该昨天就完成的,想起了钱鹤滩的<明日歌> ...
- Codeforces Round #249 (Div. 2) A B
C好像就是个模拟.D 是个编码复杂度大的,可是好像也就是枚举三角形,我这会儿准备区域赛,尽量找点思维难度大的,所以昨晚A B 还是去做区域赛题吧..... B 也有点意思 贪心 题意:交换相邻两个位的 ...
- 用"池"来提升对象的复用
对象池化是目前常用的一种系统优化的技术.通俗的说也就是一个对象不用多次的被实例化,来消耗性能,可以把这些常用的类放入一个池中,当需要的时候在去池里去拿去,不用的时候 在放入池中.可以叫做对象池.他可以 ...