nmggithub/Kass

GitHub: nmggithub/Kass

Kass 是一个用 Swift 编写的 macOS 逆向工程与安全研究模块集合,封装了 XNU 内核的 Mach 和 BSD 层 API,便于开发者直接与底层系统交互。

Stars: 105 | Forks: 5

# Kass [![](https://img.shields.io/endpoint?url=https%3A%2F%2Fswiftpackageindex.com%2Fapi%2Fpackages%2Fnmggithub%2FKass%2Fbadge%3Ftype%3Dswift-versions)](https://swiftpackageindex.com/nmggithub/Kass) [![](https://img.shields.io/endpoint?url=https%3A%2F%2Fswiftpackageindex.com%2Fapi%2Fpackages%2Fnmggithub%2FKass%2Fbadge%3Ftype%3Dplatforms)](https://swiftpackageindex.com/nmggithub/Kass) Kass 是一个使用 Swift 编写的模块集合,主要用于 macOS 上的逆向工程和安全研究。它目前专注于与 macOS 底层的 XNU kernel 进行交互,但未来可能会进行扩展,以支持其他基于 XNU 的操作系统,例如 iOS。 请注意,虽然它可能在旧版本的 macOS 上也能编译,但此库仅在最新版本的 macOS 上经过了全面测试。在某些情况下,代码中包含了旧的、已弃用(甚至已废弃)的 API,但就目前而言,应假定它们未经测试。这种情况未来可能会有所改变。 ## 关于许可证 此代码的大部分采用 MIT 许可证。但是,在某些情况下,部分内容复制自采用 [Apple 公开源代码许可证](https://opensource.apple.com/apsl/) 及其他许可证的头文件。在适当的情况下,已包含了相关许可证的版权声明。请查阅源代码以获取更多信息。 ## 模块 ### [`Kass`](https://swiftpackageindex.com/nmggithub/Kass/main/documentation/kass/) 这仅仅是一个命名空间“模块”。它可以用于访问 `MachCore` 和 `BSDCore` 模块,但并非严格必需。 ### [`MachCore`](https://swiftpackageindex.com/nmggithub/Kass/main/documentation/machcore/) 此模块提供了与 XNU kernel 的 Mach 部分进行交互的工具。包含了大部分 Mach API。应将此模块视为最稳定的模块,因为投入了最多的精力进行完善。 ### [`BSDCore`](https://swiftpackageindex.com/nmggithub/Kass/main/documentation/bsdcore/) 此模块提供了与 XNU kernel 的 BSD 部分进行交互的工具。它目前仍处于开发阶段,可能会发生变动,因此不应被认为是非常稳定的。 ### [`Linking`](https://swiftpackageindex.com/nmggithub/Kass/main/documentation/linking/) 此模块提供了一个简单的 API 来访问符号,其内部使用了 `dlopen`/`dlsym` 函数。未来它很可能会被合并到 `BSDCore` 中。 ## 注意事项 请注意,这些模块主要用于逆向工程和安全研究。虽然某些模块在生产应用中可能很有用,但这并非它们的设计初衷。 ## 用法 ### 添加依赖: 像这样修改你的 `Package.swift`: ``` let package = Package( ... dependencies: [ .package(url: "https://github.com/nmggithub/Kass", exact: "{desired-version}"), ], targets: [ /// the target you wish to use this module in .[target | executableTarget]( ... dependencies: [ .product(name: "{module-name}", package: "Kass") ] ) ] ) ``` ### 在 target 中使用该依赖: 只需将 ``` import {module-name} ``` 放在你的 Swift 文件的顶部即可。 ### 命名冲突 如果任何模块名与你的 package 中已有的模块发生冲突,只需在定义依赖时使用 [`moduleAliases:`](https://github.com/swiftlang/swift-evolution/blob/main/proposals/0339-module-aliasing-for-disambiguation.md) 选项。请查阅文档以获取有关命名冲突的更多信息。
标签:Mach, Swift, XNU内核, 云资产清单, 逆向工程