1.4版本
來自猜猜我叫什么_bd1f的技術(shù)支持
來自Stark1937?的建議
閱讀本篇文章,需要先會(huì)class-dump. O(∩_∩)O謝謝蒜魄。推薦San心兩yi_鐘的安裝步驟
先大致解釋一下“編譯"暖呕、"反編譯":
編譯:就是把千千萬萬行字符串(也叫代碼斜做,或者源文件),變成010101010101(機(jī)器碼湾揽,也叫目標(biāo)代碼)
編譯過程:預(yù)處理-編譯-匯編-鏈接
我的腳本運(yùn)行在預(yù)處理階段瓤逼。
反編譯:就是把0101010111110001100(機(jī)器碼笼吟,也叫目標(biāo)代碼),變成千千萬萬行字符串(也叫代碼,或者源文件)
? ? ?最近三年一直待在銀行做App,由于銀行對(duì)安全要求較高霸旗,所以iOS的代碼必須要有混淆的措施赞厕,初期實(shí)施了念茜姐的混淆方案,但是領(lǐng)導(dǎo)說定硝,我們要自動(dòng)混淆皿桑,方法名字不能一個(gè)一個(gè)的添加到func.list中,所以方法名只能從.m和.h文件中抽取了蔬啡,但是如何屏蔽系統(tǒng)的方法名诲侮,暫行的策略是:將自己定義的方法名全部添加一個(gè)前綴。
? ? 例如 “hsk_funtion1”箱蟆; “hsk_funtion2”沟绪;“hsk_funtion3”;
在Xcode-->Target--->Build Phases--->添加Run Script
通過class-dump 反編譯之后:Appdelegate 效果
通過class-dump 反編譯之后:ViewController 效果
codeObfuscation.h宏定義文件空猜、confuse.sh腳本文件绽慈、func.list函數(shù)列表文件的關(guān)系。
程序每次預(yù)處理辈毯,都就會(huì)執(zhí)行confuse.sh,從.m和.h文件中按照"一定的規(guī)則"抽取需要混淆的函數(shù)名坝疼,全部寫到func.list中,然后再?gòu)膄unc.list中逐行提取函數(shù)名進(jìn)行宏定義,宏定義使用隨機(jī)字符串,然后寫到codeObfuscation.h文件中。
func.list函數(shù)列表抽取谆沃,和宏定義是腳本自動(dòng)完成钝凶,不需要手動(dòng)抽函數(shù)和手動(dòng)宏定義呢。
您的星星唁影,是我最大的鼓勵(lì)耕陷。最近想把HSKConfuse集成到CocoaPods,敬請(qǐng)期待据沈。O(∩_∩)O謝謝
另送一份:iOS 腳本打包 傻瓜版,無需改變配置 github地址
推薦文章: