V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
heitao1
V2EX  ›  Android

android 的 framework.jar 反编译,并重新编译

  •  
  •   heitao1 · 2016-09-26 13:43:25 +08:00 · 10117 次点击
    这是一个创建于 3012 天前的主题,其中的信息可能已经有所发展或是发生改变。
    最近对 android 2.3.3 的 framework.jar 进行了一些反编译和回编译的操作,写下来备忘。

    一、 framework.jar 反编译为 smali 文件

    1 、下载 smali-1.2.6.jar 和 baksmali-1.2.6.jar 这两个工具(下载地址: http://code.google.com/p/smali/downloads/list
    2 、将 framework.jar 中的 classes.dex 解压出来(好像不解压,直接用 framework.jar 也行)
    3 、使用 baksmali.jar 对 classes.dex 进行反编译(前提是安装了 jdk ,并且设置好了环境变量),执行命令:

    java -jar baksmali-1.2.6.jar classes.dex -o out/
    其中 classes.dex 是要反编译的文件, out/是要把反编译后的文件存放到的文件夹,如果不是在当前目录下,那么 baksmali-1.2.6.jar 还要加上路径

    这样就 OK 了,在 out 文件夹中可以看到一堆扩展名为.smali 的文件,用记事本就可以打开它们,从中可以窥到一些信息。但是与.java 文件还是有一些不同,我也不太清楚这是什么结构。

    二、 smali 文件回编译为 classes.dex

    1 、一条命令就 OK 了: java -jar smali-1.2.6.jar out/ -o classes.dex
    2 、再把编译好的 classes.dex 放回到 framework.jar 中就行了(可以使用 winrar 、 winzip 之类的工具作为辅助)。

    三、 framework.jar 反编译为.class 和.java 文件

    1 、下载以下工具:
    ( 1 ) dex2jar ( http://code.google.com/p/dex2jar/)
    ( 2 ) xjad ( http://www.skycn.com/soft/41898.html )或 jd-gui ( http://java.decompiler.free.fr/?q=jdgui
    2 、使用 dex2jar 对 framework.jar 进行转换,执行命令: dex2jar.bat framework.jar 将会生成一个 framework.jar.dex2jar.jar
    3 、直接对该 jar 文件解压,可以看到里面都是.class 文件了
    4 、如果还需要转换成.java 文件,可以使用 xjad 或 jd-gui ,均可将 class 文件变为 java 文件。

    注: dex2jar 工具也可以处理.dex 文件,因此也可以不直接处理 framework.jar 。而是先将 framework.jar 解压,生成 classes.dex 后再处理也行。
    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1274 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 18ms · UTC 17:54 · PVG 01:54 · LAX 09:54 · JFK 12:54
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.