最近实习要了解一下部分手机自带浏览器的搜索引擎是怎么配置在手机里的,所以需要反编译一下系统的android浏览器.
起初以为只需要反编译一下apk就行了,后来发现手机自带应用都是导出了odex了的,apk文件只是一个类似UI资源的东西,所以目标变成了反编译odex.
准备工作,除了adb等常用工具,还需要下载smali工具,一共四个文件,都下下来https://code.google.com/p/smali/
将这四个文件放在一个目录下,cd到这个目录,创建system/framework文件夹目录
然后连接手机,假设我们要提取的是Browser.odex,用命令行输入
adb pull /system/framework ./system/framework
adb pull /system/app/Browser.odex
java -jar baksmali-2.0.3.jar -d ./system/framework -x Browser.odex
等待之后会在工作目录生成一个out目录
再输入
java -jar baksmali-2.0.3.jar out -o classes.dex
再使用dex2jar工具,将classes.dex转为jar,最后即可使用jd-gui查看反编译的代码.