WSA - root,frida与ida测试

news2024/11/27 14:40:40

本文旨在配置windows subsystem for android(win安卓子系统)来作为win在开启了hyper-v的情况下的一种轻量的安卓模拟器方案。使用MagiskOnWsa设置root权限,最终使其正常与开发环境、frida、ida打通。

1. Root的WSA

常用的Wsa版本在目前是没有默认root的。在物理机上要解决这一情况就需要刷机,而模拟器显然是不具备刷机的条件的 —— 要么就直接下载带root的系统镜像,或者自己魔改一个带root的——Wsa的root方案和这个思路类似,在Github的LSPosed仓库里有MagiskOnWsa方案,利用其可以编译出自带Magisk的WSA系统。

步骤:

重要 如果使用wsl虚拟机进行制作,请务必使用ubuntu 16虚拟机。高版本(截止2023.7.11的最新版本)下的MagiskOnWsa的run.sh、install.sh

安装16.04版本

wsl --install -d Ubuntu

git配置:

# fatal: unable to connect to github.com
git config --global url."https://github.com".insteadOf git://github.com
# fatal: unable to access ‘https://github.com/robbyrussell/oh-my-zsh.git/’: LibreSSL SSL_connect: SSL_ERROR_SYSCALL in connection to github.com:443

git config --global --unset http.proxy
git config --global --unset https.proxy
# OpenSSL SSL_read: Connection was reset, errno 10054
git init

build

git clone https://github.com/LSPosed/MagiskOnWSALocal.git --depth 1
cd MagiskOnWSALocal
./scripts/run.sh

install

PowerShell.exe -ExecutionPolicy Bypass -File .\Install.ps1

开发模式
![[Pasted image 20230714113321.png]]
connect

adb connect 127.0.0.1:58526#may failed,continue
adb shell
redfin:/ $ su
redfin:/ #

WSA安装完成后会弹出Magisk界面,如果点那个安装,安装失败了也无所谓,不影响。

2. Frida On WSA

开始测试之前,我们需要简单检查一下WSA的设置:
在这里插入图片描述

这里一定要关闭高级网络。WSA的高级网络的级别和WSL相似,甚至可以说更高。开启WSA后其可以直接探测、同步物理机wifi,可以说这二者用的是同一张网卡。几个作证是①开启高级网络后安卓虚拟机更改连接的wifi会同步更改物理机wifi②安卓虚拟机的ip和物理机一致。
这里的作证②也直接导致了一点:端口冲突。

通常的frida链接情景可以说默认是“两台机器”—— 无论是物理链接还是模拟器、远程链接都是两台机器,这也意味着这里至少会有“两个ip”。在这个情况下,adb需要为目标机器的frida_server和开发机器的frida-tools之间做端口转发。如adb forward tcp:27043 tcp:27043。但是当WSA是处于高级网络这种,共用一张网卡,甚至ip都一样的情况下,端口冲突问题就显然而然的出现了。(甚至WSA需要通过127.0.0.1:58526来链接,普通的修改链接端口并不能很好地解决这个问题)

此外,注意这个选项是会影响到系统服务的。建议资源富余就开始终分配,不富余就部分运行中+使用时挂起一个应用
在这里插入图片描述

那么关闭了这个问题之后剩下的就很好做了,先简单测试Frida可用:

adb push frida_android_x64_server /data/local/tmp
adb connect 127.0.0.1:58526
adb shell
redfin:/ $ su root
redfin:/ # cd /data/local/tmp
redfin:/ # chmod 777 frida-server-16.0.19-android-x86_64
redfin:/data/local/tmp # ./frida-server-16.0.19-android-x86_64
frida-ps -Ua
 PID  Name            Identifier
4  --------------  ---------------------------------------
4139  Google          com.google.android.googlequicksearchbox
4139  Google          com.google.android.googlequicksearchbox
4231  Magisk          com.topjohnwu.magisk
2150  My Application  com.example.myapplication

用AS写一个测试demo,这里我使用了有点击选项的样例,添加了hook目标函数knockKnock:

.
.
.
binding.fab.setOnClickListener(new View.OnClickListener() {  
    @Override  
    public void onClick(View view) {  
        Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)  
                .setAction("Action", null).show();  
        konckKnock();  
    }  
});
.
.
.
public void konckKnock(){  
    Log.d("123","123");  
}
.
.
.

可以注意到调试机器选择里默认脸上了我们的wsa系统:
在这里插入图片描述

frida测试脚本,缝缝补补得来的:

function hook1(clz) {

    console.log("234");

    //var MainActivity = Java.use("com.example.myapplication");

    console.log("456");

    var konckKnock = clz.konckKnock;

    konckKnock.implementation = function () {

        var result = this.konckKnock()

        console.log("GetTime called", ',result =>', result)

        return result

    }

}

Java.perform(function () {

    Java.choose("dalvik.system.PathClassLoader", {

        onMatch: function (instance) {

            console.log(instance)

            console.log(Java.ClassFactory)

            var factory = Java.ClassFactory.get(instance)

            console.log(factory)

            try {

                var myClass = factory.use("com.example.myapplication.MainActivity")

                hook1(myClass)

                console.log("stop")

                return "stop"

            } catch (e) {

                console.log("next")

                // console.log(e)

            }

        },

        onComplete: function () {

            console.log("Done")

        }

    })

})

结果(记得点按钮)

frida -U 'My Application' -l .\enmuClass.js
     ____
    / _  |   Frida 16.0.19 - A world-class dynamic instrumentation toolkit
   | (_| |
    > _  |   Commands:
   /_/ |_|       help      -> Displays the help system
   . . . .       object?   -> Display information about 'object'
   . . . .       exit/quit -> Exit
   . . . .
   . . . .   More info at https://frida.re/docs/home/
   . . . .
   . . . .   Connected to Pixel 5 (id=127.0.0.1:58526)
Attaching...
dalvik.system.PathClassLoader[DexPathList[[zip file "/system/framework/android.hidl.manager-V1.0-java.jar"],nativeLibraryDirectories=[/system/lib64, /system_ext/lib64]]]
function k() {
    [native code]
}
[object Object]
next
dalvik.system.PathClassLoader[DexPathList[[directory "."],nativeLibraryDirectories=[/system/lib64, /system_ext/lib64, /system/lib64, /system_ext/lib64]]]
function k() {
    [native code]
}
[object Object]
next
dalvik.system.PathClassLoader[DexPathList[[zip file "/system/framework/android.hidl.base-V1.0-java.jar"],nativeLibraryDirectories=[/system/lib64, /system_ext/lib64]]]
function k() {
    [native code]
}
[object Object]
next
dalvik.system.PathClassLoader[DexPathList[[zip file "/system/framework/android.test.base.jar"],nativeLibraryDirectories=[/system/lib64, /system_ext/lib64]]]
function k() {
    [native code]
}
[object Object]
next
dalvik.system.PathClassLoader[DexPathList[[dex file "/data/data/com.example.myapplication/code_cache/.overlay/base.apk/classes4.dex", zip file "/data/app/~~ZuASwv4tbYUhGso4vQY7Ng==/com.example.myapplication-wE3oqwa5449uXSAVac29jg==/base.apk"],nativeLibraryDirectories=[/data/app/~~ZuASwv4tbYUhGso4vQY7Ng==/com.example.myapplication-wE3oqwa5449uXSAVac29jg==/lib/x86_64, /data/app/~~ZuASwv4tbYUhGso4vQY7Ng==/com.example.myapplication-wE3oqwa5449uXSAVac29jg==/base.apk!/lib/x86_64, /system/lib64, /system_ext/lib64]]]
function k() {
    [native code]
}
[object Object]
234
456
stop
Done
[Pixel 5::My Application ]-> GetTime called ,result => undefined

3. Ida On WSA

server:

adb push .\android_x64_server /data/local/tmp
redfin:/data/local/tmp # chmod 777 android_x64_server
redfin:/data/local/tmp # ./android_x64_server
IDA Android x86 64-bit remote debug server(ST) v7.7.27. Hex-Rays (c) 2004-2022
Listening on 0.0.0.0:23946...

ip,在安卓设置的wifi里查看:
在这里插入图片描述

ida远程附加调试linux,非调试arm linux/android:
在这里插入图片描述

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/764237.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

matlab滤波器设计-IIR滤波器的设计与仿真

matlab滤波器设计-IIR滤波器的设计与仿真 1 引言 在现代通信系统中,由于信号中经常混有各种复杂成分,所以很多信号的处理和分析都是基于滤波器而进行的。但是,传统的数字滤波器的设计使用繁琐的公式计算,改变参数后需要重新计…

【Matlab】智能优化算法_猎豹优化算法CO)

【Matlab】智能优化算法_猎豹优化算法CO 1.背景介绍2.数学模型2.1 搜索策略2.2 坐等策略2.3 攻击策略2.4 假设 3.文件结构4.伪代码5.详细代码及注释5.1 CO.m5.2 CO_VectorBased.m5.3 Get_Functions_details.m 6.运行结果7.参考文献 1.背景介绍 猎豹(Achinonyx jubat…

Kubernetes部署服务到集群中的指定节点

# kubectl get node NAME STATUS ROLES AGE VERSION k8s-master Ready master 25h v1.17.3 k8s-node2 Ready <none> 25h v1.17.3 集群只有两个节点&#xff0c;这里打算将应用部署在k8s-node2节点上&#xff0c;需要先记下这个节点的…

【3】Vite Vue3 用户、角色、岗位选择组件封装

在当今前端开发的领域里&#xff0c;快速、高效的项目构建工具以及使用最新技术栈是非常关键的。ViteVue3 组合为一体的项目实战示例专栏将带领你深入了解和掌握这一最新的前端开发工具和框架。 作为下一代前端构建工具&#xff0c;Vite 在开发中的启动速度和热重载方面具有突…

攻不下dfs不参加比赛(十三)

标题 为什么练dfs题目为什么练dfs 相信学过数据结构的朋友都知道dfs(深度优先搜索)是里面相当重要的一种搜索算法,可能直接说大家感受不到有条件的大家可以去看看一些算法比赛。这些比赛中每一届或多或少都会牵扯到dfs,可能提到dfs大家都知道但是我们为了避免眼高手低有的东…

24 - 数组和广义表 - 二维数组

前面我们学习了一维数组、今天来看看二维数组,比一维数组更加复杂! 数组的特点 存储的空间连续 存储类型相同 可以使用地址+偏移快速访问 二维数组定义 二维数组本质上是以数组作为数组元素的数组,即“数组的数组”,语法格式如下: 类型说明符 数组名[常量表达式][常量表达…

977.有序数组的平方

977.有序数组的平方 1.暴力排序 这道题最直观的方法在于&#xff0c;将数组中的每个数平方之后&#xff0c;排个序 public int[] sortedSquares(int[] nums) {int[]ans new int[nums.length];for(int i0;i<nums.length;i){ans[i] nums[i]*nums[i];} Arrays.sort(ans);ret…

人工智能LLM模型:奖励模型的训练、PPO 强化学习的训练、RLHF

人工智能LLM模型&#xff1a;奖励模型的训练、PPO 强化学习的训练 1.奖励模型的训练 1.1大语言模型中奖励模型的概念 在大语言模型完成 SFT 监督微调后&#xff0c;下一阶段是构建一个奖励模型来对问答对作出得分评价。奖励模型源于强化学习中的奖励函数&#xff0c;能对当前…

高通芯片android进入EDL模式 下载 热启动 串口指令

参考&#xff1a;高通方案的Android设备几种开机模式的进入与退出_edl模式怎么退出_Rookie20190715的博客-CSDN博客 切换为EDL模式 向串口发送 4b 65 01 00 54 0f 7e 或者adb reboot edl

Ceph的安装部署

文章目录 一、存储基础1.1 单机存储设备1.2 单机存储的问题1.3分布式存储&#xff08;软件定义的存储 SDS&#xff09; 二、Ceph 简介2.1 Ceph 优势2.2 Ceph 架构2.3 Ceph 核心组件2.4 Pool、PG 和 OSD 的关系&#xff1a;2.5 OSD 存储后端2.6 Ceph 数据的存储过程2.7 Ceph 版本…

PID控制系列--(1、最形象的PID)

目录 1、 比例控制系统的标准结构2、最简单的例子3、第二个例子4、积分控制器6、微分控制7 总结 今天 看到了B站上一个叫洋葱auto的UP主搬来的介绍PID控制的视频&#xff0c;感觉讲得形象易懂&#xff0c;为便于让和我一样看了无数文章还是不能很好理解PID控制本质的人共同分享…

2. DATASETS DATALOADERS

2. DATASETS & DATALOADERS PyTorch提供了两个数据基元&#xff1a;torch.utils.data.DataLoader和torch.uutils.data.data集&#xff0c;允许使用预加载的数据集以及自己的数据。数据集存储样本及其相应的标签&#xff0c;DataLoader在数据集周围包装了一个可迭代项&…

Sentinel整合OpenFegin

之前学习了openFeign的使用&#xff0c;我是超链接 现在学习通过Sentinel来进行整合OpenFegin。 引入OpenFegin 我们需要在当前的8084项目中引入对应的依赖 <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-sta…

网络套接字编程(一)(UDP)

gitee仓库&#xff1a;https://gitee.com/WangZihao64/linux/tree/master/chat_udp 预备知识 源IP地址和目的IP地址 它是用来标识网络中不同主机的地址。两台主机进行通信时&#xff0c;发送方需要知道自己往哪一台主机发送&#xff0c;这就需要知道接受方主机的的IP地址&am…

【数学建模】利用C语言来实现 太阳赤纬 太阳高度角 太阳方位角 计算和求解分析 树木树冠阴影面积与种植间距的编程计算分析研究

太阳赤纬的计算 #include <stdio.h> #include <math.h>double calculateDelta(int year, int month, int day, int hour, int minute, int second) {int n, n0;double t, theta, delta;// 计算n和n0n month * 30 day;n0 79.6764 0.2422 * (year - 1985) - ((y…

35+大龄程序员从焦虑到收入飙升:我的搞钱副业分享。

37岁大龄程序员&#xff0c;一度觉得自己的职场生涯到头了。既没有晋升和加薪的机会&#xff0c;外面的公司要么接不住我的薪资&#xff0c;要么就是卷得不行&#xff0c;无法兼顾工作和家庭&#xff0c;感觉陷入了死局…… 好在我又重新振作起来&#xff0c;决定用副业和兼职填…

2.3Listbox列表部件

2.3Listbox列表部件 创建主窗口 window tk.Tk() window.title(my window) window.geometry(200x200)创建一个label用于显示 var1 tk.StringVar() #创建变量 l tk.Label(window,bgyellow,width4,textvariablevar1) l.pack()创建一个方法用于按钮的点击事件 def print_s…

DateTimePicker基本用法

作用&#xff1a;日期时间控件&#xff0c;用于手动选择日期与时间。 常用属性&#xff1a; 常用事件&#xff1a; 后台代码示范&#xff1a; //日期变化时获取日期private void dateTimePicker1_ValueChanged(object sender, EventArgs e){textBox2.Text dateTimePicker1.Te…

(原创)适合小白的AI算法学习路线

大家好啊&#xff0c;我是董董灿。 之前写了一篇文章&#xff1a;有前途&#xff01;大模型也需要AI算子开发岗&#xff01;有同学看了之后&#xff0c;在问AI算子开发需要如何学习&#xff0c;有没有学习路线? 当然是有的了。 今天周末在家&#xff0c;就梳理了一下该岗位需…

pdf水印在哪里设置?超实用解决方法分享

在工作中&#xff0c;我们常常需要发送PDF文件给他人&#xff0c;为了保护文件的安全性&#xff0c;防止被他人盗用或篡改&#xff0c;我们通常会给PDF文件添加水印。添加水印可以有效地标识文件的所有权&#xff0c;并增加文件的可追溯性。然而&#xff0c;有许多人不清楚如何…