macOS下的Mach-O混淆器:MachObfuscator

MachObfuscator混淆器

MachObfuscator是一个Apple macOS平台上与编程语言无关的Mach-O二进制符号混淆器。这是什么意思?有一些重要的术语:

  1. 混淆器:一种使软件难以逆向的工具。
  2. 二进制混淆器:一种混淆器,它在机器代码上运行,而不是在源代码上运行。
  3. 符号混淆器:一种仅混淆符号名称的混淆器,不会改变程序控制流。

MachObfuscator 直接转换Mach-O文件中的符号。Mach-O格式主要用于Apple平台,作为可执行文件和库的机器代码容器。MachObfuscator不需要访问应用程序源代码以对其进行模糊处理。

演示

让我们看看MachObfuscator混淆 SampleApp.app 应用:

macOS下的Mach-O混淆器:MachObfuscator

通过在MachOView中打开app的主要可执行文件可以看到结果。MachOView显示模糊的ObjC选择器:

macOS下的Mach-O混淆器:MachObfuscator

和混淆的ObjC类名:

macOS下的Mach-O混淆器:MachObfuscator

上面仅显示了样本更改。MachObfuscator更改了更多Mach-O部分。

使用说明

MachObfuscator如何工作?

  1. 查找应用包中的所有可执行文件,
  2. 以递归方式搜索所有依赖库,这些库的依赖关系等等,
  3. 搜索应用包中的所有NIB文件,
  4. 区分可模糊文件(应用程序包中的文件)和不可模糊文件(应用程序包外部的文件),
  5. 从整个依赖图中收集Obj-C符号,导出尝试和导入列表,
  6. 创建符号白名单和符号黑名单(在不可混淆的文件中使用的符号),
  7. 使用选定的漫游器修改白名单符号,导出尝试和导入列表,
  8. 替换可混淆文件中的符号,
  9. 清除可选的部分,
  10. 一次保存所有文件。