#iOS# 相关文章


比越狱更棘手!iOS vPhone 虚拟机成黑灰产新温床

vPhone 是一个在 Apple Silicon Mac 上运行的、拥有 root 权限的真实 iOS 虚拟机。它不同于 Xcode Simulator 和传统越狱、而是一个真正的具备 iOS 内核的完整系统。

Swift 从 ObservableObject 迁移到 @Observable 的再讨论

前文已经讨论过了 从 ObservableObject 迁移到 @Observable 的实施步骤,在实际迁移中还需要考虑与 Swift 其他特性的冲突与兼容。

Swift 从 ObservableObject 迁移到 @Observable

ObservableObject 协议是 SwiftUI 早期的观察机制,Swift 5.9 引入 @Observable 宏作为 Swift 观察的"现代"解决方案。本文讲解从 ObservableObject 迁移到 @Observable。

从 Apple Distribution Managed 证书提取备案所需公钥和 SHA1

这篇短文讲解了如何从 Apple 开发者后台通过 Xcode 自动管理的 Distribution Managed 证书中提取备案所需公钥和 SHA1 值信息

SwiftUI Menu checkmark 文本对齐

SwiftUI 中实现 Menu 菜单在有 checkmark 等 icon 情形下的文本对齐,如果使用 Button 或其他自定义 View 很难到达想要的效果,可以使用 Picker 和 Toggle。

C++ RTTI 信息对二进制体积和安全性的影响

RTTI 是 C++ 提供的运行时机制用于确定对象的类型。借助 RTTI,程序可以在运行时识别对象信息,这在处理多态对象时十分有用。但另一方面,RTTI 会在包体积和安全性上可能有负面影响。

SwiftUI 系统颜色表查询

在使用 SwiftUI 开发时,使用系统预置的颜色无论是在 UI 效果还是在可维护性上都是比较推荐的。这里原文转载一篇日语文章,展示了系统颜色值的一览表方便设计开发时查询取用。文章最后还提供了一个 Demo App 可用使用。

SwiftUI List selection 的使用提示

List 是常用的 SwiftUI 组件,在 iOS 中,其构造接口中的 selection 参数必须绑定到 Optional 型,否则 Swift Compiler 会报错。

使用 TrollStore(巨魔) 在非越狱设备上安装任意 IPA

使用 TrollStore(巨魔) 软件可以在非越狱手机上安装任意 IPA 软件。TrollStore 提升了安装 IPA 的权限,应用可以通过声明 entitlements 权限突破沙箱限制,因此仅推荐在开发测试设备上使用。

iOS 18 中 libdyld.dylib/dyld 的一些变化

libdyld.dylib 作为 应用程序 和 dyld 之间的桥接层,几乎每次大版本的系统更新都会有很多变化。在 iOS 18 系统中 __dyld4 section 所在的 segment 发生了变化。

iOS UIDevice name 的变化 和 废弃的 CTCarrier

本文涉及到的 API 变动在 iOS 16 系统上已经生效,在梳理项目代码时发现还有在使用的地方需要修正,这里稍作记录。可以预见,Apple 对用户隐私信息的获取上将会越来越严格,任何 API 只要获取能够定位或区分用户特征的信息都将会受到限制。

iOS越狱检测之判断特征文件和环境变量的注意事项

严格来讲,如果手机系统存在特征文件,仅能证明其曾经越狱过;读取 DYLD_INSERT_LIBRARIES 环境变量,有值可以确定发生了注入,没有值无法确定是否发生了注入。

iOS 15 CLLocation 读取 sourceInformation 崩溃

在 iOS 15 之前,iOS 的 CoreLocation 库提供的定位信息并没有标示数据来源,比如可以通过在 iPhone 手机中插入外置 GPS 硬件,或通过蓝牙连接 GPS 外设等方式达到篡改原始 GPS 数据,而 CoreLocation 很难确切感知到 GPS 信息到底来自 iPhone 还是外部设备。

iOS 越狱检测屏蔽插件 Shadow

Shadow 是一款强大的 iOS 越狱检测屏蔽插件,与 kernbypass 主要模拟非越狱状态文件系统不同,Shadow 胜在提供了更精细更自由的 API Hook 能力。

iOS 内核级越狱检测屏蔽方案:KernBypass

KernBypass 是一款内核级的 iOS 越狱检测屏蔽插件,相比传统的越狱屏蔽检测插件功能更加强大,隐蔽性更强。看川了解到已经有不少付费的插件是基于 KernBypass 开发的。

解决 Xcode 下载 iOS Simulator 频繁失败的问题

从 Xcode 引导安装 iOS Simulator 套件很容易下载失败且无法断点续传,解决办法是直接从 Apple 开发者网站下载文件手动安装。

iOS LLVM 混淆插件:Hikari 和 Hanabi

近期我将项目中使用的 Xcode LLVM 混淆方案由 obfuscator-llvm 更换为开源的 Hanabi Hikari 插件,在 Xcode 15 上适配 Clang,编译 Objective-C 项目混淆效果达到预期,但对 Swift 项目支持的还有问题。

cocoapods-packager 插件的错误修复和适配

在前篇文章 pod package的不足和改进 中对 cocoapods-packager 插件如何自定义参数做过介绍,那已经是 2020 年的事了,cocoapods-packager 目前依旧停留在 2016 年的 1.5.0 版本,已渐失于维护。我在适配 Xcode 15 时,遇到一些问题,这里做下记录。

Swift并发编程 - 理解结构化和结构化并发的底层技术

前篇文章 Swift并发编程 - 理解 async 和 await 介绍了 Swift 并发编程的两个关键字 async 和 await。本文原本打算继续写 Task、Actor 等内容,但发现需要补充的基础知识很多。

由 xpc_connection_send_message_with_reply_sync 超时引发的崩溃

iOS 的一些系统接口需要调用 xpc_connection_send_message_with_reply_sync 方法与其它进程通信并返回结果,在低性能设备上打开 App 后如果有频繁的 xpc_reply_sync 调用可能会诱发超时卡死。

Swift并发编程 - 理解 async 和 await

本文是我学习 Swift 并发编程的第一篇笔记,文章从几个不太好理解的点,介绍了async 和 await 语法关键字的使用方法和内在含义。

Validating App Store Receipts

Apple 的 Receipts 文件,包括App Attest receipt、App Store receipt等,都是采用PKCS #7容器格式包装的,包含签名、证书链、及使用ASN.1编码的payload。本文从原理和细节上讲解了使用 python 如何解码Receipts文件,如何验证签名、校验证书链、并提取payload。

iOS Flutter MethodChannel 双向通信

MethodChannel 是 Flutter提供的最常用的和 Native App 双向通信的方式。本文将演示这种通信方式的使用。

iOS Flutter 开发环境部署

按计划应该是继续SwiftUI相关的,临时需求用到了Flutter,接下来的几篇可能都是和Flutter相关(只是可能)。本文记录iOS Flutter 开发环境部署步骤。

拥抱 Swift 和 SwiftUI

Apple 分别于2014年,2019年发布了 Swift 语言和 SwiftUI 框架,对于 iOS 开发者来说,技术的更新换代是不可回避的趋势,应该积极学习运用。

iOS Background Task使用陷阱

发现线上用户有在后台状态被杀死的情况,最终定位到是不合理使用Background Task造成的,这篇文章简要介绍下使用Background Task需要注意的事项。

LLDB命令速查手册

LLDB是Xcode上默认的调试器,支持C/C++、Objective-C 和 Swift 程序的调试,也是LLVM项目的一个可重用的高性能调试器。在LLVM项目的lldb子目录可以查看LLDB的源码。

iOS安全:Tweak开发环境及入门

Tweak原指微调以增强电子系统功能的实用工具;在iOS中,Tweak是广泛使用的越狱插件开发工具,通过创建dylib注入到宿主进程,完成各种HOOK操作。阅读本文将快速入门Tweak开发。

Using a Custom Toolchain in Xcode

特殊情况下需要使用自定义的Toolchain,Xcode便捷支持选择不同的Toolchain。自定义的Toolchain在macOS和Xcode升级时可能需要做维护。

iOS WKWebView详解及JS Bridge同步调用问题

WKWebView是 iOS 8.0以后用于替代UIWebView的浏览器组件。和UIWebView相比,WKWebView性能更高,支持更多的HTML5特性,控制更加细致。本文简要介绍了UIWebView的使用以及JS和native App同步交互的问题。