程序员

[黑科技] ROM定制

2018-06-27  本文已影响0人  毛x脑内博览会

1 前言

最近在对ROM定制进行了预演,整个过程挺好玩的,这里分享一下。
目前遇到需求主要有:

2 工具介绍:

3 修改系统交互

要明确一点,手机上看到的任何一个界面(拨号界面、设置界面),实际上都是对于的ROM包上的一个apk,因此如果修改这些界面或交互,实际上就是修改对应的apk。

3.1 根据Activity寻找对应的apk包名

  1. 通过adb命令,得知待修改界面的Activity名称
    adb shell dumpsys activity | findstr "mFocusedActivity"

  2. 通过findApkByActivity.py:脚本寻找对应包名
    将ROM下的apk拷到某目录下,执行该脚本 。
    脚本的本质是利用apktool.bat将apk反编译,然后读取AndroidManifest是否包含目标Activity关键字。

3.2 修改apk

  1. apk的后缀改完zip后,打开得到class.dex;
  2. 使用baksmali,将class.dex换成smali文件, 修改对应smali源码
    这个虽然是简单的一句修改源码,但怎么改是个艺术活;
  3. 使用smali,把已修改smali文件转换成为dex文件的;
  4. 修改完的class.dex重新添加到替换原apk的class.dex;

3.3 安装apk

  1. 核心破坏
    由于篡改了apk的文件,正常按照时会报错,我们需要把android校验的相关代码去掉。
    目前使用幸运修改器修改,当然也可以通过自己修改源码实现。

  2. 替换apk
    在有root权限的情况下,将修改好的dex和apk,替换 system/priv-app以及 data/dalvik-cache,重启即可。

3.4 结语

上述方案的简单的可以总结为:先对ROM进行核心破坏,破坏其对apk安装时的签名校验,然后可以尽情的篡改安装系统apk。
以上方案在HM NOTE 1TEL(MIUI9.2、Android4.4.4)测试生效,是在手机获取root权限后,进行篡改操作。其实也可以直接修改rom包。

3.5 实用资料

4 普通应用修改为系统应用

4.1 步骤

  1. Apk安装正常 ;
  2. 将apk文件移动到system/app目录;
  3. 对应so的文件移动到system/lib目录;
  4. 重启手机;

4.2 坑

由于需要吧so文件都移动到system/lib,所以如果你的应用里的so如果与系统的重名,那么就需要修改自己app的so名称。

4.3 实用资料

Android 将自己的应用改为系统应用

5 普通应用绕权限检验

碎碎念

实现这个功能,最先想到的是修改源码AppOpsServie的checkOp方法,不过经过调试,发现apk校验权限时,并不会走这个方法(android 4.4)。
然而,在将应用转成系统应用后,应用自动获取该有的权限,完美!
不过其它版本的需要额外预研!

上一篇下一篇

猜你喜欢

热点阅读