iOS 混淆代碼方式一(swift篇)

混淆代碼是為了防止別人反編譯代碼之后,根據函數(shù)名或者變量名來窺探你的app,從而了解app的內部實現(xiàn)。

在代碼混淆之前,使用class-dump進行逆向,可以看出逆向出了所有的屬性和方法,如圖:

混淆的原理

這里使用的混淆的原理是,用一串隨機生成的字符串來替換相應的函數(shù)名和變量名

如何實現(xiàn)混淆?

以下混淆方式通用于OC和swift,純OC的項目可以使用已經封裝好的ios-class-guard https://github.com/Polidea/ios-class-guard

第一步:在相應的項目工程下新建一個confuse.sh 和 func.list文件

$ cd?/Users/cafei/Desktop/SwiftTest?

$?touch confuse.sh

$?touch func.list

第二步:將新建的兩個文件拖到項目工程中

第三步:將以下腳本拷貝到剛新建的confuse.sh文件中

(此腳本源頭來源于https://blog.csdn.net/yiyaaixuexi/article/details/29201699)

以下是代碼截圖,復制黏貼confuse.sh文本請見http://m.itdecent.cn/writer#/notebooks/13159521/notes/31357519

以上是代碼截圖,復制黏貼confuse.sh文本請見http://m.itdecent.cn/writer#/notebooks/13159521/notes/31357519

第四步:新建一個.pch文件并添加相應的配置(如果項目中已經存在pch文件則不需要再新建,直接使用即可)

第五步:添加Run Script,并寫入腳本?$PROJECT_DIR/confuse.sh

第六步:給confuse.sh文件添加權限

$ cd?/Users/cafei/Desktop/SwiftTest?

$?chmod 755 confuse.sh

此時build項目工程,如果報錯"CodeObfuscation.h" file not found

解決方案:

(1)將pch文件中剛添加的頭文件注釋掉,如圖

(2)再次build項目工程,發(fā)現(xiàn)可以編譯成功了

(3)將pch文件中剛注釋掉的頭文件再打開,再次build,就可以編譯成功了

第五步:在func.plist文件中配置需要混淆的函數(shù)名和變量名

假設我現(xiàn)在需要混淆LoginViewController文件中的部分函數(shù)名和變量名,如圖配置即可

第六步:編譯項目工程看混淆結果

如上圖所示,混淆成功,函數(shù)名和變量名都已經變成了隨機生成的字符串,并且在symbols中可以查找到兩者之間的對應關系,方便后續(xù)查找bug等


二次更新:如何查看symbols中的內容

$ cd /Users/cafei/Desktop/SwiftTest

$ sqlite3 symbols.sqlite3

$?.databases

$?select * from symbols;

這時混淆前后的函數(shù)名和變量名對應關系就出現(xiàn)在你眼前啦

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容