注册 登录
自由的生活_软路由 返回首页

11的个人空间 https://bbs.routerclub.com/?499 [收藏] [复制] [分享] [RSS]

日志

反编译与回编译android的framework.ja

已有 1267 次阅读2012-5-1 15:45

最近对android 2.3.3的framework.jar进行了一些反编译和回编译的操作,写下来备忘。

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

1、下载smali-1.2.6.jarbaksmali-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后再处理也行。

 注:移动数据漫游在framework文件下的framework.jar中,反编译后是framework.jar.out\smali\com\android\internal\telephony\gsm下的GsmServiceStateTracker.smali,可以依据GsmServiceStateTracker.smali文件进行修改,以解决移动数据国际漫游问题。


路过

雷人

握手

鲜花

鸡蛋

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

QQ|Archiver|手机版|小黑屋|软路由 ( 渝ICP备15001194号-1|渝公网安备 50011602500124号 )

GMT+8, 2024-6-8 14:40 , Processed in 0.044553 second(s), 5 queries , Gzip On, Redis On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

返回顶部