学习Android x86模拟器root 安装xposed
如果可以在模拟器上学习xposed可能会比手机上来得方便,包括调试等等,如果在PC上x86上模拟arm将会非常慢,如果采用安卓x86镜像,由于部分apk带有arm原生的so,所以有部分apk不能在android x86模拟器上运行,但是如果仅仅用来学习xposed hook 也不用去买一部android手机。另外就是安装xposed需要root。不能保证所有真机都可以root。
以下把遇到的坑和流程记录一下。
1 (SDK MANAGER下载)模拟器选择 android 6.0 api 23
2(AVD manager)创建模拟器
配置好必要的参数 名字设置为test_xposed、版本Android 6.0 API 23、内置存储和SD卡都为500M、skin动态、USE HOST GPU打勾(否则会很慢)
先启动一下试试看
3 启动成功运行了
4尝试安装xposed框架
https://forum.xda-developers.com/showthread.php?t=3034811
下载安装apk 目前版本是3.1.5
XposedInstaller_3.1.5.apk - [Click for QR Code] (2.96 MB, 885904 views)
#adb devices 查看模拟器已经运行并连接
安装apk
#adb install XposedInstaller_3.1.5.apk
模拟器中已经安装
点击 INSTALL version 98会联网下载框架需要的文件。
显示错误因为我们的模拟器还没有root
5 Android x86模拟器的root
是不是将这两句删除编译就可以了呢?经过测试,普通user 依然无法使用setuid(0) setgid(0)
即使已经在adb命令行中将 su的权限修改为 4775 -rwsr-xr-x 也不行
这里应该和android的安全机制有关。尚未弄清楚。在ubuntu下测试是可行的。
我决定看看superuser是如何做的。
https://github.com/koush/Superuser
通过阅读Superuser-master\Superuser\jni\su\su.c
发现调用是通过在root 环境下调用su –daemon命令运行一个su-daemon服务打开一个端口监听。
普通用户执行su 通过socket将命令传递给具有root 权限的su-daemon 执行,将结果返回到普通su.
由于Superuser是结合数据库以及UI 限制的。我们考虑到模拟器不需要太多安全性。也避免麻烦。我们不需要像SuperUser那样的ROOT用户界面以及判断,对于所有的请求我们都允许。所以我们需要修改源码,所有UI数据库相关的都去掉。
只留下su目录
我使用的是android-ndk-r16-beta1编译
修改Android.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := su
LOCAL_FORCE_STATIC_EXECUTABLE := true
LOCAL_SRC_FILES := su/su.c su/utils.c su/daemon.c su/pts.c
include $(BUILD_EXECUTABLE)
修改Application.mk
APP_ABI := x86
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)