首页
社区
课程
招聘
[原创]学习Androidx86模拟器root安装xposed
发表于: 2018-4-18 15:48 24526

[原创]学习Androidx86模拟器root安装xposed

2018-4-18 15:48
24526

学习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期)

上传的附件:
收藏
免费 2
支持
分享
最新回复 (7)
雪    币: 1392
活跃值: (5177)
能力值: ( LV13,RANK:240 )
在线值:
发帖
回帖
粉丝
2
网页图片有点看不清,DOC里面是可以放大看的,初入门android  hook    我已经落后好多了
2018-4-18 15:54
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
ksd
3
有时候还真的不小心会掉坑里,呵呵!不过楼主爬出来了!
2018-4-19 16:54
0
雪    币: 6818
活跃值: (153)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
2018-4-19 22:41
0
雪    币: 268
活跃值: (159)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
init.rc最后
service  flash_recovery  /system/bin/install-recovery.sh
直接替换这个文件就行了
2018-4-24 15:24
0
雪    币: 10885
活跃值: (3288)
能力值: (RANK:520 )
在线值:
发帖
回帖
粉丝
6
感谢分享,很好的文章。
这个每次要在命令行带参数-writable-system 启动

最后于 2019-1-25 15:45 被netwind编辑 ,原因:
2019-1-25 15:45
0
雪    币: 1867
活跃值: (3973)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
7
mark
2019-1-26 10:08
0
雪    币: 1385
活跃值: (5609)
能力值: ( LV3,RANK:25 )
在线值:
发帖
回帖
粉丝
8
直接替换到源码。编译到系统,成功了,但是默认没启动服务。。。
 真机怎么弄,求指导。
最后于 2019-5-10 09:05 被supperlitt编辑 ,原因:
2019-5-9 11:31
0
游客
登录 | 注册 方可回帖
返回
//