最近针对某应用,进行应用行为安全分析时。
测试同事反馈同一应用,有的设备不弹本地权限弹窗,有的会弹出本的权限申请弹窗。
经过排查发现 如果不加载自己写Tweak插件 弹窗不会弹出,因此得出结论是自己Tweak里面的某些Hook函数引起了app弹出本地网络权限的弹窗
最后,通过对代码片段进行测试,存在弹窗的地方 :获取IDFA、 获取IDFV、 智能家居HomeKit、 定位Location相关、 网络访问NetWork、 NFC、 Wi-Fi、 通知的API
测试一 : 注释以上地方的相关拦截函数—————— 不弹出
测试二 :在拦截函数内部不操作任何代码 直接调用原方法 ———— 不弹出
如:通知的API
-(void)requestAuthorizationWithOptions:(UNAuthorizationOptions)options completionHandler:(void (^)(BOOL granted, NSError *error))completionHandler{
%orig; // ——> 这里直接调用原方法
}
%end
测试三 :在拦截函数内部添加代码 (输处一句日志 )再调用原方法 ———— 弹出
如:通知的API
-(void)requestAuthorizationWithOptions:(UNAuthorizationOptions)options completionHandler:(void (^)(BOOL granted, NSError *error))completionHandler{
NSLog(@"推送通知权权限申请"); // ——> 添加只打印一句日志的代码
%orig;
}
%end
之后又测试了
在Wi-F的两个函数定义一个String 的对象会弹出来
如果改成BOOL 测试的应用不会弹出本地权限弹窗
// Wi-Fi Mac地址
-(NSString *)BSSID{
NSString *_bssid = %orig;
BOOL flags = YES;
return _bssid;
}
// Wi-Fi 网络信号强度
-(double)signalStrength{
double _signalStrength = %orig;
BOOL flags = YES;
return _signalStrength;
}
对此。不知道是因为什么机制导致的
小弟新手 特来请教各位了解这方面的大佬 给个建议见解或相关文献 指点一下
感谢各位大佬了