macOS下的Mach-O混淆器:MachObfuscator

admin 2023年1月16日15:28:23安全工具macOS下的Mach-O混淆器:MachObfuscator已关闭评论4 views2446字阅读8分9秒阅读模式

####################
免责声明:工具本身并无好坏,希望大家以遵守《网络安全法》相关法律为前提来使用该工具,支持研究学习,切勿用于非法犯罪活动,对于恶意使用该工具造成的损失,和本人及开发者无关。
####################

MachObfuscator混淆器

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

  1. 混淆器:一种使软件难以逆向的工具。

  2. 二进制混淆器:一种混淆器,它在机器代码上运行,而不是在源代码上运行。

  3. 符号混淆器:一种仅混淆符号名称的混淆器,不会改变程序控制流。

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

演示

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

图片


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


图片


和混淆的ObjC类名:


图片


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

使用说明

$ ./MachObfuscatorusage: ./MachObfuscator [-qvdhtD] [-m mangler_key] APP_BUNDLE
Obfuscates application APP_BUNDLE in-place.
Options: -h, --help help screen (this screen) -q, --quiet quiet mode, no output to stdout -v, --verbose verbose mode, output verbose info to stdout -d, --debug debug mode, output more verbose info to stdout --dry-run analyze only, do not save obfuscated files
--erase-methtype erase methType section (objc/runtime.h methods may work incorrectly) -D, --machoview-doom MachOViewDoom, MachOView crashes after trying to open your binary (doesn't work with caesarMangler) --swift-reflection obfuscate Swift reflection sections (typeref and reflstr). May cause problems for Swift >= 4.2
--objc-blacklist-selector NAME[,NAME...] do not obfuscate given selectors --objc-blacklist-selector-regex REGEXP do not obfuscate selectors matching given regular expression
--preserve-symtab do not erase SYMTAB strings --erase-section SEGMENT,SECTION erase given section, for example: __TEXT,__swift5_reflstr --erase-source-file-names PREFIX erase source file paths from binary. Erases paths starting with given prefix by replacing them by constant string --replace-cstring STRING replace arbitrary __cstring with given replacement (use with caution). Matches entire string, --replace-cstring-with STRING adds padding 0's if needed. These options must be used as a pair. --skip-all-frameworks do not obfuscate frameworks --skip-framework framework do not obfuscate given framework --obfuscate-framework framework obfuscate given framework (whitelist for --skip-all-frameworks) -m mangler_key, --mangler mangler_key select mangler to generate obfuscated symbols
Development options: --xx-no-analyze-dependencies do not analyze dependencies
Available manglers by mangler_key: caesar - ROT13 all objc symbols and dyld info realWords - replace objc symbols with random words (dyld info obfuscation supported)

MachObfuscator如何工作?

  1. 查找应用包中的所有可执行文件,

  2. 以递归方式搜索所有依赖库,这些库的依赖关系等等,

  3. 搜索应用包中的所有NIB文件,

  4. 区分可模糊文件(应用程序包中的文件)和不可模糊文件(应用程序包外部的文件),

  5. 从整个依赖图中收集Obj-C符号,导出尝试和导入列表,

  6. 创建符号白名单和符号黑名单(在不可混淆的文件中使用的符号),

  7. 使用选定的漫游器修改白名单符号,导出尝试和导入列表,

  8. 替换可混淆文件中的符号,

  9. 清除可选的部分,

  10. 一次保存所有文件。

特别标注: 本站(CN-SEC.COM)所有文章仅供技术研究,若将其信息做其他用途,由用户承担全部法律及连带责任,本站不承担任何法律及连带责任,请遵守中华人民共和国安全法.
  • 我的微信
  • 微信扫一扫
  • weinxin
  • 我的微信公众号
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年1月16日15:28:23
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                  macOS下的Mach-O混淆器:MachObfuscator http://cn-sec.com/archives/1518688.html