1. 程式人生 > >iOS 初探代碼混淆(OC)

iOS 初探代碼混淆(OC)

粘貼 可讀性 develop height touch 密碼 pen http targe

iOS 初探代碼混淆(OC)

前言

自己做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代碼混淆

作者:c4ibd3
鏈接:https://juejin.im/post/5b06578f51882538c150744b

iOS 初探代碼混淆(OC)