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

前言

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

提示

為了提高通用性硕舆,近期不斷重構(gòu)(>=v1.2.0)之前老版本的功能秽荞,為此新建測試工程confuse_test,大家在實際使用過程中如果遇到問題抚官,歡迎擴展測試工程扬跋,請在工程中請注明bug細節(jié)。

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

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

自述

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

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

功能

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

已完成

通用部分

  1. [項目配置],只要選擇項目路徑阻星,自動完成其他默認配置
    1. 全局設(shè)置‘忽略路徑’,支持正則
    2. 可以根據(jù)‘target’混淆
    3. 自定義添加‘敏感詞’
  2. [資源替換]已添,混淆前指定需要替換的資源文件夾妥箕,自動進行同名文件替換,方便快捷
  3. [修改文件屬性]更舞,如創(chuàng)建時間畦幢、訪問時間、修改時間
  4. [修改項目]缆蝉,無需刪除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è)置‘運行拼接名稱’年局,用于運行時通過字符串拼接生成的圖片名
    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. 【智能識別不可修改部分】陨界,實現(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. 對原方法進行拆分調(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. 局部變量值運行時保持不變,詳情見支持類型匯總表
    2. 可多次執(zhí)行皇帮,指數(shù)x2遞增
  13. [修改字符串]卷哩,支持任意字符串,加密處理(硬編碼->內(nèi)存)属拾,原始字符串保留在注釋中方便檢查
    1. 設(shè)置‘最少長度’過濾
    2. 也可設(shè)置‘有效個數(shù)’搭配使用
  14. [修改xib将谊、storyboard],自動插入視圖渐白,并修改內(nèi)部結(jié)構(gòu)屬性
  15. [修改字體]瓢娜,對項目中使用的字體隨機微調(diào),識別宏
  16. [修改顏色]礼预,對項目中UI控件顏色隨機偏移,識別宏
  17. [UI布局偏移]虏劲,支持Frame托酸、Mansonry、SDAutoLayout常見布局微調(diào)
  18. [重命名類]柒巫,類名不限制(例如:my励堡、My),可指定添加前綴堡掏,優(yōu)勢:
    1. 智能名詞替換
    2. 可設(shè)置‘重命名同名文件’
    3. 可設(shè)置‘重命名相似字符串’应结,(忽略|相等|包含)三種設(shè)置
    4. 新增‘糾正非標(biāo)準(zhǔn)點語法’,針對非標(biāo)準(zhǔn)的點語法調(diào)用(方法當(dāng)做屬性調(diào)用)
  19. [插入文件]泉唁,生成其它文件(創(chuàng)建自定義控件鹅龄,模擬正常開發(fā)),項目中自動調(diào)用亭畜;注意:目前需要手動導(dǎo)入文件(在項目根路徑下扮休,會生成"other_xxx_file"的文件夾,將它拖入工程即可)
  20. [插入文本]拴鸵,生成json玷坠、txt蜗搔、doc、plist等文本文件八堡,項目中自動調(diào)用樟凄;注意:目前需要手動導(dǎo)入文件(在項目根路徑下,會生成"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)容進行屏蔽勤庐,忽略混淆。

名詞解釋

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

規(guī)劃中

更新迭代將按照以下順序依次進行

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

圖文介紹

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

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選項’為‘scheme選擇’鸭轮,移除名稱限制,現(xiàn)在可任意
  5. 修復(fù)上一個版本bug橄霉,原因:上一個版本修改太多了窃爷,改懵了,抱歉
    1. OC[插入文件]混淆失效
    2. OC[重命名方法]init開頭混淆異常

查看更多歷史更新記錄

感謝反饋

shizu2014姓蜂、myhonior按厘、imbahong

鏈接導(dǎo)航

  1. 工具使用教程
  2. 軟件使用問答(Q&A)
  3. [修改方法]參數(shù)類型匯總表
  4. [修改局部變量]修改局部變量-支持類型匯總表
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市覆糟,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌遮咖,老刑警劉巖滩字,帶你破解...
    沈念sama閱讀 216,496評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異御吞,居然都是意外死亡麦箍,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評論 3 392
  • 文/潘曉璐 我一進店門陶珠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來挟裂,“玉大人,你說我怎么就攤上這事揍诽【魅兀” “怎么了栗竖?”我有些...
    開封第一講書人閱讀 162,632評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長渠啤。 經(jīng)常有香客問我狐肢,道長,這世上最難降的妖魔是什么沥曹? 我笑而不...
    開封第一講書人閱讀 58,180評論 1 292
  • 正文 為了忘掉前任份名,我火速辦了婚禮,結(jié)果婚禮上妓美,老公的妹妹穿的比我還像新娘僵腺。我一直安慰自己,他們只是感情好壶栋,可當(dāng)我...
    茶點故事閱讀 67,198評論 6 388
  • 文/花漫 我一把揭開白布辰如。 她就那樣靜靜地躺著,像睡著了一般委刘。 火紅的嫁衣襯著肌膚如雪丧没。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,165評論 1 299
  • 那天锡移,我揣著相機與錄音呕童,去河邊找鬼。 笑死淆珊,一個胖子當(dāng)著我的面吹牛夺饲,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播施符,決...
    沈念sama閱讀 40,052評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼往声,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了戳吝?” 一聲冷哼從身側(cè)響起浩销,我...
    開封第一講書人閱讀 38,910評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎听哭,沒想到半個月后慢洋,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,324評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡陆盘,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,542評論 2 332
  • 正文 我和宋清朗相戀三年普筹,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片隘马。...
    茶點故事閱讀 39,711評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡太防,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出酸员,到底是詐尸還是另有隱情蜒车,我是刑警寧澤讳嘱,帶...
    沈念sama閱讀 35,424評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站醇王,受9級特大地震影響呢燥,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜寓娩,卻給世界環(huán)境...
    茶點故事閱讀 41,017評論 3 326
  • 文/蒙蒙 一叛氨、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧棘伴,春花似錦寞埠、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至阱穗,卻和暖如春饭冬,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背揪阶。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評論 1 269
  • 我被黑心中介騙來泰國打工昌抠, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人鲁僚。 一個月前我還...
    沈念sama閱讀 47,722評論 2 368
  • 正文 我出身青樓炊苫,卻偏偏與公主長得像,于是被迫代替她去往敵國和親冰沙。 傳聞我的和親對象是個殘疾皇子侨艾,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,611評論 2 353