Android Framework源码反编译

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

 

一、获取Framework文件:java

adb pull /system/framework

获取Framework文件夹下面的内容,可能有framework.jar和framework.odex,若是framework.jar解压出来有dex则反编译dex便可,若是framework.jar里面没dex则须要先反编译framework.odex文件至dex文件;git

 

二、反编译odex文件:github

pull framework文件夹时最好所有获取出来,由于反编译时有依赖,就在获取的framework文件夹里面反编译不用担忧依赖缺乏的问题;工具

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

https://github.com/JesusFreke/smalicode

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

 

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

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

相关文章
相关标签/搜索