一:蓝牙开关状态调研
1.可以获取到附近蓝牙设备的信息,获取不到连接状态和历史连接列表
2.可以获取到当前音频输出是否是蓝牙输出
详情如下:
1.可以获取到附近蓝牙设备的信息,获取不到连接状态和历史连接列表
获取蓝牙设备信息参考:
博客蓝牙4.0**BLE **:https://www.jianshu.com/p/b62081c427a4
demo:https://github.com/CherishJoyBy/Bluetooth4.0Demo
博客传统蓝牙:https://www.jianshu.com/p/3b404bd672a8
demo: https://github.com/xuzhengquan/BlueToothDemo/
其他:https://www.jianshu.com/p/0879319f5c47
2.可以获取到当前音频输出是否是蓝牙输出 -代码如下:
AVAudioSessionRouteDescription *currentRount = [AVAudioSession sharedInstance].currentRoute;
AVAudioSessionPortDescription *outputPortDesc = currentRount.outputs[0];
**if**([outputPortDesc.portType isEqualToString:@"BluetoothA2DPOutput"]){
NSLog(@"当前输出的线路是蓝牙输出,并且已连接");
**return** **YES**;
}**else**{
NSLog(@"当前是spearKer输出");
**return** **NO**;
}
二: Airdrop分享信息调研
1.系统文件分享可以hook并获取到分享文件的路径
2.微信的分享可以hook到分享行为,获取不到文件
详情如下:
1.系统文件分享可以hook并获取到分享文件的路径
通过hook UIViewController_presentViewController方法,如果当前vc是[UIActivityViewController class],获取到当前vc的activityItemValues,便利这个values对象数组,获取到分享的文件路径或内容
2.微信的分享可以hook到分享行为,获取不到文件
通过hook UIApplication_openUR方法,如果当前使用的是微信分享协议:@"sendreq/?wechat_app_bundleId”,则说明正在使用微信分享,获取不到具体分享内容
三:usb调研
1.可以通过电量是否是充电状态获取设备是否连线—有误判不准确
2.获取不到usb连接行为。目前可以通过mac和iphone通过usb协议传输数据但是需要两端同时支持,暂时无法仅从iphone获取到当前是否连接
参考项目:libimobiledevice, DarkLightning ,peertalk,github上有源码
博客: http://www.zhaoxiaodan.com/ios/ituns与iphone的通信协议usbmuxd解析.html
https://iosre.com/t/usbmuxd-idevice-usb/1482
https://stackoverflow.com/questions/6161318/how-to-determine-whether-ios-device-is-connected-to-desktop-computer-and-itunes
libimobiledevice使用 https://www.jianshu.com/p/a282fbcafaad
详情如下:
Mac端应用通过 PTUSBDeviceDidAttachNotification: 4170,这个通知获取当前USB连接的设备,然后和设备发起网络请求
这个过程,iPhone先开启的服务,相当于server,例如iPhone的app中起一个端口2345服务
Mac通过usb接口去访问iPhone设备指定端口的服务发送数据包,例如访问http://127.0.0.1:2345
通知信息如下:
NSConcreteNotification 0x600000c90000 {name = PTUSBDeviceDidAttachNotification; object =
DeviceID = 4170;
MessageType = Attached;
Properties = {
ConnectionSpeed = 480000000;
ConnectionType = USB;
DeviceID = 4170;
LocationID = 336592896;
ProductID = 4776;
SerialNumber = "00008020-001459EC3E32002E";
UDID = "00008020-001459EC3E32002E";
USBSerialNumber = 00008020001459EC3E32002E;
};
}}
四:关于外设:
需要定义外设协议才能追踪行为,需要定制化分析
https://blog.csdn.net/qq_34047841/article/details/72822480
demo: EADemo
EADemo( https://developer.apple.com/library/content/samplecode/EADemo/Introduction/Intro.html )