迅维网

查看: 3638|回复: 0
打印 上一主题 下一主题

Magisk如何针对性隐藏Root避免被检测

[复制链接]
跳转到指定楼层
1#
发表于 2023-3-30 19:40:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式 来自: 湖南 来自 湖南

马上注册,获取阅读精华内容及下载权限

您需要 登录 才可以下载或查看,没有帐号?注册

x
关于Magisk有一个有趣的故事,Magisk的作者老吴,国内人,妥妥的大牛,主攻Root领域,目前在Google里卖弄当工程师,在去Google之前,老吴还去苹果公司实习过,就在大家以为老吴去批评过会对Google公司造成很大威胁时,Google又把老吴挖了过去。据说在老吴去Google之前就已经掌握了Google的核心源码,这样的人Google肯定不会让他去对手公司的。在老吴去了Google公司后,由于Magisk和Google旗下的Android有利益冲突,在v24版本之后,Magisk关闭了MagiskHide功能。
我们知道MagiskHide是用来隐藏Root权限的,同时我们还能用Magisk开发模块。那么这个MagiskHide的关闭意味着我们没办法用Magisk隐藏Root权限了,所幸的是v24之后推出了Zygisk功能,这个可以隐藏Root权限,很多视频博主用这个来隐藏Root又不影响其他软件的正常使用,但是这个这个功能有一个致命的缺点,就是被隐藏Root后,在这个应用上作用的插件就会失效,打个比方:
  • 支付宝会检测root,你想隐藏root,你也想在Lsposed里用一个模块来自动收支付宝能量。
  • 如果你不使用Zygisk,那么你就只能用Riru版本的Lsposed,但是没有MagiskHide你无法隐藏root。
  • 如果你使用Zygisk,你可以使用Zygisk版本的Lsposed,但是如果你把支付宝添加到Zygisk排除列表来“隐藏”root的话,那么Zygisk版的Lsposed无法对支付宝起作用
说白了就是上面这种方法不靠谱,那还有什么方法呢?就目前所知有两种,一种是用magisk+插件的方式,另一种是定制magisk源码编译,将su改成其他的(不过这个的话还需要能定制源码隐藏magisk才行,这个以后有时间单独开文章说)。
magisk+插件
Magisk+插件的方式来达到以前magisk hide的效果,实现隐藏Root。

Zygisk版Magisk+Shamiko
好在Lsposed的作者为此开发了一款Shamiko,只不过并不是开源的,因此我们也无法基于shamiko的源码做定制。要下载的小伙伴移步Github的发布页面下载。
Shamiko是一款Magisk插件,他和Riru,Zygisk插件一样都是基于面具开发的插件,这些插件可以看作是一个桥接模块,但是又有点区别,因为他并不是一个魔改模块,而是的读取了Magisk应用设置中的排除列表(在不开启排除列表开关的时候生效),所以很多小伙伴知道这个东西的时候一脸懵逼,加上网上很多文章误导说要安装这个那个模块才能生效,实际上,安装了这个模块后就能实现隐藏root了。
具体使用方式为:
  • 已经在magisk中打开了zygisk
  • 使用面具刷入本模块zip包
  • V24版本以下的magisk需要在magisk设置中,打开“遵守排除列表”(V24+不需要操作)
  • 然后在“配置排除列表”中,配置你要对谁隐藏root
  • 配置好之后,关闭“遵守排除列表”(不要开启“遵守排除列表”)
  • 重启手机即可
Zygisk版Magisk+Riru
面具中文网有关于如何使用hide-my-list的教程,为了避免大家踩坑,我还是说一下(在座各位都是顶尖聪明的人,我就挑重点了):
  • 安装Zygisk版本的面具
  • 安装Lsposed
  • 下载安装V2.3.2版本的 Hide My Applist 应用
  • 打开 Hide My Applist APP,安装Magisk插件 – Zygisk – 重启设备(实际上就是安装了一个riru模块)
  • 再次打开Hide My Applist 提示安装完成
注意:不要安装最新版,我看源代码里面最新版没有安装插件选项了,要下载V2.3.2。
大家要用源代码编译也可以,切换到V2.3.2的ttag就好了,源代码地址在这里
上面是关于如何安装,安装好了怎么用呢?
  • 打开 Hide My Applist APP: 模板管理 – 创建黑名单模板(模板名称随意)- 编辑隐藏应用列表 – 把我们要隐藏的应用全勾上(比如像面具、模块这些)


  • 下载安装应用列表检测器(ApplistDetector · GitHub)可以用这个APP测试(这个我倒是觉得哪个都可以)



  • 打开 Hide My Applist – 选择生效应用(按下图设置,启用模板勾选刚刚创建的黑名单模板)保存 – 然后打开 应用列表检测器 检测 是否生效




Riru版本Magisk
这个直接用就好了,在设置里面,但是老版本的Riru已经不更新了,不建议大家用了,反正我是不用了,所以我也懒得写了。
Zygisk和Riru什么关系
在Zygisk出现之前,Xposed是通过riru实现的,riru注入zygote以允许模块在应用程序中运行。
在magisk v24+中,推出zygisk,可以理解成Zygisk = Zygote + Magisk,和riru的功能类似。使用了Zygisk后,就不需要安装riru模块了,同时依赖于riru的xposed框架也无法使用,但是可以使用支持zygisk的LSPosed。
目前riru已经停止更新,这也就是为什么我并不想去研究Riru插件的原因。

定制Magisk源码
定制Magisk源码需要编译Magisk源代码,这个有点繁琐,如果你是在linux系统上编译,速度会快很多,主要还是因为Windows下代码总不能一帆风顺,Linux上打好梯子一次性就下好了,其他环境什么的也不需要考虑,速度就快很多,所以我这里只介绍Linux的做法,Windows的自行摸索。
下载并编译Magisk源码
大家可以在Magisk的[github官网](https://github.com/topjohnwu/Magisk)下载到这个源代码。
git clone --recurse-submodules https://github.com/topjohnwu/Magisk.git
克隆下来之后,使用git update更新代码,因为Maigsk包含很多的子模块,而克隆下来的代码是没有拉去这些子模块的,所以要递归拉去,否则会缺少文件。
git submodule update --init --recursive
如果出现克隆失败,那颗尝试关掉git的ssl认证,还是不行的话就只能进入到对应的子模块一个个git clone了。我是一次性通过的,不知道是不是我用了猥皮恩的原因。
git config --global http.sslVerify "false"
编译环境的安装
是i机上在编译magisk的时候我已经安装好所有环境了,一i那位我之前要编译Android源码,大家可以看我之前写的aosp编译或者lineage的编译,里面都有关于环境的介绍。不过这里我介绍一个一键安装的脚本,是从pixelExpirence的官方文档里面把过来的,下过来这个脚本运行他会全自动安装,省事不少。
cd ~/git clone GitHub - akhilnarang/scriptscd scripts./setup/android_build_env.sh
开始编译
我们就直接在Linux上面编译了,当然你也可以导入到AndroidStudio编译,不过要麻烦一些,然后还有一个是如果你的Magisk是最新代码,androidStudio最好也升级为最新版本,否则无法编译。

Magisk的编译需要特定的ndk版本,需要进入到Magiosk源码根目录,运行一个指令:
build.py ndk
这个时候它会自动下载ndk到Android SDK里面,要配置AndroidSDK到环境变量ANDROID_SDK_ROOT ,你也可以直接运行或者在.bashrc中添加该环境变量:
export ANDROID_SDK_ROOT="/path/to/Android/Sdk"

需要注意的是,这里的路径不能是相对路径,比如你写成~/android/SDK是不行的,他会识别成当前目录下的~/android/Sdk。做完这个之后在运行`build.py ndk` 它就会把ndk下载好。下载好了之后可以通过运行build.py查看是否环境正确配置(有下面这样的提示就可以了):
./build.pyusage: build.py [-h] [-r] [-v] [-c CONFIG] {all,binary,app,stub,snet,clean,ndk} ...Magisk build scriptoptional arguments:  -h, --help            show this help message and exit  -r, --release         compile in release mode  -v, --verbose         verbose output  -c CONFIG, --config CONFIG                        custom config file (default: config.prop)  ...

接下来就是编译MNagisk app了,这里我先简单说下项目结构,项目分为四个部分(详细内容见../docs/tools.md):
  • /stub Magisk服务APK部分
  • /app(指Magisk APP)部分
  • /native 即C/C++部分,包含8个实用工具 (包含在NDK编译出的四个二进制文件内,分别是 Magisk、Magiskboot、Magiskinit、busybox )
  • snet 扩展,其源码需放在 /stub/src/main/java/com/topjohnwu/snet 中才能正常编译,默认不会编译此项内容。
其中magiskhide,resetprop ,su 均在Magisk的二进制文件里面
使用`build.py all`进行编译,这个时间比一般编译Apk的时间要长一点,耐心等待一下:
zls@zls-All-Series:~/android/magisk/Magisk$ ./build.py all* Building binaries: magisk magiskinit magiskboot magiskpolicy busybox* Building the Magisk appNote: /home/zls/android/magisk/Magisk/stub/src/main/java/com/topjohnwu/magisk/DownloadActivity.java uses or overrides a deprecated API.Note: Recompile with -Xlint:deprecation for details.Output: out/app-debug.apk

到这里Apk就编译好了,然后你就能按照正常刷入Magisk的方式刷入了,不懂得可以看我之前写的一篇文章,接下来我们来讲讲如何定制su;

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表
附近
店铺
微信扫码查看附近店铺
维修
报价
扫码查看手机版报价
信号元
件查询
点位图 AI维修
助手



芯片搜索

快速回复