Objective-C 代碼混淆(自動)

爲了防止他人通過class-dump反編譯我們的APP後,嵌入惡意代碼,我們有必要對源碼進行混淆。

就其原理,就是用一個隨機的字符串在App編譯前替換我們需要混淆的關鍵字,讓別人反編譯之後也是一臉懵逼,無從下手。

這裏簡單說一下,混淆的時候要注意那些事項:

  • 不能對Apple系統的API做混淆,不然就會編譯不過,甚至導致程序crash;
  • 不能對IBAction類型的方法和IBOutlet類型的屬性做混混淆;
  • 如果一個類名和xib或者storyboard有關聯,那麼這個類也不能被混淆;
  • 如果完全同樣的方法名出現在不同的文件中,但有一個或者多個是IBAction類型的,那麼也不能做混淆。屬性也是同樣的道理;
  • 有一些特殊關鍵字如username,有可能會當做網絡請求的請求參數,那麼這樣的關鍵字也不能被混淆。

我參考ZMConfuse,自己動手寫了一個腳本:vp_confuse.sh,它會自動獲取項目中需要混淆的類名、屬性、方法(首關鍵字)、協議名,並排除不希望被混淆的關鍵字。

當然,需要我們在腳本中做少許的配置。

  1. 文件名前綴 修改$FILE_NAME_PREFIX的內容。比如”vp”,那麼在自動生成的文件中,都會有vp的前綴,生成的.h文件會自動轉成大寫的VP前綴。當然,你可以自定義命名規則,如果你懂Linux shell的話。
  2. 腳本所在目錄 修改$CONFUSE_ROOT_FILE,所有通過腳本自動生成的文件將會添加到該路徑下,方便管理。

更多請參考Demo:https://github.com/renpan1990/VPCodeObfuscation

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章