歡迎光臨
每天分享高質量文章

iOS 初探程式碼混淆(OC)

作者:c4ibd3
連結:https://juejin.im/post/5b06578f51882538c150744b


前言


自己做iOS開發也有幾年的時間了,平時做完專案基本就直接打包上傳到Appstore上,然後做上架操作了。但是最近,客戶方面提出了程式碼安全的要求。說是要做程式碼混淆,這方面的工作之前從來沒有接觸過。然後就上網查了一下,原來有很多應用程式都做了程式碼混淆。看來是我固步自封了……


起因


使用classdump對原程式進行dump,可以dump出所有源程式的函式所有資訊:源程式所有函式型別,變數全部洩露。這樣的話,讓攻擊者,也就是駭客們瞭解了程式結構方便逆向。因為在工程中,我們這些變數或函式命名都是有一定可讀性的,例如跟使用者名稱相關的,那一般裡面會有 userName,跟密碼相關的一般會有passWord,這樣定義也是為了我們自己程式碼可讀性更強,我們修改的時候才更加的方便。但是我們相信,這麼個定義法,我們只是希望方便我們自己,我們可不希望方便駭客們去破解我們的APP。總結出來就是一句話:“會把你專案中的所有方法和變數都羅列出來”。


開始混淆:


1.

在進行程式碼混淆之前,我們需要在我們的專案中增加兩個檔案:confuse.sh&func.list
我們開啟我們的終端命令列


先cd到你專案的路徑下,然後回車

然後在終端中分別輸入 touch confuse.shfunc.list然後回車


這個時候開啟我們的專案檔案夾,就能看到多了兩個檔案。這個時候我們開啟我們的工程,把我們建立的這兩個檔案新增到專案中去


2.

這個時候我們點選我們的confuse.sh檔案可以看到裡面的內容是空的,我們要填一些程式碼進去,點這個連結地址iOS安全攻防(二十三):Objective-C程式碼混淆可以把這位大神的程式碼貼上到自己的confuse.sh檔案中


3.

在專案中新增一個.PCH檔案。如果你說你不知道怎麼新增.pch,沒關係。這裡有個連結地址能幫到你ios中pch檔案的建立與配置
成功新增.pch檔案之後,我們就要在.pch檔案中新增這麼一句程式碼#import"codeObfuscation.h 然後我們編譯一下,是不是報錯了?是不是這樣的?



我們先把報錯的程式碼註釋掉,然後去專案的Build Phases中的左上角的+號,選中那個New Run Script Phase,然後如下圖所示,把你的confuse.sh檔案的地址寫進去



然後傳回我們的PCH檔案,把我們剛才註釋的那行程式碼開啟,然後再編譯一下子,是不是透過了。這個時候就證明,程式碼混淆的前期工作,我們已經做好了。

4.

然後接下來的就是如何進行程式碼混淆了。


這個時候你就找到一個你想要混淆的類(.h .m)檔案都可以。把你想混淆的程式碼複製一下,然後貼上到我們的func.list檔案中去。然後編譯一下,然後把切換到這個介面



我們就可以看到,我們定義的屬性或者方法名都被混淆了。

5.

打完收工,Over!!!!!


6.

註意:該方法只能針對有.m.h的類進行混淆,靜態庫等只有.h檔案的沒法進行混淆


7.

傳送門:Objective-C程式碼混淆  https://github.com/cAibDe/CodeConfusion



●編號261,輸入編號直達本文

●輸入m獲取文章目錄

推薦↓↓↓

 

Linux學習

更多推薦:18個技術類微信公眾號

涵蓋:程式人生、演演算法與資料結構、駭客技術與網路安全、大資料技術、前端開發、Java、Python、Web開發、安卓開發、iOS開發、C/C++、.NET、Linux、資料庫、運維等。

贊(0)

分享創造快樂