Android RNDIS gadget Windows免驱修改方案
过程简单粗暴,拿到竞品的设备,然后使用UsbTreeView查看设备的相关描述符。
对比发现接口抽象描述符和接口描述符不一致,直接修改Linux RNDIS gadget 驱动,将驱动中有关的两个描述符结构体都改成预想的配置。
diff --git a/kernel-4.19/drivers/usb/gadget/function/f_rndis.c b/kernel-4.19/drivers/usb/gadget/function/f_rndis.c
index 0d8e4a3..a83a591 100644
--- a/kernel-4.19/drivers/usb/gadget/function/f_rndis.c
+++ b/kernel-4.19/drivers/usb/gadget/function/f_rndis.c
@@ -113,9 +113,12 @@ static struct usb_interface_descriptor rndis_control_intf = {
/* .bInterfaceNumber = DYNAMIC */
/* status endpoint is optional; this could be patched later */
.bNumEndpoints = 1,
- .bInterfaceClass = USB_CLASS_COMM,
- .bInterfaceSubClass = USB_CDC_SUBCLASS_ACM,
- .bInterfaceProtocol = USB_CDC_ACM_PROTO_VENDOR,
+ // .bInterfaceClass = USB_CLASS_COMM,
+ // .bInterfaceSubClass = USB_CDC_SUBCLASS_ACM,
+ // .bInterfaceProtocol = USB_CDC_ACM_PROTO_VENDOR,
+ .bInterfaceClass = USB_CLASS_WIRELESS_CONTROLLER,
+ .bInterfaceSubClass = USB_CDC_SUBCLASS_RNDIS,
+ .bInterfaceProtocol = USB_CDC_ACM_PROTO_AT_PCCA101_WAKE,
/* .iInterface = DYNAMIC */
};
@@ -174,9 +177,12 @@ rndis_iad_descriptor = {
.bFirstInterface = 0, /* XXX, hardcoded */
.bInterfaceCount = 2, // control + data
- .bFunctionClass = USB_CLASS_COMM,
- .bFunctionSubClass = USB_CDC_SUBCLASS_ETHERNET,
- .bFunctionProtocol = USB_CDC_PROTO_NONE,
+ // .bFunctionClass = USB_CLASS_COMM, // 0x02
+ // .bFunctionSubClass = USB_CDC_SUBCLASS_ETHERNET, // 0x06
+ // .bFunctionProtocol = USB_CDC_PROTO_NONE, // 0x00
+ .bFunctionClass = USB_CLASS_WIRELESS_CONTROLLER, // 0xe0
+ .bFunctionSubClass = USB_CDC_SUBCLASS_RNDIS, // 0x01
+ .bFunctionProtocol = USB_CDC_ACM_PROTO_AT_PCCA101_WAKE, // 0x03
/* .iFunction = DYNAMIC */
};
修改完成后的情况

其实这个问题难点并不是在修改描述符上,而是找微软RNDIS驱动资料上。Windows上虽然自带rndis驱动,但是找了半天也没找到对应的inf文件,也就无从知道rndis相关的usb描述符配置需求。只能找竞品对比。
Android RNDIS gadget Windows免驱修改方案的更多相关文章
- [Xamarin.Android] 結合Windows Azure與Google cloud message 來實現Push Notification (转帖)
這一篇要討論如何使用Xamarin.Android 整合GCM以及Windows Azure來實作Android手機上的推播通知服務. 這篇文章比較著重概念的部分,在開始讀這篇之前,也可以先參考一下X ...
- linux(以ubuntu为例)下Android利用ant自动编译、修改配置文件、批量多渠道,打包生成apk文件
原创,转载请注明:http://www.cnblogs.com/ycxyyzw/p/4555328.html 之前写过一篇<windows下Android利用ant自动编译.修改配置文件.批量 ...
- Android为TV端助力:(转载)修改TextView字体样式
一.开篇 因为 Android 字体相关的内容还比较多的.有时候其实我们只需要调整一下属性就可以满足设计师的需求,或者是一个退后的方案(毕竟有发版的时间卡住了),有一些效果可以大概满足需求. 那么本文 ...
- Android Studio for windows环境搭建
Android Studio环境搭建 个人博客 欢迎大家多多关注该独立博客: csdn博客 一直想把自己的经验分享出来,记得上次写博客还是ok6410的笔记,感觉时代久远啊.记得那个时候我还一心 ...
- USB免驱RFID读写器编程解析之一:智能卡篇
随着RFID应用的普及,越来越多的软件工程师需要使用RFID读写器编程来实现自己的需求.为了使软件工程师更快的了解RFID读写器的使 用,本文选择一款市面上常用的USB免驱RFID读写器SDT-HA来 ...
- Windows 程序自动更新方案: Squirrel.Windows
Windows 程序自动更新方案: Squirrel.Windows 1. Squirrel Squirrel 是一组工具和适用于.Net的库,用于管理 Desktop Windows 应用程序的安装 ...
- Android 高清加载巨图方案 拒绝压缩图片
Android 高清加载巨图方案 拒绝压缩图片 转载请标明出处: http://blog.csdn.net/lmj623565791/article/details/49300989: 本文出自:[张 ...
- Android之hint提示字体大小修改,显示完全
Android之hint提示字体大小修改,显示完全 1.工作中遇到一个问题,就是自定义EditText的hint提示在超大字体下会显示不全, 2.然后在网上搜索了一下,在这里记录一下,分享给大家,在此 ...
- 关于WIndows内核自映射方案的通俗解释
在一次操作系统课程上听老师说了这么一个有意思的东西,windows的自映射方案居然达到了把4K的页目录的线性地址“藏”在4M页表里的效果,感觉甚是奇特,于是乎就想着说怎么去算.光会算之后仍旧不满足,我 ...
- windows下如何修改远程登录端口
windows下如何修改远程登录端口 windows远程桌面默认端口为3389,修改 方法如下:在"开始>运行"中输入"regedit" 点击“确定”,打 ...
随机推荐
- java程序设置开机自启
Linux系统jar包开机自启 第一步:创建service文件 sudo nano etc/systemd/system/myapp.service 第二步:将下面代码复制到刚才创建的文件里面,保存 ...
- vue3 使用swiper轮播组件
本地环境信息 node版本: nodejs : v18.20.4 npm : 10.7.0 vue版本 "dependencies": { "vue": &qu ...
- att&ack学习笔记4
初识ATT&CK框架前言:ATT&CK这一概念自2014年提出时起,作为安全分析领域中的前沿研究一直在默默地发挥着自己的影响,但是由于其概念在当时过于超前以至于并没有引起多大反响,直至 ...
- .NET 8.0 开源在线考试系统(支持移动端)
前言 推荐一款基于.NET 8.0 免费开源跨平台在线考试系统,系统不仅支持桌面端,还特别优化了移动端的用户体验. 通过本系统可以轻松搭建自己的在线考试平台,实现随时随地的测试与评估. 本文将详细介绍 ...
- 深度学习入门笔记——DataLoader的使用
如何使用数据集DataSet? 在介绍DataLoader之前,需要先了解数据集DataSet的使用.Pytorch中集成了很多已经处理好的数据集,在pytorch的torchvision.torch ...
- C240817D. 模拟赛:树上dp(以i为起点)+set操作
C240817D. 模拟赛 比较显然的树上dp, 但是维护set比较烦 考场上其实自己是定义 \(f[i]\) 是以 \(i\) 结尾, 然后这样的话单次更新根本做不到 \(O(logN)\). 反应 ...
- TP6 使用 nusoap为第三方webservice调用插件
composer下载插件 composer require nusoap/nusoap use NuSoap\Client\Client; class Index extends BaseContro ...
- Docker容器制作DockerFile
Docker换国内源和简单操作 vim /etc/docker/daemon.json { "registry-mirrors": ["http://hub-mirror ...
- Visual Studio 快速分析 .NET Dump 文件
前言 在开发和维护 .NET 应用程序的过程中,有时会遇到难以捉摸的性能瓶颈或内存泄漏等问题.这些问题往往发生在生产环境中,难以复现.为了更准确地诊断这些运行时问题,通常会收集应用程序在生产环境中的内 ...
- Vulhub WebLogic漏洞复现
目录 前言 任意文件上传漏洞(CVE-2018-2894) 管理控制台未授权RCE漏洞(CVE-2020-14882 & CVE-2020-14883) 未授权RCE漏洞(CVE-2023-2 ...