MachObfuscator混淆器
MachObfuscator是一个Apple MacOS平台上与编程语言无关的Mach-O二进制符号混淆器。专业术语:
(1).混淆器
一种使软件难以逆向的工具
(2).二进制混淆器
一种混淆器,它在机器代码上运行,而不是在源代码上运行
(3).符号混淆器
一种仅混淆符号名称的混淆器,不会改变程序控制流。
MachObfuscator直接转换Mach-O文件中的符号。Mach-O格式主要用于Apple平台,作为可执行文件和库的机器代码容器。MachObfuscator不需要访问应用程序源代码以对其进行模糊处理。

MachObfuscator混淆器,演示效果
MachObfuscator混淆SampleApp.app应用

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

混淆的Objc类名:

上面仅显示了样本部分混淆前后的效果。
使用说明
$ ./MachObfuscator
usage: ./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).一次保存所有文件。
https://github.com/nigel193/ios-developer-tools
https://github.com/kam800/MachObfuscator
https://github.com/zayki/MachObfuscator
审核编辑 :李倩
-
二进制
+关注
关注
2文章
809浏览量
43270 -
编程语言
+关注
关注
10文章
1966浏览量
39990 -
应用程序
+关注
关注
38文章
3347浏览量
60488
原文标题:MacOS/iOS Mach-O应用程序代码混淆
文章出处:【微信号:哆啦安全,微信公众号:哆啦安全】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
S32K系列引导加载程序应用程序跨不同定制电路板设计的跳转问题求解
S32K3跳转到应用程序后,PTD5上没有活动,为什么?
RDMA设计56:如何设计基于RDMA的应用程序
如何构建蓝牙应用程序?
为Wi-Fi通讯和USB蓝牙通信控制设计并支持大型程序代码的指纹芯片-P1032BF1
Vivado+Vitis将程序固化的Flash的操作流程
PYQT 应用程序框架及开发工具
ArkGuard混淆工具使用指南
学生适合使用的SOLIDWORKS 云应用程序
当ICE_DAT引脚和ICE_CLK引脚在应用程序代码中配置为备用功能时,是否会导致编程失败?
嵌入式系统中,FLASH 中的程序代码必须搬到 RAM 中运行吗?
MacOS/iOS Mach-O应用程序代码混淆
评论