前言
本身作iOS開發也有幾年的時間了,平時作完項目基本就直接打包上傳到Appstore上,而後作上架操做了。可是最近,客戶方面提出了代碼安全的要求。說是要作代碼混淆,這方面的工做以前歷來沒有接觸過。而後就上網查了一下,原來有不少應用程序都作了代碼混淆。看來是我固步自封了......html
原由
使用classdump對原程序進行dump,能夠dump出全部源程序的函數全部信息:源程序全部函數類型,變量所有泄露。這樣的話,讓攻擊者,也就是黑客們瞭解了程序結構方便逆向。由於在工程中,咱們這些變量或函數命名都是有必定可讀性的,例如跟用戶名相關的,那通常裏面會有 userName,跟密碼相關的通常會有passWord,這樣定義也是爲了咱們本身代碼可讀性更強,咱們修改的時候才更加的方便。可是咱們相信,這麼個定義法,咱們只是但願方便咱們本身,咱們可不但願方便黑客們去破解咱們的APP。 總結出來就是一句話:「會把你項目中的全部方法和變量都羅列出來」。ios
開始混淆:
1.
在進行代碼混淆以前,咱們須要在咱們的項目中增長兩個文件:confuse.sh
&func.list
咱們打開咱們的終端命令行git

先cd到你項目的路徑下,而後回車
而後在終端中分別輸入
touch confuse.sh
和
func.list
而後回車

這個時候打開咱們的項目文件夾,就能看到多了兩個文件。這個時候咱們打開咱們的工程,把咱們建立的這兩個文件添加到項目中去

2
這個時候咱們點擊咱們的confuse.sh
文件能夠看到裏面的內容是空的,咱們要填一些代碼進去,點這個連接地址iOS安全攻防(二十三):Objective-C代碼混淆能夠把這位大神的代碼粘貼到本身的confuse.sh
文件中github
3
在項目中添加一個.PCH
文件。若是你說你不知道怎麼添加.pch
,不要緊。這裏有個連接地址能幫到你ios中pch文件的建立與配置
成功添加.pch
文件以後,咱們就要在.pch
文件中添加這麼一句代碼#import"codeObfuscation.h
而後咱們編譯一下,是否是報錯了?是否是這樣的?安全

Build Phases
中的左上角的
+
號,選中那個
New Run Script Phase
,而後以下圖所示,把你的
confuse.sh
文件的地址寫進去

4
而後接下來的就是如何進行代碼混淆了。函數
這個時候你就找到一個你想要混淆的類(.h .m)文件均可以。把你想混淆的代碼複製一下,而後粘貼到咱們的func.list
文件中去。而後編譯一下,而後把切換到這個界面post

5
打完收工,Over!!!!!
6
注意:該方法只能針對有.m.h的類進行混淆,靜態庫等只有.h文件的無法進行混淆
7
傳送門:Objective-C代碼混淆
做者:c4ibd3
連接:https://juejin.im/post/5b06578f51882538c150744bui