Kass

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 更新

截至撰写本文时,Kass 4.0.0 已发布。我上面所说的一切仍然适用。我会尽量坚持语义化版本控制,但我不能保证任何事情。仍然有一些 API 我希望增加其稳定性,还有更多我想添加的内容。XNU 内核是一个大型项目,我不断发现它更多有趣的角落。无论如何,我继续前进!

关于许可

大部分代码都是 MIT 许可证。但是,在某些情况下,内容是从根据 Apple 公共源代码许可证 和其他许可证许可的头文件中复制而来。在适当的情况下,包含了相关许可证的版权声明。请参阅源代码以获取更多信息。

模块

Kass

这仅仅是一个命名空间“模块”。它可以用于访问 MachCoreBSDCore 模块,但并非绝对必要。

MachCore

此模块提供了与 XNU 内核的 Mach 部分进行交互的功能。提供了大多数 Mach API,尽管在某些特定情况下有意省略了一些。虚拟内存 API 在很大程度上被省略,但计划在以后的版本中添加。该模块应被认为是最稳定的,因为它投入了最多的工作。

BSDCore

此模块提供了与 XNU 内核的 Mach 部分进行交互的功能。它仍然是一个正在进行中的工作,不应被认为非常稳定,因为它可能会发生变化。

Linking

此模块提供了一个简单的 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: 选项。请参阅文档以获取有关命名冲突的任何其他信息。