confuse(iOS馬甲包,上架神器)

前言

機(jī)緣巧合偶遇iOS馬甲包業(yè)務(wù),前期也使用過目前市面上其他得工具,實(shí)際效果不太理想。經(jīng)過大量實(shí)踐,開發(fā)出一款功能齊全的混淆工具。工具的主要功能OC、C++已封裝成Mac應(yīng)用,其他功能還在封裝中,敬請期待。公測階段: 免費(fèi)

提示

為了提高通用性,近期不斷重構(gòu)(>=v1.2.0)之前老版本的功能,為此新建測試工程confuse_test,大家在實(shí)際使用過程中如果遇到問題,歡迎擴(kuò)展測試工程,請?jiān)诠こ讨姓堊⒚鱞ug細(xì)節(jié)。

1.2.0之前的老版本說明:
簡介:不涉及語法及編譯要求,但是混淆后可能出現(xiàn)局部漏改或者改錯,請自行添加至黑名單過濾。
適用項(xiàng)目:C++、Swift、RN等還未適配的混合項(xiàng)目。
使用條件:目前能用v1.1.3,其他過期了

目前Swift和OC混合項(xiàng)目的Swift默認(rèn)不修改,但是Swift引用到OC的需要自己添加值黑名單,后續(xù)將優(yōu)化。

自述

其實(shí)識別一個工具的優(yōu)劣,只需看看它能否修改方法名的所有參數(shù)名(極少)、帶block的參數(shù)的方法(極少),修改布局(較少)、插入的是代碼還是‘垃圾’(Apple今年不止三歲了)。更別說“還有誰...”能識別宏、區(qū)分繼承鏈等上下文關(guān)聯(lián)內(nèi)容,智能識別不可修改部分(+ (void)init;- (void)reloadData;基本能改,做到的有幾個呢?),正?;煜昊静粓?bào)錯(除了一些個別語法不嚴(yán)謹(jǐn)造成混淆后報(bào)錯)。也歡迎大家使用不同工具混淆測試工程confuse_test,對比效果。
馬甲包的本質(zhì):

  1. 階段一減低重復(fù)率 ,本人開發(fā)初期的版本和目前市面上的其它工具基本相似,主要是‘名稱’全局替換這一個基本的功能
  2. 階段二減少相似度(相同元素的正態(tài)分布),目前該工具經(jīng)過優(yōu)化已經(jīng)有了很大的改善,已經(jīng)在慢慢往這方面靠近,詳情見以下功能介紹。事物都有兩面性,功能越強(qiáng)大混淆耗時越長,如果你的項(xiàng)目很大,混淆幾個小時也是有可能的,請不要見怪,后續(xù)持續(xù)優(yōu)化中。

功能

confuse是一款混淆工具,盡可能模擬人工開發(fā),仿照Xcode部分功能,避免機(jī)核4.3、2.1、2.3.1、賬號調(diào)查等。
目標(biāo):模擬人工修改一切能改的地方,這也是為什么本工具只有黑名單沒有白名單的原因
詳細(xì)功能如下(基本功能不做描述,詳見其他工具):

已完成

通用部分

  1. [項(xiàng)目配置],只要選擇項(xiàng)目路徑,自動完成其他默認(rèn)配置
    1. 全局設(shè)置‘忽略路徑’,支持正則
    2. 可以根據(jù)‘target’混淆
    3. 自定義添加‘敏感詞’
  2. [資源替換],混淆前指定需要替換的資源文件夾,自動進(jìn)行同名文件替換,方便快捷
  3. [修改文件屬性],如創(chuàng)建時間、訪問時間、修改時間
  4. [修改項(xiàng)目],無需刪除Cocoapods
    1. 可設(shè)置‘修改uuid’,徹底翻新
    2. ‘修改target’名稱,相關(guān)聯(lián)信息同步更新
  5. 自動備份源碼

Objective-C

  1. [刪除注釋],可‘保留空格’‘保留pragma’設(shè)置,利于測試階段查看
  2. [修改圖片],質(zhì)量修改、大小偏移、局部像素微調(diào)
  3. [重命名圖片],智能名詞替換,自動糾正圖片名和xcassets文件夾名不對應(yīng)的情況
    1. 可設(shè)置‘運(yùn)行拼接名稱’,用于運(yùn)行時通過字符串拼接生成的圖片名
    2. 可設(shè)置‘重命名關(guān)聯(lián)字符串,用于修改字符串與圖片名相等的情況
    3. 可設(shè)置‘忽略危險名稱’開關(guān)
  4. [插入圖片],自動插入圖片,同時根據(jù)上下文及類型模擬人工調(diào)用,可指定插入個數(shù)
  5. [重命名屬性],支持@property的所有類型,基本功能,改名字、前綴類似其他工具,不做過多描述,優(yōu)勢:
    1. 識別語法,識別類型、繼承關(guān)系,屬性名混淆和類名(包含繼承鏈)關(guān)聯(lián),同名屬性不同類混淆后將不一致,自動識別系統(tǒng)屬性
    2. 可設(shè)置文件名Model后綴過濾
    3. 【智能名詞替換】,混淆后不同類存在相同屬性名,模擬正常開發(fā)
    4. 【智能識別不可修改部分】,實(shí)現(xiàn)最大化混淆
  6. [插入屬性],關(guān)聯(lián)已有類型,智能名詞替換
    1. ‘百分比控制’
    2. ‘Model后綴’開關(guān),目的:避免Model歸檔或者數(shù)據(jù)轉(zhuǎn)模型失敗
    3. 可多次執(zhí)行,指數(shù)x2遞增
  7. [重命名方法],近似Xcode的Rename功能,基本功能:改名字、前綴類似其他工具,不做過多描述,優(yōu)勢:
    1. 語法相關(guān),識別類型、繼承關(guān)系,支持多參修改,方法名混淆和類名(包含繼承鏈)及類型關(guān)聯(lián),同名方法不同類、同類同名方法不同類型(類方法、對象方法)混淆后將不一致
    2. 【智能名詞替換】,混淆后不同類存在相同方法名,以及相同類相同方法不同類型,模擬正常開發(fā)
    3. 【智能識別不可修改部分】,不放過任何一個可以修改的內(nèi)容
  8. [插入方法],插入并調(diào)用上下文關(guān)聯(lián)方法,告別“垃圾代碼”,優(yōu)勢:
    1. 根據(jù)方法的返回值類型,在分類中創(chuàng)建相應(yīng)的方法。同時封裝原方法的返回值并調(diào)用。
    2. 可多次執(zhí)行,指數(shù)x2遞增
  9. [修改方法],模擬人工封裝調(diào)用,優(yōu)勢:
    1. 對原方法進(jìn)行拆分調(diào)用并根據(jù)參數(shù)類型(支持繼承)局部調(diào)整,詳情見支持參數(shù)類型匯總表
    2. 可多次執(zhí)行,指數(shù)x2遞增
  10. [重命名全局變量],智能名詞替換
  11. [修改全局變量],替換全局變量名、全局變量轉(zhuǎn)化為全局函數(shù)、混淆字符串變量值
  12. [修改局部變量],模擬人工封裝調(diào)用,變量名關(guān)聯(lián)類型,優(yōu)勢:
    1. 局部變量值運(yùn)行時保持不變,詳情見支持類型匯總表
    2. 可多次執(zhí)行,指數(shù)x2遞增
  13. [修改字符串],支持任意字符串,加密處理(硬編碼->內(nèi)存),原始字符串保留在注釋中方便檢查
    1. 設(shè)置‘最少長度’過濾
    2. 也可設(shè)置‘有效個數(shù)’搭配使用
  14. [修改xib、storyboard],自動插入視圖,并修改內(nèi)部結(jié)構(gòu)屬性
  15. [修改字體],對項(xiàng)目中使用的字體隨機(jī)微調(diào),識別宏
  16. [修改顏色],對項(xiàng)目中UI控件顏色隨機(jī)偏移,識別宏
  17. [UI布局偏移],支持Frame、Mansonry、SDAutoLayout常見布局微調(diào)
  18. [重命名類],類名不限制(例如:my、My),可指定添加前綴,優(yōu)勢:
    1. 智能名詞替換
    2. 可設(shè)置‘重命名同名文件’
    3. 可設(shè)置‘重命名相似字符串’,(忽略|相等|包含)三種設(shè)置
    4. 新增‘糾正非標(biāo)準(zhǔn)點(diǎn)語法’,針對非標(biāo)準(zhǔn)的點(diǎn)語法調(diào)用(方法當(dāng)做屬性調(diào)用)
  19. [插入文件],生成其它文件(創(chuàng)建自定義控件,模擬正常開發(fā)),項(xiàng)目中自動調(diào)用;注意:目前需要手動導(dǎo)入文件(在項(xiàng)目根路徑下,會生成"other_xxx_file"的文件夾,將它拖入工程即可)
  20. [插入文本],生成json、txt、doc、plist等文本文件,項(xiàng)目中自動調(diào)用;注意:目前需要手動導(dǎo)入文件(在項(xiàng)目根路徑下,會生成"other_xxx_text"的文件夾,將它拖入工程即可)
  21. 優(yōu)化中...[重命名多語言],支持漢字,所有字符串將被修改

C++

  1. [重命名類],支持模板等類型
    1. 可切換舊模式
    2. 前綴設(shè)置
    3. 可設(shè)置‘重命名同名文件’
  2. [重命名方法],近似Xcode的Rename功能,【智能識別不可修改部分】
    1. 語法相關(guān),識別類型、模板、重載、重寫、繼承等關(guān)系
    2. 【智能名詞替換】,混淆后不同類存在相同方法名,模擬正常開發(fā)
  3. [重命名屬性],支持所有類型屬性,【智能識別不可修改部分】
    1. 識別語法,識別類型、繼承,同名屬性不同類混淆后將不一致
    2. 【智能名詞替換】,混淆后不同類存在相同屬性名,模擬正常開發(fā)
  4. [修改字符串],支持任意字符串,加密處理(硬編碼->內(nèi)存),原始字符串保留在注釋中方便檢查
    1. 設(shè)置‘最少長度’過濾
    2. 也可設(shè)置‘有效個數(shù)’搭配使用

Cocos2d-x

該部分功能整合至C++中,支持cocos2dx自動過濾
以上所有功能均支持黑名單過濾,對指定的內(nèi)容進(jìn)行屏蔽,忽略混淆。

名詞解釋

  • 智能名詞替換:重命名時使用關(guān)聯(lián)類型已有信息+相近語義+類型+部分舊詞匯等組合,并且過濾敏感詞匯,同時用戶也可以自定義敏感詞,棄用‘隨機(jī)單詞無腦組合’
  • 智能識別不可修改部分:通過類型及繼承鏈方式識別系統(tǒng)、第三方、Pod方法,并不是‘簡單’的相等判斷,例如:
    • 類方法:+ (void)init;原則上任何地方都能改
    • 對象方法:- (void)reloadData;不是UITableView的子類是可以改的
    • 屬性:@property (readonly) NSUInteger length;如果不是NSString的子類也是可以改的

規(guī)劃中

更新迭代將按照以下順序依次進(jìn)行

  1. Objective-C(90%),重構(gòu)的目的是為了提高工具的通用性和穩(wěn)定性,及強(qiáng)化功能
    1. 重構(gòu)《多語言》
    2. 音頻、視頻文件使用少,后續(xù)添加
  2. C++(40%),開發(fā)中...
    1. 字符串加密混淆
    2. 方法:插入、修改
    3. 屬性:修改、插入
  3. Lua(0%)的針對性太強(qiáng)了,暫時不開放,暫時不打算重構(gòu)有需要在說吧
  4. Swift(5%),本人實(shí)際項(xiàng)目使用不多,故排在最后,看用戶需求再決定
  5. 其他功能:
    1. 迭代混淆(50%),保留上次混淆記錄,用戶只要維護(hù)源碼就行
    2. 快速混淆模式

圖文介紹

運(yùn)行APP效果圖,使用前請?jiān)敿?xì)閱讀工具使用教程

image.png

更新日志

v3.4.0(2021.01.06)

  1. 新增C++[修改字符串],加密處理(硬編碼->內(nèi)存),原始字符串保留在注釋中方便檢查
    1. 設(shè)置‘最少長度’過濾
    2. 也可設(shè)置‘有效個數(shù)’搭配使用
  2. 新增局部變量模板支持類型NSDictionary
  3. 優(yōu)化OC[修改字符串],減少混淆時間20%~30%,沒有字符串時不處理,避免插入空內(nèi)容
  4. 更新‘target選項(xiàng)’為‘scheme選擇’,移除名稱限制,現(xiàn)在可任意
  5. 修復(fù)上一個版本bug,原因:上一個版本修改太多了,改懵了,抱歉
    1. OC[插入文件]混淆失效
    2. OC[重命名方法]init開頭混淆異常

查看更多歷史更新記錄

感謝反饋

shizu2014myhonior、imbahong

鏈接導(dǎo)航

  1. 工具使用教程
  2. 軟件使用問答(Q&A)
  3. [修改方法]參數(shù)類型匯總表
  4. [修改局部變量]修改局部變量-支持類型匯總表
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容