Minicap编译及简单使用

news2024/11/28 14:19:31

什么是MiniCap

官方说法:Minicap提供了一个套接字接口,用于从Android设备流式传输实时屏幕捕获数据。它旨在用作更大程序中的组件,因此仅凭其本身并不是非常有用。例如,它在STF中用于远程控制。

个人理解:Minicap是用C++以jni的方式运行在Android手机里的一个应用程序。至少在Android 10以下还是难逢对手的。

编译过程

1. 首先先下载minicap

openstf/minicap: Stream real-time screen capture data out of Android devices. (github.com)

git clone https://github.com/openstf/minicap.git

2. 下载jpeg-turbo库子模块

git submodule init 
git submodule update

如果下载失败的话,可以到openstf的仓库下手动下载,并且将目录下的jni/vendor/ligjpeg-turbo复制到minicap/jni/vendor下

openstf/android-libjpeg-turbo: Standalone Android.mk configuration for libjpeg-turbo. (github.com)

3. 获取基础参数

adb shell getprop ro.product.cpu.abi 
//arm64-v8a abi类型 
adb shell getprop ro.build.version.sdk 
//29 sdk版本 
adb shell getprop ro.build.version.preview_sdk 
//0 
adb shell getprop ro.build.version.release 
//10 android版本 
adb shell wm size 
//1080x1920

4. 使用系统自带的ndk进行编译

//根据上一步获取到的sdk版本来运行。 
ndk-build.cmd APP_PLATFORM=android-29 PLATFORM_SDK_VERSION=29 
//ndk-build.cmd具体指向了ndk文件夹里面防止该文件的路径

需要注意的是NDK的版本不能太低,比如使用NDK-R13,在编译arm64-v8a时就会出错

D:/minicap/jni/vendor/libjpeg-turbo/jni/vendor/libjpeg-turbo/libjpeg-turbo-1.4.1/simd/jsimd_arm64_neon.S:33:1: error: unknown directive .arch armv8-a+fp+simd ^ make: *** [obj/local/arm64-v8a/objs/jpeg-turbo/libjpeg-turbo-1.4.1/simd/jsimd_arm64_neon.o] Error 1

出现这个问题主要是因为旧版的NDK识别不出.arch的问题,这个问题只需要使用高版本的ndk就行。

5. 编译成功

编译成功后,在minicap/libs会出现几个目录arm64-v8a、armeabi-v7a、x86、x86_64,是与对应的系统相对应的。我们可以通过adb指令来获取需要操作的手机是哪一种

adb shell getprop ro.product.cpu.abi 
//根据结果将对应的minicap防止到手机的临时文件夹,比如 //这边如果说sdk的版本>=16的话,就Push minicap,否则push minicap-nopie 
//根据步骤3的abi版本把对应的minicap push到手机里 
adb push minicap/libs/arm64-v8a/minicap /data/local/tmp 
//这边的minicap需要minicap.so动态库,所以需要将minicap.so也一齐丢进去 
adb push minicap/jni/minicap-shared/aosp/libs/android-29/arm64-v8a/minicap.so /data/local/tmp 
//给minicap赋权 
adb shell chmod 777 /data/local/tmp/minicap*

6. 运行minicap

//根据之前wm size的结果获取到分辨率
//测试是否可运行
adb shell LD_LIBRARY_PATH=/data/local/tmp /data/local/tmp/minicap -P 1080x1920@1080x1920/0 -t 
//如果测试成功的话
adb shell LD_LIBRARY_PATH=/data/local/tmp /data/local/tmp/minicap -P 1080x1920@1080x1920/0
//其中,@前一个为真实窗口大小,后一个为希望映射的窗口大小

这时候,如果测试失败的话,可能是因为版本太高了,而官方的minicap只提供到abi 29,下面提供两个库可以直接替换掉minicap.so:

varundtsfi/Android12Support_withso: Android 12 support with minicap.so file. (github.com)

DeviceFarmer/minicap: Stream real-time screen capture data out of Android devices. (github.com)

结果展示 

 由于通过adb shell运行了minicap,这样minicap会在手机内部开启一个虚拟端口minicap,我们需要通过adb forward进行端口映射。

adb forward tcp:1717 localabstract:minicap
cd example
node app.js PORD=9002

打开浏览器localhost:9002就可以看到了手机

 

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

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

相关文章

如何检查 Android 设备是否支持 Widevine DRM

想知道您的 Android 设备是否可以流式传输来自 Netflix 和 Amazon Prime Video 的高清视频?这是检查 Widevine DRM 支持的方法! 许多流媒体服务,如 Netflix、Disney、Hulu 等,使用各种类型的数字版权管理 (DRM) 来保护其内容不被…

VulnHub项目:Hogwarts dobby

靶机地址:Hogwarts: Dobby ~ VulnHub 哈利波特也是初中时候最喜欢的电影~Dobby多比是马尔福加的奴隶精灵,出现在第二部密室中,后来被哈利波特的袜子所拯救,成为了一只快乐自由的小精灵,最后它在死亡圣器中&#xff0c…

keil从非0x08000000地址调试STM32单片机程序方法

在使用stm32单片机的串口IAP升级功能时,需要调试bootloader程序和app程序,一般bootloader的程序都是从0x08000000地址开始运行的,使用keil软件可以直接进行仿真,但是如果调试app程序的话,由于它不是从0x08000000地址开…

Java程序判断是否是回文

1 问题 利用java程序判断是否是回文。 2 方法 利用函数库,将输入的字符串倒置,看倒置后的字符串和原来的字符串是否一样,然后得出结论。 package practice; import java.util.Scanner; public class Huiwen { public static void main(St…

【MySQL数据库 | 第五篇】DDl操作数据库

目录 🤔DDL介绍: 🤔语法详解: 1.查询: 1.查询所有数据库: 示例:查询自带数据库 2.查询当前数据库: 2.创建: 示例:创建一个名字叫做itcast的数据库&…

第一期丨INTERSPEECH 2023 论文预讲会

INTERSPEECH 2023 论文预讲会是由CCF语音对话与听觉专委会、语音之家主办,旨在为学者们提供更多的交流机会,更方便、快捷地了解领域前沿。活动将邀请 INTERSPEECH 2023 录用论文的作者进行报告交流。 INTERSPEECH 2023 论文预讲会第一期邀请到清华大学和…

【新版】系统架构设计师 - 系统工程与信息系统基础

个人总结,仅供参考,欢迎加好友一起讨论 文章目录 架构 - 系统工程与信息系统基础考点摘要系统工程概念系统工程方法生命周期阶段及方法 信息系统诺兰模型信息系统的生命周期信息系统的建设原则信息系统的开发方法信息系统的分类信息化系统业务处理系统【…

【高危】Apache Cassandra 存在越权漏洞导致远程命令执行

漏洞描述 Apache Cassandra 是 Apache 基金会的一个分布式 Nosql 数据库。 Apache Cassandra 的受影响版本中,由于没有对JMX/nodetool权限的用户做限制,当启动FQL/Audit日志时,拥有 JMX/nodetool 权限的攻击者可以以 cassandra 的身份权限执…

QMediaPlayer 打包解码器注意事项

程序打包注意事项 如果需要把我们的程序进行打包,给客户安装使用,那么还需要引导客户额外安装LAVFilters,显得比较麻烦。接下来,介绍,如何将解码器打包进安装包。 1、QMediaPlayer找到解码器的原理 先来看看解码器&am…

Android 各版本特性

一:介绍 我们可以看到Android版本对应的Api版本 二:Android 6.0 (API 23) Google I/O 2015大会如约已于2015年5月28日举行。在发布会上代号为“Marshmallow(棉花糖)”的安卓6.0系统正式推出。 Android …

LVS简介及LVS-NAT负载均衡群集的搭建(要像记得回家的路一样记得理想和远方)

文章目录 一、LVS群集的简介1.群集的含义和应用场景2.性能扩展方式群集的分类负载均衡(LB)高可用(HA)高性能运算(HPC) 二、LVS负载均衡群集简介及搭建1.负载均衡群集架构第一层,负载调度器&…

Linux - sudo:/etc/sudoers 可被任何人写

错误如下: sudo: /etc/sudoers 可被任何人写 sudo: 没有找到有效的 sudoers 资源,退出 sudo: 无法初始化策略插件 需求就是除了root账号,别的账号也能执行mkdir等命令 1. 先用root把 chmod 777 /etc/sudoers 设置可修改 2. 添加一条 xxx…

JIRA维护记——使用原实例位置恢复数据

一、出现问题 昨天下班了,同事反馈Jira又不能使用了。想都不用想,肯定是磁盘空间不足了,因为已经出现过几次了。之前都是清理一下磁盘空间即可,都不用重启Jira。 今天一上班就开始清理磁盘空间,把一些日志啊&#xf…

数据在内存中的存储(打入“内部”深度剖析哦)

前面的文章介绍中,只对整数在内存中的存储进行了简单介绍,可是只了解这么一点点是远远不够的呢,这篇文章呢就对数据在内存中的存储的几个重难点进行了详细的介绍哦,希望对爱学习的小伙伴们有所帮助~ 目录 一.数据类型…

【Protobuf速成指南】Message中如何定义“数组”?

文章目录 2.0一、字段规则1.1 规则1.2 改进1.3 消息类型作为字段类型 二、repeated字段使用方式三、Contact2.01.write.cc2.read.cc3. 查看二进制信息①hexdump② --decode选项 2.0 本系列文章将通过对通讯录项目的不断完善,带大家由浅入深的学习Protobuf的使用。这…

win10的另一种美化字体的方式,使用noMeiryoUI

目录 1. 前提2. 字体选择3. 查看已经安装的字体并查看效果4. 安装软件修改系统字体5. 修改浏览器字体 1. 前提 21年的时候写了一篇文章,《Windows10下美化字体,达到类似mac的效果》,当时还很迷恋macType这个软件的使用,觉得好牛逼…

Linux——安装VMwaretools实现文件共享功能

作为一个Linux初学者,应该熟悉相关的文件下载和安装以及简单的配置命令,下面通过安装一个VMwaretools来实现window环境和Linux环境下文件的共享功能的实现。 一、安装VMwaretools 点击重新安装后,会在桌面上看到有一个光盘,则代表…

单片机的基础知识和原理

单片机是一种集成了中央处理器(CPU)、内存、输入/输出(I/O)端口和其他外设的小型计算机系统。它通常用于嵌入式系统,如家电、汽车电子、工业控制等领域。 下面是单片机的基础知识和原理的概述: 架构&…

Linux系统安装——VMware15.5安装centos7.6 (附资料下载+联网配置+踩坑总结)

一、安装虚拟机VMware15.5 VMware虚拟机安装Win10,安装包秘钥/系统镜像/激活工具如下:(主要这个地址不限速,方便!) https://www.123pan.com/s/g520Vv-Dg2id (遇到会拦截下载任务的浏览器,直接换浏览器下载即可&#xf…

【LVS负载均衡群集】

目录 一、企业群集应用概述1、群集的含义2、企业群集分类3、负载均衡群集架构1、负载均衡的结构2、负载均衡群集工作模式分析 二、LVS的三种工作模式1、NAT 模式地址转换 2、TUN模式IP隧道 3、DR模式直接路由 三、实战NAT模式 LVS负载均衡群集部署1.部署共享存储(NF…