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

    文章

    809

    浏览量

    43270
  • 编程语言
    +关注

    关注

    10

    文章

    1966

    浏览量

    39990
  • 应用程序
    +关注

    关注

    38

    文章

    3347

    浏览量

    60488

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

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

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    S32K系列引导加载程序应用程序跨不同定制电路板设计的跳转问题求解

    的微控制器和核心功能 **问题:** 相同的引导加载程序代码在 Board 1 上完美运行,但无法跳转到 Board 2 上的用户应用程序,尽管使用了相同的 S32K358 控制器
    发表于 04-22 07:02

    S32K3跳转到应用程序后,PTD5上没有活动,为什么?

    应用程序应用程序在主循环(快速)切换 PTD5。 我的问题是跳转到应用程序后,PTD5 上没有活动,出现问题: 在地址“0x502000”中断,没有可用的调试信息,或者在程序代码
    发表于 04-16 08:59

    RDMA设计56:如何设计基于RDMA的应用程序

    本博文主要交流设计思路,在本博客已给出相关博文约140篇,希望对初学者有用。 注意这里只是抛砖引玉,切莫认为参考这就可以完成商用IP 设计。 应用程序的工作流程如图 1所示,大致分为 READ 包
    发表于 04-05 09:54

    如何构建蓝牙应用程序

    应用程序使用蓝牙(blueZ)。 我已经安装了 gcc-riscv64-linux-gnu。 但是,没有安装 blueZ 标头和库。 如何构建我的蓝牙应用程序
    发表于 04-01 07:31

    为Wi-Fi通讯和USB蓝牙通信控制设计并支持大型程序代码的指纹芯片-P1032BF1

    指纹芯片 - P1032BF1是一款基于ARM Cortex-M3的单片机,专为Wi-Fi /蓝牙通信控制而设计;能够实现指纹的图像采集、特征提取、特征比对,可应用于智能锁;支持大型程序代码和拥有大型嵌入式SRAM,也可用于一般的MCU应用。
    的头像 发表于 01-27 09:46 345次阅读
    为Wi-Fi通讯和USB蓝牙通信控制设计并支持大型<b class='flag-5'>程序代码</b>的指纹芯片-P1032BF1

    Vivado+Vitis将程序固化的Flash的操作流程

    ZYNQ 的程序固化是指将程序代码永久存储到非易失性存储器中,使系统上电后能自动加载运行的过程。主要固化方式:QSPI Flash固化:常用方式,容量小,如启动代码、FPGA 配置。NAND Flash固化:适合大容量
    的头像 发表于 01-20 16:17 1064次阅读
    Vivado+Vitis将<b class='flag-5'>程序</b>固化的Flash的操作流程

    HarmonyOS应用代码混淆技术方案

    代码混淆技术可以增加代码的复杂性和模糊性,从而提高攻击者分析代码的难度。
    的头像 发表于 11-21 16:17 5773次阅读
    HarmonyOS应用<b class='flag-5'>代码</b><b class='flag-5'>混淆</b>技术方案

    PYQT 应用程序框架及开发工具

    大家好,本团队此次分享的内容为开发过程中使用到的PYQT 应用程序框架及开发工具。 pYqt 是一个多平台的 python 图形用户界面应用程序框架,由于其面向对象、 易扩展(可实现组件编程等
    发表于 10-29 07:15

    ArkGuard混淆工具使用指南

    ArkGuard是一款源码混淆工具,提供基础混淆功能。当软件发布后,其代码很容易被他人获取分析,通过阅读清晰的变量名、函数名,攻击者或竞争者可以非常轻松地理解代码的逻辑结构、业务核心算
    的头像 发表于 09-28 16:05 1115次阅读
    ArkGuard<b class='flag-5'>混淆</b>工具使用指南

    学生适合使用的SOLIDWORKS 云应用程序

    随着科技的不断发展,计算机辅助设计(CAD)技术已经成为现代工程教育的重要组成部分。SOLIDWORKS作为一款CAD软件,其教育版云应用程序为学生提供了强大而灵活的设计平台。本文将探讨
    的头像 发表于 09-15 10:39 1008次阅读
    学生适合使用的SOLIDWORKS 云<b class='flag-5'>应用程序</b>

    当ICE_DAT引脚和ICE_CLK引脚在应用程序代码中配置为备用功能时,是否会导致编程失败?

    当ICE_DAT引脚和ICE_CLK引脚在应用程序代码中配置为备用功能时,是否会导致编程失败?
    发表于 08-25 06:55

    嵌入式系统中,FLASH 中的程序代码必须搬到 RAM 中运行吗?

    嵌入式系统里,FLASH 中的程序代码并非必须搬到 RAM 中运行,这得由硬件配置、实际性能需求和应用场景共同决定。就像很多低端单片机,无论是依赖片内 Flash 还是外挂的 SPI NOR
    的头像 发表于 08-06 10:19 1593次阅读
    嵌入式系统中,FLASH 中的<b class='flag-5'>程序代码</b>必须搬到 RAM 中运行吗?

    请问如何创建在 RAM 区域完全独立运行的闪存驱动程序代码

    我在开发闪存驱动程序代码时遇到了一个问题。我将准备好的HEX文件写入指定的RAM区域,并尝试使用指针调用,但调用失败,无法正常擦除或写入。对于flash的操作代码已经通过了单独的测试,为了使其更加
    发表于 07-25 07:33

    FX3 UVC 无法与 Ubuntu 24.04 Cheese 或 Snapshot 相机应用程序配合使用,怎么处理?

    Windows 和 MacOS 上运行正常,但在 Ubuntu 上运行失败。我对我的 USB 描述符很有信心,但不确定我对 Ubuntu 相机应用程序发送的事件的响应是否存在问题。我已经包含了启动这两个
    发表于 07-16 06:37

    使用 USB CDC 下载应用程序固件,用时过长是为什么?

    我已经在PSoC™ 6 WIFI-BT Pioneer Kit 上尝试了 DFU 示例代码,发现了一件奇怪的事情。 如果我使用 UART-over-USB 下载应用程序固件,则只需 20 秒。但是
    发表于 07-14 07:10