zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    MySQL my.cnf详解
    函数:sleep-exit-wait
    fork-小实验
    OS-进程调度
    CET-4流程
    SDK和API的区别
    生活-金钱管理-不是理财
    算法设计与分析:Strassen矩阵乘法
    力扣:二进制加法求和
    算法设计与分析:大整数乘法
  • 原文地址:https://www.cnblogs.com/albert1017/p/9135800.html
Copyright © 2011-2022 走看看