0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

MacOS/iOS Mach-O应用程序代码混淆

哆啦安全 来源:哆啦安全 2023-01-15 11:45 次阅读

MachObfuscator混淆器

MachObfuscator是一个Apple MacOS平台上与编程语言无关的Mach-O二进制符号混淆器。专业术语:

(1).混淆器

一种使软件难以逆向的工具

(2).二进制混淆器

一种混淆器,它在机器代码上运行,而不是在源代码上运行

(3).符号混淆器

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

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

992f133e-9471-11ed-bfe3-dac502259ad0.png

MachObfuscator混淆器,演示效果

MachObfuscator混淆SampleApp.app应用

9954fb62-9471-11ed-bfe3-dac502259ad0.gif

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

99884fb2-9471-11ed-bfe3-dac502259ad0.png

混淆的Objc类名:

9997b1be-9471-11ed-bfe3-dac502259ad0.png

上面仅显示了样本部分混淆前后的效果。

使用说明

$ ./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

    文章

    794

    浏览量

    41600
  • 编程语言
    +关注

    关注

    10

    文章

    1938

    浏览量

    34598
  • 应用程序
    +关注

    关注

    37

    文章

    3243

    浏览量

    57603

原文标题:MacOS/iOS Mach-O应用程序代码混淆

文章出处:【微信号:哆啦安全,微信公众号:哆啦安全】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    单片机烧录程序用什么软件

    单片机烧录程序是单片机开发过程中的一个重要环节,涉及到将编写好的程序代码通过烧录器写入单片机的ROM中,以实现对单片机的控制。 烧录器的类型 烧录器是用于将程序代码写入单片机ROM中的设备,根据其
    的头像 发表于 09-02 10:05 891次阅读

    苹果发布macOS 13.6.8和macOS 12.7.6更新,修复多个漏洞

    今日(7月30日),苹果公司进一步推出了两款全新的产品——macOS 14.6的正式版以及macOS 15.1的开发者Beta预览版;与此同时,也为广大Mac用户推送了两款极为重要的系统更新,分别是macOS Ventura 1
    的头像 发表于 07-30 15:55 2541次阅读

    CYC8PROTO-063-BLE是否可以通过智能手机上的标准设置应用程序建立连接?

    你好,我是使用 BLE 的新手,正在使用 CYC8PROTO-063-BLE 板,我想知道是否可以通过智能手机(iOS 或 Android)上的标准设置应用程序建立连接。 到目前为止,我只能通过 AIROC 应用程序进行连接,但
    发表于 07-23 08:20

    苹果发布iOS 18、iPadOS 18、macOS Sequoia、watchOS 11和tvOS 18的公开测试版

    测试版将为各种苹果设备带不来足够大的惊喜但依然有用的功能。 iOS 18公开测试版将带来iPhone软件工作方式的关键更新,包括对RCS消息的支持和新的自定义选项,让用户可以将应用程序放在主屏幕上
    的头像 发表于 07-16 09:06 394次阅读
    苹果发布<b class='flag-5'>iOS</b> 18、iPadOS 18、<b class='flag-5'>macOS</b> Sequoia、watchOS 11和tvOS 18的公开测试版

    mach3如何更改电机方向

    Mach3是一款广泛使用的数控系统,用于控制各种类型的机床,如铣床、车床、激光切割机等。在某些情况下,用户可能需要更改电机的方向以满足特定的加工需求。以下是详细的步骤和说明。 准备工作 在开始更改
    的头像 发表于 06-12 14:24 1159次阅读

    mach3和数控系统有什么区别

    数控机床的运动。它是一种基于PC的控制系统,可以与各种数控机床兼容。Mach3软件可以接收G代码,将其转换为机床的运动指令,从而实现对机床的精确控制。 数控系统,即数控机床控制系统,是数控机床的核心部件。它负责接收数控程序,解析
    的头像 发表于 06-12 14:18 1529次阅读

    mach3控制卡怎样连接伺服

    在这篇文章中,我们将详细介绍如何将Mach3控制卡与伺服电机连接。Mach3是一款广泛使用的数控(CNC)软件,它可以控制各种类型的机械设备,包括铣床、车床、激光切割机等。伺服电机是一种高精度、高
    的头像 发表于 06-12 14:15 1740次阅读

    剪映支持杜比视界视频制作,iOS、iPadOS与macOS设备均可使用

    近日,杜比官方发布声明,宣布剪映APP用户已可通过 iOS、iPadOS及macOS设备,轻松制作并导出杜比视界HDR格式视频,从而满足用户在视频制作中的多种需求。
    的头像 发表于 05-20 14:34 901次阅读

    OpenAI推出ChatGPT桌面版应用程序

    OpenAI 近日宣布,备受期待的 ChatGPT 桌面版应用程序现已正式发布。在官方公告中,OpenAI 表示他们首先会将这款应用提供给 Plus 用户群体,并特别针对 macOS 系统推出。这是该公司为了满足用户对更便捷、更高效交流方式的需求而采取的重要一步。
    的头像 发表于 05-14 11:51 987次阅读

    建议关闭macOS 14.4的存储优化功能以避免iCloud Drive文件丢失

    当使用众多应用保存文档时,macOS会自身生成版本号。检验是否使用过往版本的方法为:在对应应用程序的“文件”菜单中启动“恢复到”功能。
    的头像 发表于 03-20 10:57 767次阅读

    苹果修复macOS Ventura和Sonoma内存漏洞

    苹果强调,该漏洞可影响macOS Ventura及macOS Sonoma系统,攻击者可借此生成恶意文件。用户一旦点击浏览,可能引发应用程序异常关闭甚至造成任意代码执行风险。
    的头像 发表于 03-14 11:43 622次阅读

    应用程序中的服务器错误怎么解决?

    在使用应用程序时,可能会遇到服务器错误的问题。这种错误通常会导致应用程序无法正常运行 ,给用户带来不便。下面将介绍应用程序中的服务器错误及其解决方法,帮助您快速解决这一问题。
    的头像 发表于 03-12 15:13 5774次阅读

    将Wiced 6.6用于BLE的应用程序,执行10字节的简单读取操作时需要超过100毫秒的原因?

    没有添加应用程序代码,也需要超过 100 毫秒。它从 BLE 堆栈 Gatt 层读取。 我已经使用多个客户端(比如 nRF Connect)进行了这个实验。 我想加快 Gatt 读写操作的速度。 我
    发表于 03-01 08:10

    JavaScript压缩、混淆和加密技术原理解析

    前端代码都是公开的,为了提高代码的破解成本、保证JS代码里的一些重要逻辑不被居心叵测的人利用,需要使用一些加密和混淆的防护手段。
    的头像 发表于 12-26 09:41 2906次阅读
    JavaScript压缩、<b class='flag-5'>混淆</b>和加密技术原理解析

    开发java应用程序的基本步骤是

    Java应用程序。确定您希望应用程序能够执行的任务和提供的功能。这将有助于指导您在开发过程中进行决策并确定实现代码的方式。 2.设计应用程序:在开始编写
    的头像 发表于 11-28 16:52 1524次阅读