0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

MacOS/iOS Mach-O應(yīng)用程序代碼混淆

哆啦安全 ? 來源:哆啦安全 ? 2023-01-15 11:45 ? 次閱讀

MachObfuscator混淆器

MachObfuscator是一個Apple MacOS平臺上與編程語言無關(guān)的Mach-O二進(jìn)制符號混淆器。專業(yè)術(shù)語:

(1).混淆器

一種使軟件難以逆向的工具

(2).二進(jìn)制混淆器

一種混淆器,它在機(jī)器代碼上運(yùn)行,而不是在源代碼上運(yùn)行

(3).符號混淆器

一種僅混淆符號名稱的混淆器,不會改變程序控制流。

MachObfuscator直接轉(zhuǎn)換Mach-O文件中的符號。Mach-O格式主要用于Apple平臺,作為可執(zhí)行文件和庫的機(jī)器代碼容器。MachObfuscator不需要訪問應(yīng)用程序源代碼以對其進(jìn)行模糊處理。

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

MachObfuscator混淆器,演示效果

MachObfuscator混淆SampleApp.app應(yīng)用

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

通過在MachOView中打開app的主要可執(zhí)行文件可以看到結(jié)果。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).查找應(yīng)用包中的所有可執(zhí)行文件,

(2).以遞歸方式搜索所有依賴庫,這些庫的依賴關(guān)系等等,

(3).搜索應(yīng)用包中的所有NIB文件,

(4).區(qū)分可模糊文件(應(yīng)用程序包中的文件)和不可模糊文件(應(yīng)用程序包外部的文件)

(5).從整個依賴圖中收集Obj-C符號,導(dǎo)出嘗試和導(dǎo)入列表,

(6).創(chuàng)建符號白名單和符號黑名單(在不可混淆的文件中使用的符號),

(7).使用選定的漫游器修改白名單符號,導(dǎo)出嘗試和導(dǎo)入列表,

(8).替換可混淆文件中的符號,

(9).清除可選的部分,

(10).一次保存所有文件。

https://github.com/nigel193/ios-developer-tools
https://github.com/kam800/MachObfuscator
https://github.com/zayki/MachObfuscator

審核編輯 :李倩


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 二進(jìn)制
    +關(guān)注

    關(guān)注

    2

    文章

    786

    瀏覽量

    41572
  • 編程語言
    +關(guān)注

    關(guān)注

    10

    文章

    1931

    瀏覽量

    34558
  • 應(yīng)用程序
    +關(guān)注

    關(guān)注

    37

    文章

    3238

    瀏覽量

    57556

原文標(biāo)題:MacOS/iOS Mach-O應(yīng)用程序代碼混淆

文章出處:【微信號:哆啦安全,微信公眾號:哆啦安全】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    單片機(jī)燒錄程序用什么軟件

    單片機(jī)燒錄程序是單片機(jī)開發(fā)過程中的一個重要環(huán)節(jié),涉及到將編寫好的程序代碼通過燒錄器寫入單片機(jī)的ROM中,以實(shí)現(xiàn)對單片機(jī)的控制。 燒錄器的類型 燒錄器是用于將程序代碼寫入單片機(jī)ROM中的設(shè)備,根據(jù)其
    的頭像 發(fā)表于 09-02 10:05 ?774次閱讀

    蘋果發(fā)布macOS 13.6.8和macOS 12.7.6更新,修復(fù)多個漏洞

    今日(7月30日),蘋果公司進(jìn)一步推出了兩款全新的產(chǎn)品——macOS 14.6的正式版以及macOS 15.1的開發(fā)者Beta預(yù)覽版;與此同時,也為廣大Mac用戶推送了兩款極為重要的系統(tǒng)更新,分別是macOS Ventura 1
    的頭像 發(fā)表于 07-30 15:55 ?2419次閱讀

    CYC8PROTO-063-BLE是否可以通過智能手機(jī)上的標(biāo)準(zhǔn)設(shè)置應(yīng)用程序建立連接?

    你好,我是使用 BLE 的新手,正在使用 CYC8PROTO-063-BLE 板,我想知道是否可以通過智能手機(jī)(iOS 或 Android)上的標(biāo)準(zhǔn)設(shè)置應(yīng)用程序建立連接。 到目前為止,我只能通過 AIROC 應(yīng)用程序進(jìn)行連接,但
    發(fā)表于 07-23 08:20

    蘋果發(fā)布iOS 18、iPadOS 18、macOS Sequoia、watchOS 11和tvOS 18的公開測試版

    測試版將為各種蘋果設(shè)備帶不來足夠大的驚喜但依然有用的功能。 iOS 18公開測試版將帶來iPhone軟件工作方式的關(guān)鍵更新,包括對RCS消息的支持和新的自定義選項(xiàng),讓用戶可以將應(yīng)用程序放在主屏幕上
    的頭像 發(fā)表于 07-16 09:06 ?376次閱讀
    蘋果發(fā)布<b class='flag-5'>iOS</b> 18、iPadOS 18、<b class='flag-5'>macOS</b> Sequoia、watchOS 11和tvOS 18的公開測試版

    mach3如何更改電機(jī)方向

    Mach3是一款廣泛使用的數(shù)控系統(tǒng),用于控制各種類型的機(jī)床,如銑床、車床、激光切割機(jī)等。在某些情況下,用戶可能需要更改電機(jī)的方向以滿足特定的加工需求。以下是詳細(xì)的步驟和說明。 準(zhǔn)備工作 在開始更改
    的頭像 發(fā)表于 06-12 14:24 ?1097次閱讀

    mach3和數(shù)控系統(tǒng)有什么區(qū)別

    數(shù)控機(jī)床的運(yùn)動。它是一種基于PC的控制系統(tǒng),可以與各種數(shù)控機(jī)床兼容。Mach3軟件可以接收G代碼,將其轉(zhuǎn)換為機(jī)床的運(yùn)動指令,從而實(shí)現(xiàn)對機(jī)床的精確控制。 數(shù)控系統(tǒng),即數(shù)控機(jī)床控制系統(tǒng),是數(shù)控機(jī)床的核心部件。它負(fù)責(zé)接收數(shù)控程序,解析
    的頭像 發(fā)表于 06-12 14:18 ?1428次閱讀

    剪映支持杜比視界視頻制作,iOS、iPadOS與macOS設(shè)備均可使用

    近日,杜比官方發(fā)布聲明,宣布剪映APP用戶已可通過 iOS、iPadOS及macOS設(shè)備,輕松制作并導(dǎo)出杜比視界HDR格式視頻,從而滿足用戶在視頻制作中的多種需求。
    的頭像 發(fā)表于 05-20 14:34 ?858次閱讀

    OpenAI推出ChatGPT桌面版應(yīng)用程序

    OpenAI 近日宣布,備受期待的 ChatGPT 桌面版應(yīng)用程序現(xiàn)已正式發(fā)布。在官方公告中,OpenAI 表示他們首先會將這款應(yīng)用提供給 Plus 用戶群體,并特別針對 macOS 系統(tǒng)推出。這是該公司為了滿足用戶對更便捷、更高效交流方式的需求而采取的重要一步。
    的頭像 發(fā)表于 05-14 11:51 ?977次閱讀

    建議關(guān)閉macOS 14.4的存儲優(yōu)化功能以避免iCloud Drive文件丟失

    當(dāng)使用眾多應(yīng)用保存文檔時,macOS會自身生成版本號。檢驗(yàn)是否使用過往版本的方法為:在對應(yīng)應(yīng)用程序的“文件”菜單中啟動“恢復(fù)到”功能。
    的頭像 發(fā)表于 03-20 10:57 ?745次閱讀

    蘋果修復(fù)macOS Ventura和Sonoma內(nèi)存漏洞

    蘋果強(qiáng)調(diào),該漏洞可影響macOS Ventura及macOS Sonoma系統(tǒng),攻擊者可借此生成惡意文件。用戶一旦點(diǎn)擊瀏覽,可能引發(fā)應(yīng)用程序異常關(guān)閉甚至造成任意代碼執(zhí)行風(fēng)險。
    的頭像 發(fā)表于 03-14 11:43 ?605次閱讀

    應(yīng)用程序中的服務(wù)器錯誤怎么解決?

    在使用應(yīng)用程序時,可能會遇到服務(wù)器錯誤的問題。這種錯誤通常會導(dǎo)致應(yīng)用程序無法正常運(yùn)行 ,給用戶帶來不便。下面將介紹應(yīng)用程序中的服務(wù)器錯誤及其解決方法,幫助您快速解決這一問題。
    的頭像 發(fā)表于 03-12 15:13 ?5600次閱讀

    將Wiced 6.6用于BLE的應(yīng)用程序,執(zhí)行10字節(jié)的簡單讀取操作時需要超過100毫秒的原因?

    沒有添加應(yīng)用程序代碼,也需要超過 100 毫秒。它從 BLE 堆棧 Gatt 層讀取。 我已經(jīng)使用多個客戶端(比如 nRF Connect)進(jìn)行了這個實(shí)驗(yàn)。 我想加快 Gatt 讀寫操作的速度。 我
    發(fā)表于 03-01 08:10

    JavaScript壓縮、混淆和加密技術(shù)原理解析

    前端代碼都是公開的,為了提高代碼的破解成本、保證JS代碼里的一些重要邏輯不被居心叵測的人利用,需要使用一些加密和混淆的防護(hù)手段。
    的頭像 發(fā)表于 12-26 09:41 ?2825次閱讀
    JavaScript壓縮、<b class='flag-5'>混淆</b>和加密技術(shù)原理解析

    開發(fā)java應(yīng)用程序的基本步驟是

    Java應(yīng)用程序。確定您希望應(yīng)用程序能夠執(zhí)行的任務(wù)和提供的功能。這將有助于指導(dǎo)您在開發(fā)過程中進(jìn)行決策并確定實(shí)現(xiàn)代碼的方式。 2.設(shè)計應(yīng)用程序:在開始編寫
    的頭像 發(fā)表于 11-28 16:52 ?1501次閱讀

    如何把c語言源程序變成應(yīng)用程序

    將C語言源程序轉(zhuǎn)變?yōu)?b class='flag-5'>應(yīng)用程序可以分為以下幾個步驟:編寫源代碼、編譯、鏈接和運(yùn)行。在這篇文章中,我將詳細(xì)介紹這些步驟以及相關(guān)的工具和技術(shù)。 第一步是編寫源代碼。在C語言中,源
    的頭像 發(fā)表于 11-26 09:04 ?3317次閱讀