天天看點

iOS混淆探索自述功能圖文介紹更新日志感謝回報連結導航

自述

馬甲包的本質:

  1. 階段一減低重複率 ,本人開發初期的版本和目前市面上的其它工具基本相似,主要是‘名稱’全局替換這一個基本的功能
  2. 階段二減少相似度(相同元素的正态分布),目前該工具經過優化及不斷重構已經有了很大的改善,目前基本符合這方面要求,詳情見以下功能介紹。事物都有兩面性,功能越強大混淆耗時越長,如果你的項目很大,混淆幾個小時也是有可能的,請不要見怪,後續持續優化中。區分工具優劣其實識别一個工具的優劣,隻需看看以下幾點:
  3. 能否修改所有的屬性、方法,及方法的所有參數名
  4. 修改成員(屬性、方法)名稱,能否按類區分,還是簡單的全局替換
  5. 帶block的參數的方法,典型的網絡請求例如:+ (BOOL)post:(NSString )url parameters:(NSDictionary )parameters success:(HttpRequestResponse)success error:(HttpRequestResponse)error;
  6. 方法名和屬性名改後的名字的長短(本工具能夠保證60~80%的改後名稱是常見的一個單詞,例如:name、title等且保證不與系統沖突,完全摒棄簡單的靠大量單詞庫堆砌以保證命名的唯一性的做法,真正模拟人工開發)
  7. 修改布局(Frame、Masonry、SDAutoLayout)
  8. 插入的是代碼還是‘垃圾’(本工具通過封裝網絡請求,建立自定義控件,檔案之間使用MVC模式關聯,徹底告别‘垃圾’,實作以假亂真)。
  9. 更别說“還有誰...”能識别宏、區分繼承鍊等上下文關聯内容,智能識别不可修改部分例如:+ (void)init;- (void)reloadData;基本能改,做到的有幾個呢?”
  10. 正常項目(或者第三方庫)混淆完基本不報錯(除了一些個别文法不嚴謹造成混淆後報錯)

也歡迎大家使用不同工具混淆測試工程confuse_test或者第三方開源庫項目,對比效果。

功能

confuse是一款混淆工具,盡可能模拟人工開發,仿照Xcode部分功能,避免機核4.3、2.1、2.3.1、賬号調查等。

目标:模拟人工修改一切能改的地方,這也是為什麼本工具隻有黑名單沒有白名單的原因

詳細功能如下(基本功能不做描述,詳見其他工具):

已完成

以下功能均支援:

  1. 黑名單(二級)過濾,自由控制每個功能的混淆内容,幾乎适應所有項目。
  2. 混淆百分比控制,可以結合自己項目的實際需求,自由調整
  3. 智能名詞替換:
    1. 重命名時使用關聯類型已有資訊+相近語義+類型+部分舊詞彙等組合,并且過濾敏感詞彙,同時使用者也可以自定義敏感詞,棄用‘随機單詞無腦組合’
    2. 異類同名成員->異類異名成員,異類異名成員->異類同名成員,模拟正常開發。成員指的是方法、屬性、函數
  4. 智能識别不可修改部分:通過類型及繼承鍊方式識别系統、第三方、Pod方法,并不是‘簡單’的相等判斷,例如:
    1. 類方法:+ (void)init;原則上任何地方都能改
    2. 對象方法:- (void)reloadData;不是UITableView的子類是可以改的
    3. 屬性:@property (readonly) NSUInteger length;如果不是NSString的子類也是可以改的

通用部分

  1. 項目配置,隻要選擇項目路徑,自動完成其他預設配置
    1. 全局設定‘忽略路徑’,支援正則,配合黑名單使用更佳
    2. ‘xcodeproj’設定,針對多xcodeproj項目和xx.xcodeproj不在項目根目錄的情況
    3. ‘Scheme’混淆,與Xcode保持一緻
    4. ‘參考項目根路徑’設定,讀取參考項目的單詞、UUID
    5. ‘敏感詞’過濾
    6. ‘版本疊代混淆’,過審後疊代更新,沿用上一次(也可以任意選擇版本)混淆記錄增量混淆,保持版本連續性,模拟正常開發。優勢:做到開發和混淆同步且各自獨立。目前主要功能均支援更新混淆
  2. 殺病毒,Xcode中毒,XCSSET Malware
    1. ‘UUID字尾’,病毒會随機插入UUID,會帶有固定字尾,正則掃描
    2. ‘腳本路徑特征’,病毒編譯前會執行一個可疑腳本,支援正則掃描
    3. ‘運作腳本代碼标志’,病毒編譯前會執行一個可疑腳本代碼,支援正則掃描
  3. 資源替換,混淆前指定需要替換的資源檔案夾,自動進行同名檔案替換,友善快捷
  4. 修改圖檔,品質修改、大小偏移、局部像素微調、RGBA偏移、模式修改(支援熱更新)
  5. 修改檔案屬性,如建立時間、通路時間、修改時間
  6. 修改項目,無需删除Cocoapods
    1. 可設定‘修改uuid’,徹底翻新
    2. 自定義‘修改target’名稱,相關聯資訊同步更新
  7. 自動備份源碼

Objective-C

  1. 删除注釋,可‘保留白格’‘保留pragma’設定,利于測試階段檢視
  2. 重命名圖檔,智能名詞替換,自動糾正圖檔名和xcassets檔案夾名不對應的情況
    1. 可設定‘運作拼接名稱’,用于運作時通過字元串拼接生成的圖檔名
    2. 可設定‘重命名關聯字元串,用于修改字元串與圖檔名相等的情況
    3. 可設定‘忽略危險名稱’開關
  3. 插入圖檔,自動插入圖檔,同時根據上下文及類型模拟人工調用,可指定插入個數
  4. 重命名屬性,支援@property的所有類型,優勢:
    1. 識别文法,識别類型、繼承關系,屬性名混淆和類名(包含繼承鍊)關聯,自動識别系統屬性
    2. 可設定檔案名Model字尾過濾
  5. 插入屬性,建立、指派、修改都關聯已有類型,智能名詞替換
    1. ‘百分比控制’
    2. ‘Model字尾’開關,目的:避免Model歸檔或者資料轉模型失敗
    3. 可多次執行,指數x2遞增
  6. 重命名方法,近似Xcode的Rename功能,優勢:
    1. 文法相關,識别類型、繼承關系,支援多參修改,方法名混淆和類名(包含繼承鍊)及類型關聯,自動識别系統方法
  7. 插入方法,插入并調用上下文關聯方法,告别“垃圾代碼”,優勢:
    1. 根據方法的傳回值類型,在分類中建立相應的方法。同時封裝原方法的傳回值并利用(局部變量、屬性、形參)調用。
    2. 可多次執行,指數x2遞增
  8. 修改方法,模拟人工封裝調用,優勢:
    1. 對原方法進行拆分調用并根據參數類型(支援繼承)局部調整,詳情見支援參數類型彙總表
    2. 可多次執行,指數x2遞增
  9. 重命名全局變量,智能名詞替換
  10. 修改全局變量,替換全局變量名、全局變量轉化為全局函數、混淆字元串變量值
  11. 修改局部變量,模拟人工封裝調用,變量名關聯類型,優勢:
  12. 局部變量值運作時保持不變,詳情見支援類型彙總表
  13. 可多次執行,指數x2遞增
  14. 重命名多語言,對直接或間接使用系統方法NSLocalizedString、NSLocalizedStringFromTable的多語言進行修改
  15. 修改字元串,支援任意字元串,加密處理(寫死->記憶體),原始字元串保留在注釋中友善檢查
    1. 設定‘最少長度’過濾
  16. 也可設定‘有效個數’搭配使用
  17. 修改xib、storyboard,自動插入視圖,并修改内部結構屬性
  18. 修改字型,對項目中使用的字型随機微調,識别宏
  19. 修改顔色,對項目中UI控件顔色随機偏移,識别宏
  20. UI布局偏移,支援Frame、Mansonry、SDAutoLayout常見布局微調
  21. 插入檔案,生成其它檔案(封裝網絡請求,建立自定義控件,模拟正常開發),項目中自動調用;注意:(在項目根路徑下,會生成"other_xxx_file"的檔案夾,子選項Target控制導入方式,若為空,則需要手動導入,将生成的檔案夾拖入工程即可;反之,自動導入)
  22. 插入文本,生成json、txt、doc、plist等文本檔案,項目中自動調用;注意:(在項目根路徑下,會生成"other_xxx_text"的檔案夾,生成的檔案會自動導入)
  23. 重命名類,類名不限制(例如:my、My),可指定添加字首,優勢:
    1. 智能名詞替換
    2. 可設定‘重命名同名檔案’
    3. 可設定‘重命名相似字元串’,(忽略|相等|包含)三種設定
    4. 新增‘糾正非标準點文法’,針對非标準的點文法調用(方法當做屬性調用)

C++

  1. 重命名屬性,支援所有類型屬性,識别文法,識别類型、繼承
  2. 插入屬性,插入屬性(成員變量)并互相調用修改,自動初始化、銷毀、并在其他方法中指派修改等類似人工操作,支援‘百分比控制’
  3. 重命名方法,近似Xcode的Rename功能,識别類型、模闆、重載、重寫、繼承等關系
  4. 修改方法,利用重載技術修改函數原型并調用修改形參
  5. 修改字元串,支援任意字元串,加密處理(寫死->記憶體),原始字元串保留在注釋中友善檢查
    1. 設定‘最少長度’過濾
    2. 也可設定‘有效個數’搭配使用
  6. 重命名類,支援模闆等類型
    1. 可切換舊模式
    2. 字首設定
    3. 可設定‘重命名同名檔案’

Cocos2d-x

該部分功能整合至C++中,支援cocos2dx自動過濾

Swift

适配Swift5.3,SPM包管理項目暫未測試

  1. 重命名屬性,基本功能,不做過多描述,優勢:
    1. 類似OC重命名屬性,識别繼承鍊及嵌套類型,支援存儲和計算屬性、觀察器、包裝器、類屬性
    2. 可設定檔案名Model字尾過濾
  2. 重命名方法,基本功能改名字類似其他工具,不做過多描述,優勢:識别繼承鍊嵌套類型,支援(class、struct、enum)的靜态方法和執行個體方法,及可選鍊等
  3. 修改字元串,識别單行、多行、字元串插值、及擴充字元串,改後由加密和拆分字元組等多種方式自由組合,并保留原有字元的注釋,友善檢查
    1. 設定‘最少長度’過濾
    2. 也可設定‘有效個數’搭配使用
  4. 重命名類,類名不限制(例如:my、My),識别嵌套類型及typealias,支援class、struct,enum、protocol
    1. 可設定‘重命名同名檔案’
    2. 可設定‘字首’注意:目前Swift和OC混合項目,OC和Swift互相調用的部分需要手動加入黑名單,後續将優化。

圖文介紹

運作APP效果圖,使用前請詳細閱讀工具使用教程

iOS混淆探索自述功能圖文介紹更新日志感謝回報連結導航

image.png

更新日志

v4.5.0(2021.07.04)

  1. 修複OC插入文本,小機率插入的屬性重名問題
  2. 修複OC重命名屬性,子類重寫父類(@property)的set屬性方法,混淆後可能不一緻問題,以及個别運作時問題
  3. 修複OC插入方法,小機率typeof類型作為形參報錯問題

檢視更多曆史更新記錄

感謝回報

shizu2014、myhonior、imbahong、tabier008

連結導航

  1. 工具使用教程
  2. 軟體使用問答(Q&A)