小米mdb方案分析


前段时间看到小米说他们利用了mdb方案解决adb劫持问题,刚好手头有台小米2S机器,于是乎做了下面的分析,

首先,完成安装小米手机驱动,我们来对比下mdb和adb的接口:
在设备管理器窗口可以看到Android设备类下面有两个设备接口,分别是adb和mdb,如图1所示:
1
下面我们来分别看下这2个设备接口的属性,
硬件ID:
2
3
兼容ID:
4
5
设备类 GUID:
6
7
总线类型 GUID:
8
9
从上面的图示比对可以看出关键在于兼容 Id标签页当中的SubClass项,adb为0x42,而mdb为0x43;
比对出区别后我们来看看adb源码,修改adb源码并编译出来测试下,
1.打开 adb 源码中的 adb.h
2.搜索 ADB_SUBCLASS
3.在 #define ADB_PROTOCOL 0x1 这行的下方加入代码
#define MDB_CLASS 0xff
#define MDB_SUBCLASS 0x43
#define MDB_PROTOCOL 0x1
4.打开 adb 源码中的 transport_usb.c
5.搜索 is_adb_interface
6.在
if (usb_class == ADB_CLASS && usb_subclass == ADB_SUBCLASS && usb_protocol == ADB_PROTOCOL)
{
return 1;
}
下面加入
if (usb_class == MDB_CLASS && usb_subclass == MDB_SUBCLASS && usb_protocol == MDB_PROTOCOL)
{
return 1;
}
备注:adb当中关于VID过滤也是在这个函数当中,本文仅演示adb源码中加入对mdb的支持,如需要修改VID检测的可以适当修改。
最后编译修改后的源码并执行adb devices命令会看到设备列表当中出现了两个设备,如下图所示: 10
 不难发现mdb也是adb修改而来。具体就不深入了,各位自己研究了。

合作联系邮箱:cofface#cofface.com(请将#替换为@)

转载请注明来源:Cofface Blog » 小米mdb方案分析

赞 (7) 打赏

感谢您的支持,我会继续努力的!

支付宝扫一扫打赏