ikeymonitor
背景:
在越狱手机上安装 ikeymonitor 插件之后,日志中能实时记录用户的输入文本(密码除外,密码采用了密码控件),可能存在安全隐患。
解决思路:
1、 遍历手机已安装的应用,判断是否安装 ikeymonitor 插件
思路不可行,ikeymonitor 是一个插件,本人理解中 ikeymonitor 不是一个应用,没有 Url scheme。
2、 遍历程序启动时的动态库,通过分析安装 ikeymonitor 之后和未安装 ikeymonitor 时的区别,来检测是否安装 ikeymonitor
思路验证:
1、 越狱手机的准备
PP助手越狱,注意:越狱时,需要寻找相对应的 iTunes 版本
2、日志文件的分析比较
左边为安装了 ikeymonitor 的日志,右边为未安装 ikeymonitor 的日志
通过对比发现:libcupolicy.dylib 未安装 ikeymonitor 插件时也存在;keychain.dylib 在安装 ikeymonitor 插件之后会存在,卸载之后就没有了
3、代码实现,为防止出错,目前仅在越狱环境下进行检测,且当检测到插件时只给出提示,不影响用户使用对
#import <mach-o/dyld.h>
if ([CSIIDeviceInfo isJailbroken]) {
// 越狱环境
uint32_t count = _dyld_image_count();
for (uint32_t i = 0 ; i < count; ++i) {
NSString *dyldNameString = [[NSString alloc] initwithUTF8String:_dyld_get_image_name(i)];
NSLog(@"%@", dyldNameString);
// 通过比对观察,安装ikeymonitor插件时,会加载keychain.dylib动态库,未安装此插件时,不会加载
// 注意:此方法有待时间验证
if (dyldNameString.length > 0 && [dyldNameString rangeOfString:@"keychain.dylib"].length > 0) {
[CSIIProjectUtils showCenterInfoWithmessage:@"检测到当前手机环境为越狱环境且可能安装了键盘记录插件,\n请谨慎操作!"];
break;
}
}
}
注:keychain.dylib 和钥匙串无关,在未安装 ikeymonitor 状态下,使用钥匙串相关方法,不会加载 keychain.dylib 动态库
后记
在和朋友聊天时,有人说 _dyld_image_count 和 _dyld_get_image_name 是私有方法,过不了审核。虽然我自己认为不是,但心里还是一直挺担心,提交 APP Store 尝试后,也不知道是运气好,还是别的什么原因,比较幸运的过审了。
_dyld_image_count 和 _dyld_get_image_name 能够到头文件中找到,但到 Xcode 的帮助文档中没搜索到,也不清楚到底是不是私有方法。
关于私有方法,以前的理解是到头文件中找不到的方法。也不知道理解的对不对,网上也没有找到比较详细的解释。愿随着技术的加深能够进一步区分清楚。
文章最后发布于: 2018-03-20 15:03:32
相关阅读
一部手机,不仅仅是通话和上网的工具,更是跨越时空的情感桥梁。手机已经成为当下社会人们情感的又一个寄托。甚至很多人已经离不开手
手机淘宝如何实名认证?很多买家朋友都想要知道手机淘宝如何实名认证,具体的淘宝认证又是怎样的,今天就让小编给大家做一些说明手机
iOS之UITextField怎么自定义键盘的return键
//初始化textfield并设置位置及大小 UITextField *text = [[UITextField alloc]initWithFrame:CGRectMake(20, 20, 130, 30)]
在没有USB线的情况下,想要下载东西,在以前我们只能想到把存储卡拔下来,用读卡器来连接电脑下载。而下载完的安装程序又要手动安装。
ipad pro2018发布时间确定:iOS 12.1透露新设备相关消息
A5创业网(公众号:iadmin5)9月19日报道,今天凌晨,iOS 12.1 首个开发者测试版更新已经发布。根据开发者透露的消息,iOS 12.1为Face ID内建