數據保護API
開篇先扯幾句題外話,許多朋友都問我怎么不寫防啊,我確實有點猶豫。
hackers總是想象如果自己是開發者會怎么寫,然后才能找到入手點。同理,開發者們也要想象自己是hackers會怎么做,才能采取相應的防御措施。然后,就是一場遞歸的博弈。
拿越獄檢測這件事來說,起初大家只需判斷有無安裝Cydia就好了,hackers們說好,那我就不安裝Cydia也可以動手腳。開發者們又說,那你一定得用的上MobileSubstrate,bash,ssh吧,我去檢測手機有沒有安裝這些工具??墒怯钟惺裁从媚??你判斷什么我繞過去什么。
當class-dump大肆流行,函數符號都被暴露,開發者想盡辦法藏起自己的敏感函數代碼。hackers們也知道class-dump的死穴在哪里,于是新的檢索辦法油然而生。也就說,當一個防御手段成為流行,它就不會再是個讓hackers大罵“真特么費勁”的防御手段了。比如之前介紹的一個小技巧:內存數據擦除 ,hackers知道開發者都去擦數據了,那我hook memset在你擦之前去讀就好了。開發者說:我直接寫硬盤上然后刪除!hackers說:難道你沒聽說過文件恢復?
OK,貧的有點多了,本文介紹一下防御相關的話題————iOS的數據保護API。
文件系統中的文件、keychain中的項,都是加密存儲的。當用戶解鎖設備后,系統通過UDID密鑰和用戶設定的密碼生成一個用于解密的密碼密鑰,存放在內存中,直到設備再次被鎖,開發者可以通過Data PRotection API 來設定文件系統中的文件、keychain中的項應該何時被解密。
1)文件保護
2)keychain項保護
把一段信息infoStrng字符串寫進文件,然后通過Data Protection API設置保護。
設備鎖屏(帶密碼保護)后,即使是越獄機,在root權限下cat讀取那個文件信息也會被拒絕。
新聞熱點
疑難解答