逆向小米系统Settings.apk过程记录

知识背景

  • dex
  • odex

dex文件

xxx.java->xxx.class->classes.dex
拿一个apk解压后你会看到一个classes.dex文件,我们逆的目标就是他,也就是apk中的源码都在classes.dex文件中。

odex文件

odex是安卓上的应用程序apk中提取出来的可运行文件,即将APK中的classes.dex文件通过dex优化过程将其优化生成一个odex文件单独存放,原APK中的classes.dex文件会保留的。

获取dex文件

由于小米系统Settings.apk解压后没有类似classes.dex文件,我们得想办法获取。基本思路就是odex文件通过工具来获取dex文件。

从rom固件中获取system系统文件

  • MIUI官网下载固件
    这里写图片描述

  • 提取system文件
    由于rom下载解压后的文件目录是这样的这里写图片描述
    其中并没有找到system目录,从android 5.0开始,升级包中就不包含system目录了,而是用system.new.dat代替,那么我们就得解压该文件来获取system目录文件。解压 system.new.dat文件请参考亲测Android 7.0可用 system.new.dat 解包 打包工具汉化修改版
    解压完之后会在相应的目录生成system.img镜像文件这里写图片描述 我们得到system.img就相当于得到了system文件目录了。然后网上自行搜索下载一个 system.img解压工具即可解压system.img得到system文件。

获取dex文件

  • odex文件路径:system/priv-app/Settings/oat/arm64/Settings.odex

    • baksmali.jar
      baksmali.jar 用于将odex解析成dex的工具。
      下载地址baksmali.jar
      命令行:java -jar baksmali.jar de Settings.odex
      如果成功,将会在当前目录生成一个out目录文件,如果不成功,那么比较遗憾,我们只能通过其他手段来获取。一般失败的log如下:
      这里写图片描述 log提示缺少boot.oat boot-core-libart.oat 等文件。那么这些文件在哪里呢?找啊,找,终于在
      这里写图片描述
      那么很简单,我们直接把Settings.odex文件copy到该目录下,然后在进行解压,ok,好了,生成了out目录文件了。

    • smali文件转换成dex文件
      工具smali.jar 将smali文件转出成dex文件
      下载地址smali.jar 下载地址
      命令:java -jar smali.jar a out -o Settings.dex

    最终我们获得Settings.dex文件,但是dex文件还是不能直接查看,我们得将它转出成.jar文件查看。

    • dex文件转出成.jar文件
      工具dex2jar 将dex文件转换成jar文件便于查看
      下载地址dex2jar下载地址
      命令:java d2j-dex2jar.bat Settings.dex
      最终会生成Settings-dex2jar.jar文件。

    • jd-jui工具查看jar文件
      下载地址:jd-jui工具下载地址
      最终效果图:这里写图片描述

总结

逆向最重要是工具的使用,其实按照步骤来,还是没有啥困难的。
步骤:

  1. 下载官方rom
  2. 生成system.img镜像文件
  3. 提取system文件
  4. 提取apk.odex文件
  5. 有odex文件生成smali文件
  6. 有smali文件生成dex文件
  7. 有dex文件生成jar文件

过程使用到的工具:

  1. 解压缩system.new.dat 工具 请参考亲测Android 7.0可用 system.new.dat 解包 打包工具汉化修改版
  2. 解压缩system.img工具 Ext2explore工具 下载地址:Ext2explore
  3. 生成smali问工具 baksmali.jar 下载地址:baksmali.jar
  4. 生成dex文件工具 下载地址 smali.jar
  5. 生成jar文件工具 下载地址 dex2jar
  6. 查看jar文件工具 下载地址 jd-jui

参考博客

  1. Android反编译-小米桌面逆向过程记录
  2. 看我逆向小米rom层应用做碎片化适配
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值