Xposed环境安装

一、Xposed 框架实现 Hook 的原理介绍

Zygote是Android的核心,每运行一个app,Zygote就会fork一个虚拟机实例来运行app,
Xposed Framework深入到了Android核心机制中,通过改造Zygote来实现一些很牛逼的
功能。Zygote的启动配置在init.rc 脚 本 中,由系统启动的时候开启此进程,对应的
执行文件是/system/bin/app_process,这个文件完成类库加载及一些函数调用的工作。
当系统中安装了Xposed Framework之后,会对app_process进行扩展,也就是说,Xposed
Framework 会拿自己实现的app_process覆盖掉Android原生提供的app_process文件,
当系统启动的时候,就会加载由 Xposed Framework 替换过的进程文件,并且,Xposed
Framework 还定义了一个 jar 包,系统启动的时候,也会加载这个包:
/data/data/de.robv.android.xposed.installer/bin/XposedBridge.jar

二、Xposed框架运行的条件

1.Rooted Device / Emulator (已root的手机或者模拟器)
2.Xposed Installer (Xposed安装程序下载)
3.Hooking Android App (要被Hook的目标 App)

三、安装过程

1. 推荐下载 Xposed3.1.5 版本,XposedInstaller_3.1.5.zip。

​ 下载安装后,若科学上网可以直接激活,之前http改为https需要搭梯子。
请添加图片描述

2.离线激活方式:

​ https://dl-xda.xposed.info/framework/ 从该网址找到自己的手机API - sdk对应的版本 (arm|x86)(32 | 64位)

eg: 雷电模拟器 4.0.43 版本 - 》 (X86 api 25)
请添加图片描述

-> 下载25版本https://dl-xda.xposed.info/framework/sdk25

请添加图片描述

3.下载后将压缩包中的 system 解压到一个新建文件夹中,再将以下 script.sh shell脚本放置该文件中:

请添加图片描述

##########################################################################################
#
# Xposed framework installer zip.
#
# This script installs the Xposed framework files to the system partition.
# The Xposed Installer app is needed as well to manage the installed modules.
#
##########################################################################################

grep_prop() {
  REGEX="s/^$1=//p"
  shift
  FILES=$@
  if [ -z "$FILES" ]; then
    FILES='/system/build.prop'
  fi
  cat $FILES 2>/dev/null | sed -n $REGEX | head -n 1
}

android_version() {
  case $1 in
    15) echo '4.0 / SDK'$1;;
    16) echo '4.1 / SDK'$1;;
    17) echo '4.2 / SDK'$1;;
    18) echo '4.3 / SDK'$1;;
    19) echo '4.4 / SDK'$1;;
    21) echo '5.0 / SDK'$1;;
    22) echo '5.1 / SDK'$1;;
    23) echo '6.0 / SDK'$1;;
    24) echo '7.0 / SDK'$1;;
    25) echo '7.1 / SDK'$1;;
    26) echo '8.0 / SDK'$1;;
    27) echo '8.1 / SDK'$1;;
    *)  echo 'SDK'$1;;
  esac
}

cp_perm() {
  cp -f $1 $2 || exit 1
  set_perm $2 $3 $4 $5 $6
}

set_perm() {
  chown $2:$3 $1 || exit 1
  chmod $4 $1 || exit 1
  if [ "$5" ]; then
    chcon $5 $1 2>/dev/null
  else
    chcon 'u:object_r:system_file:s0' $1 2>/dev/null
  fi
}

install_nobackup() {
  cp_perm ./$1 $1 $2 $3 $4 $5
}

install_and_link() {
  TARGET=$1
  XPOSED="${1}_xposed"
  BACKUP="${1}_original"
  if [ ! -f ./$XPOSED ]; then
    return
  fi
  cp_perm ./$XPOSED $XPOSED $2 $3 $4 $5
  if [ ! -f $BACKUP ]; then
    mv $TARGET $BACKUP || exit 1
    ln -s $XPOSED $TARGET || exit 1
    chcon -h 'u:object_r:system_file:s0' $TARGET 2>/dev/null
  fi
}

install_overwrite() {
  TARGET=$1
  if [ ! -f ./$TARGET ]; then
    return
  fi
  BACKUP="${1}.orig"
  NO_ORIG="${1}.no_orig"
  if [ ! -f $TARGET ]; then
    touch $NO_ORIG || exit 1
    set_perm $NO_ORIG 0 0 600
  elif [ -f $BACKUP ]; then
    rm -f $TARGET
    gzip $BACKUP || exit 1
    set_perm "${BACKUP}.gz" 0 0 600
  elif [ ! -f "${BACKUP}.gz" -a ! -f $NO_ORIG ]; then
    mv $TARGET $BACKUP || exit 1
    gzip $BACKUP || exit 1
    set_perm "${BACKUP}.gz" 0 0 600
  fi
  cp_perm ./$TARGET $TARGET $2 $3 $4 $5
}

##########################################################################################

echo "**************************"
echo "Xposed framework installer"
echo "**************************"

if [ ! -f "system/xposed.prop" ]; then
  echo "! Failed: Extracted file system/xposed.prop not found!"
  exit 1
fi

echo "- Checking environment"
API=$(grep_prop ro.build.version.sdk)
APINAME=$(android_version $API)
ABI=$(grep_prop ro.product.cpu.abi | cut -c-3)
ABI2=$(grep_prop ro.product.cpu.abi2 | cut -c-3)
ABILONG=$(grep_prop ro.product.cpu.abi)

XVERSION=$(grep_prop version system/xposed.prop)
XARCH=$(grep_prop arch system/xposed.prop)
XMINSDK=$(grep_prop minsdk system/xposed.prop)
XMAXSDK=$(grep_prop maxsdk system/xposed.prop)

XEXPECTEDSDK=$(android_version $XMINSDK)
if [ "$XMINSDK" != "$XMAXSDK" ]; then
  XEXPECTEDSDK=$XEXPECTEDSDK' - '$(android_version $XMAXSDK)
fi

ARCH=arm
IS64BIT=
if [ "$ABI" = "x86" ]; then ARCH=x86; fi;
if [ "$ABI2" = "x86" ]; then ARCH=x86; fi;
if [ "$API" -ge "21" ]; then
  if [ "$ABILONG" = "arm64-v8a" ]; then ARCH=arm64; IS64BIT=1; fi;
  if [ "$ABILONG" = "x86_64" ]; then ARCH=x86_64; IS64BIT=1; fi;
fi

# echo "DBG [$API] [$ABI] [$ABI2] [$ABILONG] [$ARCH] [$XARCH] [$XMINSDK] [$XMAXSDK] [$XVERSION]"

echo "  Xposed version: $XVERSION"

XVALID=
if [ "$ARCH" = "$XARCH" ]; then
  if [ "$API" -ge "$XMINSDK" ]; then
    if [ "$API" -le "$XMAXSDK" ]; then
      XVALID=1
    else
      echo "! Wrong Android version: $APINAME"
      echo "! This file is for: $XEXPECTEDSDK"
    fi
  else
    echo "! Wrong Android version: $APINAME"
    echo "! This file is for: $XEXPECTEDSDK"
  fi
else
  echo "! Wrong platform: $ARCH"
  echo "! This file is for: $XARCH"
fi

if [ -z $XVALID ]; then
  echo "! Please download the correct package"
  echo "! for your platform/ROM!"
  exit 1
fi

echo "- Placing files"
install_nobackup /system/xposed.prop                      0    0 0644
install_nobackup /system/framework/XposedBridge.jar       0    0 0644

install_and_link  /system/bin/app_process32               0 2000 0755 u:object_r:zygote_exec:s0
install_overwrite /system/bin/dex2oat                     0 2000 0755 u:object_r:dex2oat_exec:s0
install_overwrite /system/bin/oatdump                     0 2000 0755
install_overwrite /system/bin/patchoat                    0 2000 0755 u:object_r:dex2oat_exec:s0
install_overwrite /system/lib/libart.so                   0    0 0644
install_overwrite /system/lib/libart-compiler.so          0    0 0644
install_overwrite /system/lib/libsigchain.so              0    0 0644
install_nobackup  /system/lib/libxposed_art.so            0    0 0644
if [ $IS64BIT ]; then
  install_and_link  /system/bin/app_process64             0 2000 0755 u:object_r:zygote_exec:s0
  install_overwrite /system/lib64/libart.so               0    0 0644
  install_overwrite /system/lib64/libart-compiler.so      0    0 0644
  install_overwrite /system/lib64/libart-disassembler.so  0    0 0644
  install_overwrite /system/lib64/libsigchain.so          0    0 0644
  install_nobackup  /system/lib64/libxposed_art.so        0    0 0644
fi

mkdir -p /system/priv-app/XposedInstaller
chmod 0755 /system/priv-app/XposedInstaller
chcon -h u:object_r:system_file:s0 /system/priv-app/XposedInstaller
cp system/priv-app/XposedInstaller/XposedInstaller.apk /system/priv-app/XposedInstaller/XposedInstaller.apk 
chmod 0644 /system/priv-app/XposedInstaller/XposedInstaller.apk
chcon -h u:object_r:system_file:s0 /system/priv-app/XposedInstaller/XposedInstaller.apk

if [ "$API" -ge "22" ]; then
  find /system /vendor -type f -name '*.odex.gz' 2>/dev/null | while read f; do mv "$f" "$f.xposed"; done
fi

echo "- Done"
exit 0

4.将该文件夹push进手机 system 中 :
adb remount

adb push 刚刚创建的文件夹 /system

adb shell 

chmod 777  文件夹名 

chmod 777  文件夹名 /shell脚本

chmod 777  文件夹名 /system
5.运行script.sh脚本:
chmod 777  script.sh 

./script.sh 
6.重新手机,再打开xposed框架,成功激活:

请添加图片描述

  • 55
    点赞
  • 57
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: Virtual Xposed是一款基于VirtualApp和Epic的虚拟环境,可以在不root的情况下运行Xposed模块。它可以让用户在不影响系统稳定性的情况下,实现一些定制化的功能,比如修改应用的界面、增强应用的功能等。同时,Virtual Xposed还支持多开,可以让用户在同一设备上同时登录多个账号。 ### 回答2: Virtual Xposed 是一款非常实用的模拟器工具,它允许用户在非root的设备上运行需要root权限的应用程序。通常,为了运行某些应用程序或进行一些操作,我们需要对设备进行Root处理,这并不是所有用户都愿意或能够做的。不过,有了Virtual Xposed,我们可以在没有Root权限的情况下,仍然能够使用需要Root权限的应用程序。 Virtual Xposed工作原理如下:它在内部创建了一个虚拟的Root环境,该环境对系统进行了修改,以模仿Root环境,进而弥补在非Root设备上无法访问Root权限的缺陷。通过这种方式,用户可以在Virtual Xposed环境安装和运行需要Root权限的应用程序,而无需对设备进行实际的Root处理。 使用Virtual Xposed 的优势是多方面的。首先,用户可以在不破坏设备安全的前提下,体验到一些只有Root权限才能带来的特殊功能。其次,Virtual Xposed允许用户备份和修改应用程序的数据,这对某些需要进行定制或修改的用户而言是非常便利的。 总的来说,Virtual Xposed 是一款功能强大的虚拟Root模拟器工具,它使得非Root设备也能够享受到一些只有Root权限才能带来的便利。这对于那些不愿意或不能对设备进行Root处理的用户来说,是一个非常好的替代方案。无论是在使用特定的应用程序,还是备份和修改应用程序数据方面,Virtual Xposed 都能够为用户带来很多便利。 ### 回答3: Virtual Xposed是一款功能强大的Android虚拟环境工具,它允许用户在不进行Root的情况下运行和使用需要Root权限的应用程序。虚拟Xposed可以创建一个隔离的虚拟运行环境,使用户能够在主操作系统中运行具有特殊要求的应用程序。 虚拟Xposed的运行基于VirtualApp框架,通过模拟一个虚拟的Android环境,将需要Root权限的应用程序绕过检测,使其可以在非Root设备上运行。这大大简化了用户的操作,避免了Root带来的风险和不便。 虚拟Xposed还支持内置Xposed框架,用户可以通过添加相应的模块来定制和增强应用程序的功能。这样,用户可以在虚拟环境安装和使用各种模块,如修改系统UI、增强应用程序的功能、增加自动化脚本等。 与传统的模拟器不同,虚拟Xposed不需要用户安装整个虚拟系统,只需在主系统上添加一个虚拟环境,然后在虚拟环境中运行特定的应用程序。这不仅减少了资源使用,还提高了效率和性能。 总的来说,虚拟Xposed是一款非常实用的工具,可以在非Root设备上运行和使用需要Root权限的应用程序。它通过创建虚拟运行环境和支持Xposed框架,使用户可以享受到更多的自定义和功能增强。对于那些不愿进行Root的用户来说,虚拟Xposed绝对是一款不可多得的神器。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Codeoooo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值