本身作iOS開發也有幾年的時間了,平時作完項目基本就直接打包上傳到Appstore上,而後作上架操做了。可是最近,客戶方面提出了代碼安全的要求。說是要作代碼混淆,這方面的工做以前歷來沒有接觸過。而後就上網查了一下,原來有不少應用程序都作了代碼混淆。看來是我固步自封了......html
使用classdump對原程序進行dump,能夠dump出全部源程序的函數全部信息:源程序全部函數類型,變量所有泄露。這樣的話,讓攻擊者,也就是黑客們瞭解了程序結構方便逆向。由於在工程中,咱們這些變量或函數命名都是有必定可讀性的,例如跟用戶名相關的,那通常裏面會有 userName,跟密碼相關的通常會有passWord,這樣定義也是爲了咱們本身代碼可讀性更強,咱們修改的時候才更加的方便。可是咱們相信,這麼個定義法,咱們只是但願方便咱們本身,咱們可不但願方便黑客們去破解咱們的APP。 總結出來就是一句話:「會把你項目中的全部方法和變量都羅列出來」。ios
在進行代碼混淆以前,咱們須要在咱們的項目中增長兩個文件:confuse.sh
&func.list
咱們打開咱們的終端命令行
git
touch confuse.sh
和
func.list
而後回車
這個時候咱們點擊咱們的confuse.sh
文件能夠看到裏面的內容是空的,咱們要填一些代碼進去,點這個連接地址iOS安全攻防(二十三):Objective-C代碼混淆能夠把這位大神的代碼粘貼到本身的confuse.sh
文件中github
在項目中添加一個.PCH
文件。若是你說你不知道怎麼添加.pch
,不要緊。這裏有個連接地址能幫到你ios中pch文件的建立與配置
成功添加.pch
文件以後,咱們就要在.pch
文件中添加這麼一句代碼#import"codeObfuscation.h
而後咱們編譯一下,是否是報錯了?是否是這樣的?
安全
Build Phases
中的左上角的
+
號,選中那個
New Run Script Phase
,而後以下圖所示,把你的
confuse.sh
文件的地址寫進去
而後返回咱們的PCH文件,把咱們剛纔註釋的那行代碼打開,而後再編譯一會兒,是否是經過了。這個時候就證實,代碼混淆的前期工做,咱們已經作好了。
而後接下來的就是如何進行代碼混淆了。函數
這個時候你就找到一個你想要混淆的類(.h .m)文件均可以。把你想混淆的代碼複製一下,而後粘貼到咱們的func.list
文件中去。而後編譯一下,而後把切換到這個界面 ui