美文网首页程序员
[黑科技] ROM定制

[黑科技] ROM定制

作者: 毛x脑内博览会 | 来源:发表于2018-06-27 14:54 被阅读0次

    1 前言

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

    • 修改系统交互
    • 普通应用修改为系统应用
    • 普通应用绕权限检验

    2 工具介绍:

    • adb: 不解释
      adb shell dumpsys activity | findstr "mFocusedActivity" //获取当前activity名称
      adb logcat |tee log.log //将日志打印到文件
      adb logcat |grep AppOps //打印指点TAG的日志
      adb push E:\apk\ /sdcard/ //将文件导入sdcard

    • apktool: 查看apk的资源 xml等文件
      apktool.bat d -f release.apk -o release

    • dex2jar: 将dex转成jar文件
      dex2jar.bat classes.dex

    • jd-gui.exe: 查看jar

    • baksmali: 把dex文件转换成smali文件的工具(dex文件无法修改,要想修改源码,必须把把dex文件转换成smali文件)
      java -jar baksmali-2.0.3.jar -x classes.dex

    • smali: 把smali文件转换成为dex文件的工具(修改完smali文件,自然需要把它还原到最初的dex文件)
      java -jar smali-2.0.3.jar -o classes.dex out

    • signapk.jar: 对apk进行签名(没经过签名的包最终会安装失败,提示“解析程序包出现问题”)
      java -jar signapk.jar platform.x509.pem platform.pk8 HelloWorld.apk Signed.apk

    • janus.py: 利用漏洞Janus允许恶意攻击者任意修改Android应用中的代码,而不会影响其签名
      python janus.py classes.dex app-debug.apk out.apk

    • findApkByActivity.py: 将遍历目前下的apk,寻找包含目标Activity找对应包名

    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)。
    然而,在将应用转成系统应用后,应用自动获取该有的权限,完美!
    不过其它版本的需要额外预研!

    相关文章

      网友评论

        本文标题:[黑科技] ROM定制

        本文链接:https://www.haomeiwen.com/subject/hwwbyftx.html