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)行模糊處理。
MachObfuscator混淆器,演示效果
MachObfuscator混淆SampleApp.app
應(yīng)用
通過在MachOView中打開app的主要可執(zhí)行文件可以看到結(jié)果。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).查找應(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
審核編輯 :李倩
-
二進(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)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論