Kass 是一个为 macOS 进行逆向工程和安全研究的模块集合,使用 Swift 编写。它目前专注于与 macOS 基础的 XNU 内核进行交互,但未来可能会扩展以支持其他基于 XNU 的操作系统,例如 iOS。
请注意,虽然它可能在旧版本的 macOS 上编译,但此库仅在最新版本的 macOS 上经过全面测试。在某些情况下,包含了一些较旧的、已弃用(甚至已过时)的 API,但应假定它们目前未经测试。未来这种情况可能会改变。
大家好!我是 nmggithub,这个项目的唯一开发者。我通常在文档中避免使用人称代词,但我意识到在这里我真的无法避免,所以这一节将比任何其他文档都更加个人化。也许我将来会改变我的风格,但目前这将显得与众不同,所以我认为我应该说明一下。
Kass 3.0.0 是 Kass 2.0.0 的一次重大升级,因此版本号进行了主版本更改。但即使是现在,它仍然是一个处于过渡期的库。希望架构方面不会如此,但 Kass 3.0.0 仍然缺少一些我希望能够包含的功能。
展望未来,我想尝试坚持 语义化版本控制,但我认为我无法完全承诺这一点(尤其是我的想法变化如此频繁)。我真的不知道有多少人(如果有的话)正在使用这个项目,但我希望 3.0 及以后的版本至少在某种程度上是稳定的。
我认为 MachCore
模块基本上是稳定的,因此未来对其的更改可能很少(除了添加虚拟内存 API)。BSDCore
还处于早期阶段,因此可能会发生很大变化。最后,Linking
可能会在某个时候被合并到 BSDCore
中。
我希望这个库对您有所帮助,我期待未来发布更稳定的版本。如果您在使用过程中遇到任何问题,请随时 提交 issue。 如果您想贡献代码,请直接 打开 PR。 我感谢所有的反馈和支持。
截至撰写本文时,Kass 4.0.0 已发布。我上面所说的一切仍然适用。我会尽量坚持语义化版本控制,但我不能保证任何事情。仍然有一些 API 我希望增加其稳定性,还有更多我想添加的内容。XNU 内核是一个大型项目,我不断发现它更多有趣的角落。无论如何,我继续前进!
大部分代码都是 MIT 许可证。但是,在某些情况下,内容是从根据 Apple 公共源代码许可证 和其他许可证许可的头文件中复制而来。在适当的情况下,包含了相关许可证的版权声明。请参阅源代码以获取更多信息。
这仅仅是一个命名空间“模块”。它可以用于访问 MachCore
和 BSDCore
模块,但并非绝对必要。
此模块提供了与 XNU 内核的 Mach 部分进行交互的功能。提供了大多数 Mach API,尽管在某些特定情况下有意省略了一些。虚拟内存 API 在很大程度上被省略,但计划在以后的版本中添加。该模块应被认为是最稳定的,因为它投入了最多的工作。
此模块提供了与 XNU 内核的 Mach 部分进行交互的功能。它仍然是一个正在进行中的工作,不应被认为非常稳定,因为它可能会发生变化。
此模块提供了一个简单的 API 来访问符号,该 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")
]
)
]
)
只需在您的 Swift 文件顶部添加
import {module-name}
如果任何模块名称与您的软件包中现有的模块冲突,只需在使用定义依赖项时使用 moduleAliases:
选项。请参阅文档以获取有关命名冲突的任何其他信息。