Android Framework源码反编译

部分设备crash在Framework代码,但又和开源代码对应不上,这时需要拉取设备里面的Framework并反编译源代码排查问题。

1、获取Framework文件:

adb pull /system/framework

获取Framework文件夹下面的内容,可能有framework.jar和framework.odex,如果framework.jar解压出来有dex则反编译dex即可,如果framework.jar里面没dex则需要先反编译framework.odex文件至dex文件;

2、反编译odex文件:

pull framework文件夹时最好全部获取出来,因为反编译时有依赖,就在获取的framework文件夹里面反编译不用担心依赖缺少的问题;

反编译odex文件的工具:smali和baksmali的jar文件

https://github.com/JesusFreke/smali

https://bitbucket.org/JesusFreke/smali/downloads/

(1)反编译odex文件获取smali文件:

java -jar baksmali-2.2.2.jar #查看输出用法
#反编译framework.odex
java -jar baksmali-2.2.2.jar deodex framework.odex 

执行成功后,会产生一个 out 目录,里面放的是中间文件,找到对应smali文件文件可以查看对应的源码,可以找到对应行号代码,这个非常有用!

(2)生成dex文件

#查看用法
java -jar smali-2.2.2.jar
#生成out.dex
java -jar smali-2.2.2.jar assemble out

(3)生成jar文件

dex2jar-2.0 out.dex
#使用JD-GUI查看out-dex2jar.jar即可

参考文档:

https://www.cnblogs.com/ungshow/p/3511330.html

http://blog.sina.com.cn/s/blog_4e1e357d0102yg5o.html

原文地址:https://www.cnblogs.com/albert1017/p/9135800.html

时间: 2024-08-05 03:48:03

Android Framework源码反编译的相关文章

解决AndroidKiller APK 反编译失败,无法继续下一步源码反编译!

报错背景 今天使用AndroidKiller V1.3.1,反编译一个APK,遇到如下报错: 当前 Apktool 使用版本:Android Killer Default APKTOOL 正在反编译 APK,请稍等... >I: 使用 ShakaApktool 2.0.0-20150914 >I: 正在加载资源列表... >I: 反编译 AndroidManifest.xml 与资源... >I: 正在从框架文件加载资源列表: C:\Users\lijie01\apktool\fr

0.查看Android framework源码

参考 http://kaedea.com/2016/02/09/android-about-source-code-how-to-read/ https://www.zhihu.com/question/19759722 ? 查看系统源码说明 1.可以在sdk中source查看大部分framework源码 ? 2.如果在sdk中的source找不到某系统类源码,则可以在官方源码网查看 https://android.googlesource.com/?format=HTML ? 其中framew

如何阅读android framework源码

但如果想深入的了解Android系统, 那么可以看下我的一些简单的总结. 知识 Java Java是AOSP的主要语言之一. 没得说, 必需熟练掌握. 熟练的Android App开发 Linux Android基于Linux的, 并且AOSP的推荐编译环境是Ubuntu 12.04. 所以熟练的使用并了解Linux这个系统是必不可少的. 如果你想了解偏底层的代码, 那么必需了解基本的Linux环境下的程序开发. 如果再深入到驱动层, 那么Kernel相关的知识也要具备. Make AOSP使用

browserify压缩合并源码反编译

最近在学习钉钉(一个协作应用)桌面应用的前端源码时候,发现其js源码是用browserify做模块开发.于是想还原其源码的原本的目录结构,学习它的目录分类以及业务划分. 前言 用过browserify构建工具的应该清楚,在压缩合并后的代码的最前面,有处理模块依赖关系的代码: function e(t, n, r) { function s(o, u) { if (!n[o]) { if (!t[o]) { var a = typeof require == "function" &am

shop++源码反编译----随笔

一.applicationContext-mvc.xml配置 1.读取配置文件 <context:property-placeholder location="classpath*:/shopxx.properties" ignore-resource-not-found="true" ignore-unresolvable="true" /> 2.springMVC和freemarker整合配置 <bean id="

[Android编译(二)] 从谷歌官网下载android 6.0源码、编译并刷入nexus 6p手机

1 前言 经过一周的奋战,终于从谷歌官网上下载最新的android 6.0.1_r62源码,编译成功,并成功的刷入nexus6p,接着root完毕,现写下这篇博客记录一下实践过程. 2 简介 自己下载android系统源码,修改定制,然后编译刷入安卓手机,想想还有点小激动呢.简单点说一句话--定制我们自己的MIUI,这就是android的魅力,这篇博客博主就来教大家实现自己的定制系统. 首先,要明白下面的基础知识: (1) 什么是aosp? aosp就是android open source p

【Android 系统开发】CyanogenMod 13.0 源码下载 编译 ROM 制作 ( 手机平台 : 小米4 | 编译平台 : Ubuntu 14.04 LTS 虚拟机)

作者 : 韩曙亮 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/51592930 手机的两种模式 : 在下面有详细的图片示例; -- Recovery 模式 : 音量键增加 + 电源键, 长按上述组合键, 看到 "MI" 的 LOGO 后即进入 Recovery 模式; -- Fastboot 模式 : 音量键减小 + 电源键, 长按上述组合键, 看到 "FASTBOOT" 后, 即 进入 FA

在Ubuntu上下载、编译和安装Android最新源码

看完了前面说的几本书之后,对Linux Kernel和Android有一定的认识了,是不是心里蠢蠢欲动,想小试牛刀自己编译一把Android源码了呢?一直习惯使用Windows系统,而Android源码是不支持在Windows上编译上,于是决定使用虚拟机安装Ubuntu,然后下载.编译和安装Android源码. 一. 环境准备. 1. 磁盘空间预留20G左右,内存3G,由于一边要跑主机,一边要跑虚拟机,内存要求还是比較高的,这样才会比較流畅. 2. 安装VMWare 7.1.4.我的操作系统是W

android源码的编译问题总结

由于目前的项目需要修改android的内核源码,所以我需要从android源码的编译开始学习. 下面看一下我的编译环境. 我使用的Ubuntu系统的版本是14.04,64位. gcc版本:4.8.8 编译过程我是看着google开发者官网,以及结合别人的博客进行编译的.编译的过程会遇到很多问题,在这里,我就把我遇到的问题总结一些,以便以后用到的时候容易查看,也方便别人编译android的时候遇到相同的问题,便于查看. 问题一:java版本问题 这个问题描述的是我当前使用的java版本是"1.7&