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

    文章

    703

    浏览量

    41241
  • 编程语言
    +关注

    关注

    9

    文章

    1877

    浏览量

    33011
  • 应用程序
    +关注

    关注

    37

    文章

    3126

    浏览量

    56311

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

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

收藏 人收藏

    评论

    相关推荐

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

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

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

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

    一分钟带你了解TSMaster小程序编辑代码智能提示功能

    本文给大家带来TSMaster小程序编辑的新功能,其中主要包含:代码编辑智能提示功能、可用外部代码编辑器编辑小程序代码并同步。本文关键字:C小程序
    的头像 发表于 10-28 08:22 1204次阅读
    一分钟带你了解TSMaster小<b class='flag-5'>程序</b>编辑<b class='flag-5'>代码</b>智能提示功能

    java中的代码混淆技术

    今天和大家一起学习下java中的代码混淆技术,后面你也可以让你的代码不再裸露在外了,让人轻易窥视 代码混淆技术 当需要阅读jar文件的内容时
    的头像 发表于 09-25 11:48 817次阅读
    java中的<b class='flag-5'>代码</b><b class='flag-5'>混淆</b>技术

    苹果发布iOS/ iPadOS 15.7.9 和 macOS 12.6.9/11.7.10 更新

    就在2023年苹果秋季发布会的前夕苹果公司面向仍在运行旧版系统的用户,发布了 iOS / iPadOS 15.7.9、macOS 12.6.9 和 macOS 11.7.10 更新,本次更新重点修复了追踪编号为 CVE-2023
    的头像 发表于 09-13 00:31 1095次阅读

    使用251CPU生成代码大小超过64KB的应用程序

    您可以使用251CPU而不是8051生成代码大小超过64KB的应用程序。 大多数251CPU支持256K字节的地址空间,可用于程序代码或变量。 8051CPU的大程序只能通过
    发表于 09-04 06:08

    CAN公交车的应用程序代码分享

    应用程序: 这个示例是 CAN 公交车的应用程序代码, 描述当公交车在设备节点发生时如何回收并让设备重新进入公交车, 以便进行包件传输和接收 。 BSP 版本:M480系列BSP CMSIS
    发表于 08-29 07:18

    从10.2.2.1代码MacOS版本说明

    电子发烧友网站提供《从10.2.2.1代码MacOS版本说明.txt》资料免费下载
    发表于 08-01 11:23 0次下载
    从10.2.2.1<b class='flag-5'>代码</b>集<b class='flag-5'>MacOS</b>版本说明

    西门子博途SCL:REGION:构建程序代码的步骤

    可以使用指令“构建程序代码”,在 SCL 块中构建程序代码并将其分为几个不同区域。
    的头像 发表于 07-31 09:09 4073次阅读

    Preemptive 全面的移动应用程序保护

    由于黑客越来越多地将目标对准消费者和企业移动应用程序,您的应用程序可能会给您的组织带来风险。例如,黑客可以使用反编译器或反汇编器对您的安卓或iOS应用程序进行逆向工程,调试你的
    的头像 发表于 07-06 10:41 361次阅读
    Preemptive 全面的移动<b class='flag-5'>应用程序</b>保护

    APP混淆实战(Java/so代码混淆)

    Android App Bundle混淆加密加壳加固保护的解决方案(过Google App上架审核)最全Android及资源混淆方法汇总(无需加固节约成本并将APP上架Google Play成功的最佳方案)
    的头像 发表于 06-29 15:42 571次阅读
    APP<b class='flag-5'>混淆</b>实战(Java/so<b class='flag-5'>代码</b><b class='flag-5'>混淆</b>)

    Cortex-M0/M4芯片是否支持代码保护用户的程序代码吗?

    NuMicro™ Cortex-M0/M4芯片是否支持代码保护用户的程序代码吗?如何解开LOCK位上的用户配置字?
    发表于 06-19 06:02

    S32K148引导加载程序未跳转到应用程序是怎么回事?

    我已经从 nxp 的网站下载了标准的引导加载程序代码。构建代码并加载到 Eval 板中。 它似乎没有跳到应用程序。无法追踪确切的问题。 我使用了以下引导加载程序代码
    发表于 06-09 06:01

    S32G274A使用命令备份应用程序引导代码映像位置不正确的原因?

    ,右侧由 S32DS 配置工具生成。 位置 0x1000 是相同的。 但是 0x65000 中的备份应用程序引导加载程序代码位置在左侧不正确 您能否帮忙告知为什么命令行和配置工具之间的结果
    发表于 06-02 09:37

    求分享OM13069智能手机Quick-Jack解决方案的ios应用程序代码

    ,我们已经订购了一块电路板。 但是从项目信息中,我们只能找到相关的java app源码。它说我们可以根据常见问题解答要求获得IOS代码, NXP支持团队可以通过邮件将IOS代码的副本
    发表于 05-06 06:49