Android6.0 反编译systemUI

来源:互联网 发布:js模拟鼠标拖动事件 编辑:程序博客网 时间:2024/05/29 09:34

 今天要反编译一个systemUI查看一些东西,本文是反编译Android 6.0的某手机的systemUI

准备工具:

baksmali-2.1.3.jar

smali-2.1.3.jar

dex2jar-2.0 

在csdn上我上传了该工具:http://download.csdn.net/detail/huml126/9620919,你也可以去https://bitbucket.org/JesusFreke/smali/downloads这里下载前面两个jar包

 

反编译步骤:


1、把手机的system/framework  pull出来  adb pull system/framework


2、把你要反编译的odex pull处理: adb pull   system/priv-app/SystemUI/oat/arm64/SystemUI.odex 出来



3、把odex编译成smali文件

 java -jar baksmali-2.1.3.jar -a 23 -c ./system/framework/arm/boot.oat  -d ./system/framework/  -x SystemUI.odex

-a 表示API版本是23,也就是Android 6.0  -c就是bootclasspath(在Android中你可以通过adb shell printenv查看该变量,boot.oat文件就是这些文件Android5.0后编译成二进制文件后的),可能会出现如下错

出现这个错误


解决这个错的方法是

把boot.oat和boot.art文件拷贝到framework目录下



然后在重新执行:


然后就会生成out目录



4、把out目录打包成dex文件


生成下面的文件



5、把classes.dex拷贝到dex2jar-2.0,用dex2jar-2.0吧dex文件转成jar文件




6、打开classes-dex2jar.jar文件,推荐用JAD打开,JAD打开比用jd-gui打开更好,因为用jd-gui打开反编译的东西不全,参考:http://www.blogjava.net/landon/archive/2010/07/16/326294.html,这篇文章来使用jad

 Jad是一个Java的一个反编译工具,是用命令行执行,和通常JDK自带的java,javac命令是一样的。不过因为是控制台运行,所以用起来不太方便。不过幸好有一个eclipse的插件JadClipse,二者结合可以方便的在eclipse中查看class文件的源代码。下面介绍一下配置:
    A.下载JadClipse,http://jadclipse.sourceforge.net/wiki/index.php/Main_Page#Download,注意选择与eclipse版本一致的版本,我用的是Eclipse3.4,所以选择下载版本net.sf.jadclipse_3.3.0.jar
    B.下载Jad,http://www.varaneckas.com/jad,下载相应版本
    C.将下载下来的Jadclipse,如net.sf.jadclipse_3.3.0.jar拷贝到Eclipse下的plugins目录即可。当然也可以用links安装,不过比较麻烦。
    D.将Jad.exe拷贝到JDK安装目录下的bin文件下(方便,与java,javac等常用命令放在一起,可以直接在控制台使用jad命令),我的机器上的目录是D:\Program Files\Java\jdk1.6.0_02\bin\jad.exe
    F.然后,重新启动Eclipse,找到Eclipse->Window->Preferences->Java,此时你会发现会比原来多了一个JadClipse的选项

















0 0
原创粉丝点击