背景:

在越狱手机上安装 ikeymonitor 插件之后,日志中能实时记录用户的输入文本(密码除外,密码采用了密码控件),可能存在安全隐患。

解决思路:

1、 遍历手机已安装的应用,判断是否安装 ikeymonitor 插件
思路不可行,ikeymonitor 是一个插件,本人理解中 ikeymonitor 不是一个应用,没有 Url scheme。

2、 遍历程序启动时的动态库,通过分析安装 ikeymonitor 之后和未安装 ikeymonitor 时的区别,来检测是否安装 ikeymonitor

思路验证:

1、 越狱手机的准备
手机 iPhone 4S,版本:iOS8.1.3
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 的帮助文档中没搜索到,也不清楚到底是不是私有方法。

关于私有方法,以前的理解是到头文件中找不到的方法。也不知道理解的对不对,网上也没有找到比较详细的解释。愿随着技术的加深能够进一步区分清楚。

iOS 越狱手机 ikeymonitor 插件检测相关推荐

  1. python开发ios插件_[原创]Textobot-换个轻松高效的方式开发iOS越狱插件

    许愿:要是段老师的看雪平台能导入头条或者公众号的文章就好了. 导读 0x00.交个朋友 0x01.越狱开发 0x02.Cydia插件体系 0x03.Cydia插件开发 0x04.Textobot插件体 ...

  2. iOS冰与火之歌番外篇 - 在非越狱手机上进行App Hook(转载)

    作者简介:郑旻(花名蒸米),阿里巴巴移动安全部门资深安全工程师,香港中文大学移动安全(Android & iOS)方向博士,曾在腾讯.百度以及硅谷的FireEye实习.在博士期间发表了多篇移动 ...

  3. iOS冰与火之歌番外篇 - 在非越狱手机上进行App Hook

    作者简介:郑旻(花名蒸米),阿里巴巴移动安全部门资深安全工程师,香港中文大学移动安全(Android & iOS)方向博士,曾在腾讯.百度以及硅谷的FireEye实习.在博士期间发表了多篇移动 ...

  4. iOS 逆向-非越狱手机Hook App

    引子 由于对iOS逆向分析很感兴趣,所以也花了很长一段时间学习了iOS逆向相关知识,并积累了一些相关经验, 这几天又到看雪论坛逛了一下,看看最近有没有什么大牛分享心得成果的!还真让我看到一篇有意思的文 ...

  5. ios动态库注入把越狱手机上自制的动态库安装到普通手机上

    文章目录 预备条件 导出越狱手机上的app包和自己注入的动态库 导出自己写的tweak动态库文件 查看依赖库 执行命令查看程序依赖的动态库名字 用machoview查看 安装insert_dylib ...

  6. iOS逆向-ipa包重签名及非越狱手机安装多个微信

    前一段时间学了点儿逆向相关的一些东西,但是都是基于越狱手机上的操作,给视频类应用去广告之类的.随着苹果生态圈的逐渐完善.及苹果对自身系统的保护越来越严格,导致现在的iPhone手机并不像以前那样存在大 ...

  7. 制作iOS越狱deb插件+dpkg命令行教程

    iOS越狱deb插件的制作 dpkg命令行教程 deb安装包的制作 介绍  Cydia Sileo都是基于Debian开发的, 所以插件都是打包成.deb格式 deb包是Debian软件包格式,文件扩 ...

  8. 录屏手机html5插件,越狱插件:首款能在iOS10上轻松录屏的工具!

    原标题:越狱插件:首款能在iOS10上轻松录屏的工具! 说实话,今天这款插件是应一些朋友的要求才找来的,因为这些天有不少果粉在后台说能不能介绍一款越狱后能用的录屏工具,小智也不能确定这个插件之前有没有 ...

  9. 搞机攻略(Android Root iOS越狱)

    [分享]搞机攻略 由于手机系统出厂时的用户权限较低,如果设置当中没有,很多想要的修改都做不了,但是我们又想折腾怎么办呢? 提高权限! 安卓系统是基于linux的,所以权限管理也是类似的,iOS虽然不是 ...

  10. iOS 越狱-砸壳工具的使用

    1.越狱概述 1.1 通过iOS系统安全启动链漏洞,从而禁止掉信任链中负责验证的组件.拿到iOS系统最大权限ROOT权限. 1.2 当启动一台iOS设备时,系统首先会从只读的ROM中读取初始化指令,也 ...

最新文章

  1. 【Android 逆向】Android 进程注入工具开发 ( 系统调用 | Android NDK 中的系统调用示例 )
  2. MySQL高可用的几种方案
  3. myeclipse中的classpath .
  4. Codeforces Round #701 (Div. 2) D. Multiples and Power Differences 思维构造
  5. hadoop 二次开发DatanodeWriteTimeout设置
  6. Canvas 画占比图 解决canvas锯齿 bug
  7. javax maven项目缺少_maven冲突解决流程
  8. 从电视主播到高考,人工智能还能干些什么
  9. 每当再右侧的选择框中选中一个人的名字时,便在左侧的文本区中显示出此人的情况介绍,按close按钮时结束程序的运行
  10. 计算机组成原理解答题和计算题
  11. error C2440: “<function-style-cast>”: 无法从“IplImage *”转换为“cv::Mat”
  12. 1066 图像过滤 (15 分)—PAT (Basic Level) Practice (中文)
  13. Web基础配置篇(九): 抓包工具的介绍、安装及基本使用
  14. iphonex屏幕尺寸html,三分钟弄懂iPhone X 设计尺寸和适配
  15. 如何搭建一个站内搜索引擎(二) 第2章 概述
  16. python实现中考倒计时
  17. SPA项目开发(CRUD表单验证)
  18. gitlab+maven+spingboot+jenkin实现自动化部署
  19. 华为手表 GT3训练计划怎么用?
  20. 图像质量评价数据库与图像质量算法性能评价指标

热门文章

  1. 【随笔】我的两年 ACM 回(心)忆(酸)录(路) 【多图预警】
  2. 数字图像处理:实验七 遥感图像读取
  3. 天勤数据结构代码——双链表
  4. android4.0.3校准屏幕和隐藏statusbar
  5. cad缩小了怎么还原_CAD的窗口突然不能缩小了怎么回事,应该怎么恢复
  6. 设计模式:(生成器模式)
  7. Python实现四阶龙格库塔法求解Ricatti方程
  8. java日期字符串排序_Java 8 字符串日期排序
  9. 软件设计师教程笔记 持续更新
  10. [zigbee][z-Stack]协议栈简介及工作流程