逆向 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 ...
随机推荐
- KMP原理、分析及C语言实现
(是在matrix67博客基础上整理而来,整理着:华科小涛@http://www.cnblogs.com/hust-ghtao/) 有些算法可以让人发疯,KMP算法就是一个.在网上找了很多资料讲的都让 ...
- uva 816 BFS求最短路的经典问题……
一开始情况没有考虑周全,直接WA掉了, 然后用fgets()出现了WA,给改成scanf就AC了 题目不是很难,用心就好…… #include <iostream> #include &l ...
- hadoop深入研究:(五)——Archives
转载请注明来源地址:http://blog.csdn.net/lastsweetop/article/details/9123155 简介 我们在hadoop深入研究:(一)——hdfs介绍里已讲过, ...
- Qt之启动外部程序(使用参数很全面,还使用了setProcessChannelMode)
简述 QProcess可以用来启动外部程序,并与它们交互. 要启动一个进程,通过调用start()来进行,参数包含程序的名称和命令行参数,参数作为一个QStringList的单个字符串. 另外,也可以 ...
- Redis Destop Manager不能访问虚拟机
虚拟机centOS中安装Redis,主机Redis Destop Manager不能访问虚拟机Redis server的解决方案 今天在学些redis的时候碰到个问题,发现主机Redis Destop ...
- 新发现QWindow
http://doc.qt.io/qt-5/qwindow.html#details 不知道该什么时候使用它?
- 与众不同 windows phone (20) - Device(设备)之位置服务(GPS 定位), FM 收音机, 麦克风, 震动器
原文:与众不同 windows phone (20) - Device(设备)之位置服务(GPS 定位), FM 收音机, 麦克风, 震动器 [索引页][源码下载] 与众不同 windows phon ...
- delphi cmd(4个例子都是通过管道取得)
//K8执行DOS并返回结果 function RunDosCommand(Command: string): string; var hReadPipe: THandle; hWritePipe: ...
- [Windows Phone学习笔记]UserControl的使用
UserControl的使用 开发过程中,多个UI控件需要协同工作,相互交互之后,才可完成一个完整的业务需求,此时可把这些控件封装成为一个整体,相互之间的交互逻辑封装其中,外部调用可无需关心内部逻辑, ...
- perl 访问网站一些useragent的设置
121.40.205.143 - - [22/Jun/2016:12:56:23 +0800] "GET /wechat/account.html HTTP/1.1" 200 34 ...