iOS 获取手机上已经安装的应用

ios获取已安装的应用列表 ios获取已安装的应用列表 #ios -(NSMutableArray*) getInstallAppInfo{ NSMutableArray *arrayAppInfo = [[NSMutableArray alloc] init]; //获取应用程序列表 Class cls = NSClassFromString(@"LSApplicationWor... 阅读详情

前言

公司内部有一给自己的 App 发布后台,类似于 FIR 那样的存在, 有完整的 LDAP 账号登录。每天的 daily build 和 历史发布版都会放到那里去。然而每次都要登录后台扫描二维码下载实在是太麻烦了,我们就打算做一个客户端。

于是问题来了:如何知道我手机上安装的礼物说版本号比我当前的要低呢?

方案们

方案一 剪贴板共享

我们知道同一个证书下的软件,是可以共享剪贴板的,所以我们可以把礼物说的版本号丢到剪贴板里存下来。

但问题在于:

  1. 礼物说要运行过

  2. 致命伤:必须同一个 账号的 证书,内部 APP 肯定会去用企业证书,而礼物说可能是线上证书,可能是企业证书。

所以这个方案被否掉了。

方案二 URLScheme

把礼物说的 URLScheme 写成 GiftTalk233 这样的方案,然后在项目中 CanOpenURL 确认安装。

当问题在于:

iOS 9 之后,CanOpenURL 的白名单有上限,而且要修改编译脚本过于麻烦,这个方案也被否掉了。

于是,常规方案都不可行,那么要祭出大杀器了,私有 API

私有 API

毕竟是内部使用的 APP,所以用用私有 API 也没有什么问题。经过查阅越狱开发的文档,我们发现了这么一个私有库:MobileInstallation.framework

使用起来还是蛮方便的,直接:

CFDictionaryRef dict = MobileInstallationLookup(NULL);
NSLog(@"%@", (NSDictionary*) dict);

然而,这个库正常情况下是不会被 Link 进来的,于是我们该怎么做呢?

链接私有库

经过前几篇文章,我们知道动态链接库都是写在 Mach-O 的头部。然而它最终是经过 unix 的一个系统函数 dlopen 来加载的,这货是可以突破沙盒环境的,不信你可以给 dlopen 下个断点看看。所以我们可以手动调用 dlopen 加载想要的私有库。

void* libHandle = dlopen("/System/Library/PrivateFrameworks/MobileInstallation.framework/MobileInstallation",RTLD_NOW);

if (libHandle) {
  NSLog(@"加载成功!");
}

但是对于 C 语言函数来说,他在编译时就被换成了对应的函数指针,所以我们想调用上述方法并没有那么容易。而如果是 OC 的方法的话,我们直接通过 runtime 就可以拿到对应的结果了。

所以现在我们需要拿个函数指针做个映射:

这样就可以了!

然鹅,我拿这个这个东西去给同事得瑟的时候,被打脸了。

我拿了一台公司的 iPhone 4 iOS 7 做的开发,这个工作一切正常。但 iOS 8 以上,func 取不到。吓得我赶紧去 Github 上看头文件。

https://github.com/MP0w/iOS-Headers/blob/master/iOS8.1/PrivateFrameworks/MobileInstallation/MIInstallerClient.h

惊了个呆,iOS 8 居然重写了这个 framework,但仔细观察了一下,貌似有一个方法是我们想要的:

 - (void)fetchInstalledAppsWithOptions:(id)arg1 completion:(CDUnknownBlockType)arg2

好吧,我之前树的 Flag 应验了,那就 iOS 8 以上换一个写法吧。

真机运行得到:

required to have an entitlement named “com.apple.private.mobileinstall.allowedSPI” with an array containing “CopyInstalledAppsForLaunchServices” to call the MobileInstallation SPI

Wut?

entitlement.plist

若你对 iOS 签名机制了机的话,entitlement 绝对不陌生。不过我相信大多数开发者都很少和他打交道,这里我来简单说一下。

我们都知道签名需要证书的 profile 文件,而 entitlement 是一个授权机制,他里面约定了很多 iOS 的更高级的权限。有点像 Android 写在 manifest 里面的 permission。

比如:

  • 访问 HealthKit 需要添加 com.apple.developer.healthkit

  • 使用 Network Extension 查找 WI-FI 需要添加 com.apple.developer.networking.HotspotHelper

但是,这个是需要苹果授权的,且与 profile 对应的。于是我们想在 entitlement 里面添加 com.apple.private.mobileinstall.allowedSPI 是没问题,但是是无法通过签名,会提示找不到对应的 profile。

于是我们想调用私有的 entitlement 的话,越狱设备可以随便搞,但不越狱的话开发者层面是没有什么可以绕过去的方法 (但做安全的蒸米大大说其实是有解的,若有朋友知道欢迎留言)。

仿佛走入了死胡同

柳暗花明又一村

我们都知道同步推是有企业证书版本的,且能查看我们本地的全部 APP。于是,我们对着他们的代码找一下呗~

经过一番查找,我们定位到了一个叫做 ApplicationManager 的类,这个 loadInstalledApplications 的方法很抢眼

然后在逻辑结构中可以看到:

他很鸡贼的判断了一下系统版本是不是大于 8.0,如果不是,就用左边的 MobileInstallation.framework 来做,否则调用了一个方法,叫做 suoyouyianzhuangdeyingyong 。我能吐槽这名字么…

通过下面代码,我们可以发现一个类叫做 LSApplicationWorkspace 
在 Github 的私有头文件里面搜了一下,惊了个呆:

https://github.com/nst/iOS-Runtime-Headers/blob/master/Frameworks/MobileCoreServices.framework/LSApplicationWorkspace.h

他居然是 MobileCoreServices 的私有函数!我们连 dlopen 都省了。

于是,照猫画虎,我们有:

任务完成!

【ios逆向】如何获取线上应用的头文件 你是否曾因为应用上线的第一天即遭破解而无奈苦恼,想要加强防范,却又束手无策吗? 你是否曾为某一个应用深深折服,想要借鉴学习,却又无从下手吗? 本篇讲解如何对线上ipa进行砸包获得头文件 1、用越狱手机下载目标app(微信) 2、通过SSH连接越狱手机(默认密码alpine) 3、ps -e 查看所有进程 4、找到目标进程,记录进程编号和所在位置 /var/mobile/Containers/Bundle/Application/000C1B36-0A0D-4004-B0ED-66FE. 阅读详情

相关推荐

用Unity Remote进行手机测试

如何快捷地使用手机测试Unity游戏?以前我都是直接生成apk再安装到手机上测试,真的是麻烦的不行。后来查了一下官方文档,没想到Unity居然真的“有过”一个用来快捷进行手机测试的方法,叫做Unity Remote。

路人王小二的博客 9425

iOS如何获取手机上的已安装的所有应用

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34233421的博客 859

移动开发中的手机信息获取技术详解

是Android系统中用于管理应用包的类。它提供了一种机制,用于查询包信息、安装包、卸载包以及获取有关所有已安装应用和应用包的信息。上述代码段展示了如何使用获取已安装应用的信息列表。方法返回一个包含所有已安装应用信息的对象列表。其中,是一个标志,用来指示是否需要额外的元数据信息,如果不需要可以省略。在 Android 系统中,内存管理主要依赖于 Linux 的核心功能,包括低内存杀手(Low Memory Killer,LMK)和内存分配器。

weixin_31176789的博客 1377

获取ios设备中已安装程序

分3种情况: 1.越狱之后的设备,可以获取完整的列表,获取也比较方便,方法如下: http://stackoverflow.com/questions/3878197/is-it-possible-to-get-information-about-all-apps-installed-on-iphone/3878220#3878220 http://www.iphonedevsdk.com/

Acorld 6238

IOS如何判断一个应用是否已安装以及获取已安装列表

使用以上方法有个前提是必须要现在项目的清单文件里配置跳转协议url白名单才行:如下图,如果要想查微信、淘宝、微博是否安装,必须增加白名单,否则直接调用isAppInstalled(scheme: "weixin://")必然会返回false,即不生效。可以看到这个方法本质是通过目标应用所特有的协议去判断目标应用是否已安装,并非直接通过报名判断。这就要确保协议的唯一性,而如果有多个应用定义了相同的协议,则此方法可能会不准确。网上给出最多的方案为根据应用的协议判断是否可以启动应用从而判断某应用是否已安装。

康康 2493

iOS获取手机安装的所有应用信息(bundle id,icon,名称等)

获取手机上所有应用的信息,支持iOS10以下。私有方法,可以获取到icon,bundle id,名称等信息。

ios如何获取手机上已安装的所有应用

在 Github 的私有头文件里面搜了一下,惊了个呆: https://github.com/nst/iOS-Runtime-Headers/blob/master/Frameworks/MobileCoreServices.framework/LSApplicationWorkspace.h 他居然是 MobileCoreServices 的私有函数!我们连 dlopen 都省了。

qq_34051348的博客 1013

Overleaf-Latex-Elsevier-图、表、参考文献标题及引用、伪代码写法(绝对详细直观且易懂)

overleaf爱思唯尔模板踩过的一些坑以及解决办法

2403_87584552的博客 5851

iOS11 获取手机已安装应用列表

在iOS 11 以前我们可以使用LSApplicationWorkspace来获取手机上已安装的应用列表 iOS 11 上获取所有已安装应用接口被禁,但可以根据BundleId检查App是否存在 - (BOOL)isInstalled:(NSString *)bundleId { NSBundle *container = [NSBundle bundleWithPath:@"/...

weixin_30670151的博客 942

DCDC: 前馈电容优化环路稳定性的设计与验证方法

本文深入探讨了DCDC转换器中前馈电容对环路稳定性的优化设计与验证方法。通过分析前馈电容的作用原理、选型计算和实验验证,详细介绍了如何利用穿越频率和相位裕度等关键参数提升系统性能。文章还提供了实用的设计经验和问题排查技巧,帮助工程师在实际应用中实现DCDC转换器的最佳稳定性。

weixin_42531516的博客 438

按照autoware.universe官方从零搭建自己的自动导航小车(三)(续)

本文介绍了在Autoware框架下完善自定义传感器套件描述包的详细过程。主要内容包括:1)创建传感器描述包tinyplc_sensor_kit_description,包含YAML标定文件和URDF模型;2)配置传感器与车辆基座的相对位姿,实现sensor_kit.xacro和sensors.xacro宏文件;3)更新sensor_kit.launch.xml文件以集成激光雷达和GNSS/IMU驱动。通过xacro验证URDF模型正确性后,下一步计划接入Helios16激光雷达数据并在Rviz2中验证点云显

qq_45335326的博客 1272

mac Fir-cli 打包上传工具安装

fir命令行客户端 通过 fir-cli 命令行的指令查看、上传、编译应用https://github.com/FIRHQ/fir-cli/blob/master/README.md 使用 Fir.cli 工具实现快速打包 一 (iOS版本) https://www.jianshu.com/p/e80a8192a711 // 安装 fir-cli gem install fir-cli ...

1213

Bugku中的source

进入环境后 我们首先查看源码可以得到一个flag 这肯定是个假的(已经提交过了确实是个假的) 题目提示要用Linux 这里使用的是kali 我们首先dirsearch一下这个网站 可以看到有.git文件泄露 也可以点开那个链接但是在里面没有找到flag 然后选择下载这个.git文件 然后进入这个文件夹 输入git reflog查看文件状态 可以看到有四个都有flag is here 一个一个查看git show 然后在40c6d51中发现了我们需要的fl

A272036149的博客 1011

ios上获取是否安装了某个程序

转载自:  http://blog.youkuaiyun.com/shiduqi/article/details/9719357 方法一:把代码分享一下: NSURL *instagramURL = [NSURL URLWithString:@"instagram://location?id=1"]; BOOL hasInstagram = [[UIApplication sharedAppli

沸腾的泪水的专栏 565

58子站安居,经纪人营销管理平台登录接口加密逆向

实战场景password 实战分析 本次要解决的站点依旧来源自78技术人社群,有朋友希望再次说明一下其登录模块的加密参数寻找与逆向逻辑,本文我们就一起分析一下。 站点地址为:vip.anjuke.com/portal/login 通过开发者工具,可以简简单单的寻找到相应的数据。

梦想橡皮擦,专栏100例写作模式先行者,现象级专栏 《Python 爬虫 100 例》作者、《滚雪球学 Python 专栏》原创者 2万+

PCB板Gerber文件的理解和制作

Gerber文件是PCB生产的关键文件,主要包括:1)走线层(GTL/GBL);2)阻焊层(GTS/GBS);3)丝印层(GTO/GBO);4)板框层(GMx/GKO);5)钢网层(Gtp/GBp);6)钻孔文件(NCdrillFiles)。其中1-10项和15项钻孔文件必须提供,建议包含11-14项辅助钻孔层。Gerber文件不含过孔属性,需提前在AD中设置过孔盖油。导出步骤包括:导出非机械层、机械层和钻孔层,新版AD可通过"文件->制造输出->GerberFiles"操作

qq_37999850的博客 852

ios_获取APP的URLscheme

有时候项目中会遇到需要获取一个APP的URLscheme,百度查找资料 下面直接介绍方法 1,手机连接MAC,去MAC的App Store下载Apple Configurator 2 2,打开Apple Configurator2,链接上苹果手机。登录苹果账号 3,点击导航条上的添加,选择应用,(需先选中手机) 4,选择要获取URLscheme的app进行搜索安装 5,打开文件夹访达 ...

iOS_MingXing的博客 2万+

全面解析 SAP 事务码 LTMOM 的应用与实践

综上所述,事务码 LTMOM 是 SAP 系统中不可或缺的迁移对象维护工具,它不仅提供了对数据迁移对象的精细配置功能,还通过灵活的数据转换规则与异常监控机制,为企业数据从 SAP ERP 向 SAP S/4HANA 的迁移提供了坚实保障。在数据迁移过程中,并非所有的迁移对象都需要同时启用。业内专家普遍认为,未来的系统升级与数据迁移将更注重业务需求的动态变化与数据实时性的要求,而 LTMOM 作为核心工具,其在流程自动化、数据智能校验以及跨系统数据联动方面的能力,将直接影响企业整体数字化转型的成败。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1005

苹果手机ios系统下载了.apk文件程序怎么安装?

iOS 16.4后加强了对侧载的管控,非开发者账号用户无法使用“开发者模式”(需在设置中手动开启),且频繁侧载可能触发苹果反作弊机制,导致设备被标记(概率极低,但需注意)。在iOS上安装云手机应用(如“红手指”“雷电云手机”),远程控制云端安卓设备运行APK,但存在延迟高、付费(按小时/月收费)、隐私泄露风险,仅建议临时应急使用。若需长期使用安卓应用,可考虑备用安卓手机(如千元机),或选择支持“双系统”的设备(如部分折叠屏手机可安装安卓/iOS双系统,但需注意合法性)。

m0_46087225的博客 4634

YOLO26涨点改进 | NeurIPS2025最佳论文!注意力改进篇| 引入Gated Attention门控注意力模块、太牛了!直接拯救了大模型的发展,助力目标检测、图像分割、图像分类有效涨点

本文提出了一种基于门控注意力机制(GatedAttention)的YOLO26模型改进方法。该方法在标准softmax注意力机制中引入头部特定的sigmoid门控,通过增强注意力机制使模型更聚焦于关键信息。实验表明,该模块能显著提升模型性能,特别是在复杂背景和密集目标场景中,同时减少无关区域关注并提高检测精度。门控机制引入的非线性和稀疏性不仅提升了推理效率,还改善了训练稳定性,使模型能采用更大学习率并增强扩展性。此外,该方法有效缓解了"注意力下沉"现象,增强了模型对长距离目标的感知能力。

Ai缝合怪、助力小伙伴高效发论文 652

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

在自己网站上二维码扫描安装IOS APP PLIST

本教程教你如何在自己网站上,通过手机扫描二维码安装IOS APP。 工具/原料 正规SSL证书(浏览器受信任的) Plist IPA文件 VPS或者支持安装SSL证书的虚拟主机(有独立IP 或者共享静态IP) 方法/步骤 首先购买SSL证书, 然后再服务器上安装SSL证书(这个可以参考有关教程)

fuqiang3270的专栏 1万+

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

将App Store的应用获取bundleId在appium启动 demo(将ipa安装在未越狱手机)

appium 基于Python 的ios的自动化环境搭建,见:https://www.cnblogs.com/dreamhighqiu/p/10989978.html 如何获取通过Mac获取appstore 下载的IPA包,见https://www.cnblogs.com/dreamhighqiu/p/11016086.html 修改内部文件 在控制台通过命令解压ipa包,然后修改内部...

weixin_30537391的博客 475

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

girigo夺命许愿软件手机版app下载安装教程girigo夺命许愿app手机版下载安装教程安卓版app鸿蒙版苹果版IOS电脑版安装包下载地址

复制上方网盘链接到浏览器搜索打开即可保存观看,资源完全免费,集于互联网公开分享资源。📢提示:资源链接地址放在文章结尾👇👇,往下翻就行。📢提示:资源链接地址放在文章结尾👇👇,往下翻就行。《资源》(尽快保存,随时失效)(手机用户长按复制打开即可)

1万+

用电脑更新手机ios系统_【ios13】屏蔽系统更新,无需电脑

泡芙科技 长按二维码关注 前言iphone用户都很了解每当系统更新时,尤其是大版本更新都会给大家带来很多新鲜的功能,但同时对于老设备来说更新就避免不了的卡顿,所以很多小伙伴们不喜欢更新,却频繁的收到更新提醒,很是烦人。在往期文章中为大家分享过ios屏蔽系统更新的描述文件,最近很多小伙伴们反应失效了,今天就为大家分享最新的ios屏蔽更新描...

weixin_39595310的博客 559

如何在windows电脑上管理苹果手机应用

结合真实工程实践,详细介绍如何在电脑端进行苹果手机应用管理,从安装、卸载、运行到日志与进程查看,说明克魔(KeyMob)在多平台环境下对 iPhone 与 iPad App 管理的具体用法。

2501_91380052的博客 1064
上一篇: React-Native学习指南
下一篇: iOS编译项目的速度优化
敬业的程序猿
博客等级 码龄11年 51粉丝 77原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值