1. <nobr id="easjo"><address id="easjo"></address></nobr>

      <track id="easjo"><source id="easjo"></source></track>
      1. 
        

      2. <bdo id="easjo"><optgroup id="easjo"></optgroup></bdo>
      3. <track id="easjo"><source id="easjo"><em id="easjo"></em></source></track><option id="easjo"><span id="easjo"><em id="easjo"></em></span></option>
          貴州做網站公司
          貴州做網站公司~專業!靠譜!
          10年網站模板開發經驗,熟悉國內外開源網站程序,包括DEDECMS,WordPress,ZBlog,Discuz! 等網站程序,可為您提供網站建設,網站克隆,仿站,網頁設計,網站制作,網站推廣優化等服務。我們專注高端營銷型網站,企業官網,集團官網,自適應網站,手機網站,網絡營銷,網站優化,網站服務器環境搭建以及托管運維等。為客戶提供一站式網站解決方案?。?!

          iOS逆向之文件系統

          來源:互聯網轉載 時間:2024-01-29 07:43:33

          前言

          作為一名iOS開發者,長期以來和MacOS、iOS系統打交道,對iOS和MacOS系統并不陌生。在開發中,我們也經常訪問甚至修改MacOS的某些目錄,每個系統目錄都有其特殊的功能定位。而iOS系統源自MacOS,在很多方面iOS都和MacOS很相似,筆者借助最近逆向的機會,系統的學習&梳理了下iOS的系統目錄及其結構,順便總結了常見的文件目錄的特殊定位。希望本篇文章能夠讓讀者有所收獲。

          iOS系統目錄

          iOS源自macOS,而macOS又基于Unix系統內核,因此其目錄結構與UNIX系統相同。iOS系統包含兩類目錄,一類是保留的UNIX傳統目錄,另一類是iOS/macOS特有的目錄。

          iOS設備越獄后可以用工具對iOS文件系統目錄一探究竟。下圖是筆者使用iFunbox查看的越獄后iPhone設備的目錄結構。

          iOS文件系統目錄

          UNIX傳統目錄

          • /bin:“binary” 的簡稱。存放提供用戶級基礎功能的二進制文件。如 cat、chomod、chown等。
          • /sbin:“system binaries” 的簡稱。提供系統級基礎功能的二進制文件,如mount、reboot等。
          • /dev:“device” 的簡稱。存放BSD設備文件。
          • /etc:“EtCetera” 的簡稱。存放系統腳本及配置文件。如passwd、hosts等。iOS中此目錄是一個符號鏈接,實際指向/private/etc。
          • /boot:存放能使系統成功啟動的所有文件,iOS中此目錄為空。
          • /lib:存放系統文件、內核模塊及設備驅動等。iOS中此目錄為空。
          • /mnt:“mount” 的簡稱。存放臨時的文件系統掛載點。iOS中此目錄為空。
          • /tmp:臨時文件存放目錄。在iOS中,此目錄是一個符號鏈接,實際指向/private/var/tmp。
          • /usr:存放大量的工具和第三方程序。
            • 其中,/usr/lib 目錄存放了各種dylib(動態鏈接庫)。
            • /usr/include 目錄存放了所有的標準C頭文件。
            • /usr/bin目錄存放著一些后期安裝的用戶命令,如zip、unzip等。iOS逆向動態調試用到的debugserver也將是放到此目錄。
          • /var:“variable” 的簡稱。存放經常變化的文件,如日志文件。其中,/var/mobile和/var/root分別存放了mobile用戶和root用戶的文件,是非常重要的目錄。在iOS中,此目錄是一個符號鏈接,實際指向/private/var/tmp。

          iOS特有目錄

          • /Applications:存放所有系統應用以及從Cydia安裝的應用,但不包括從App Store下載安裝的應用。
          • /Developer:當設備連接到Xcode時,此目錄下會存放一些開發調試相關的文件和工具,如debugserver。
          • /Library:存放一些提供系統支持的數據,其中的/Library/MobileSubstrate/DynamicLibraries 是越獄開發者最感興趣的目錄,里面存放了所有基于CydiaSubstrate的插件。
          • /System:僅包含一個Library子目錄,是iOS文件系統中最重要的目錄之一,存放著大量的系統組件。其中,/System/Library/CoreServices 里面的SpringBoard.app 是iOS桌面管理器,是用戶與系統交互的重要媒介;/System/Library/Frameworks 和 /System/Library/PrivateFrameworks 目錄存放iOS系統中的公開及私有框架??傊?/System是系統中最重要的目錄,一般情況下輕易不要修改他。
          • /User:用戶目錄,實際指向/var/mobile。這個目錄下存放著大量的用戶數據,比如用戶照片、錄音、短信數據及語音等。
          • /cores:內核轉儲文件存放目錄,當一個進程崩潰時,如果系統允許則會產生轉儲文件。
          • /private:存放/etc、/var兩個鏈接目錄的目標目錄,分別是/private/etc和/private/var。

          部分系統目錄

          • /var/root/Library/Lockdown:設備激活證書存放目錄。
          • /Library/Keychains:設備系統級密碼等存放目錄。
          • /Library/Logs:系統日志存放目錄,./var/logs也指向此目錄。
          • /Library/Logs/CrashReporter:系統進程崩潰日志目錄。
          • /System/Library/LaunchDaemon:系統啟動進程plist文件存放目錄,若想不啟動某進程,刪除該目錄下對應的plist的文件(操作需慎重,刪除之前先備份)。
          • /System/Library/Frameworks:公有框架(開發者可使用)存放目錄。
          • /System/Library/PrivateFrameworks:私有框架(開發者不可使用)存放目錄。
          • /System/Library/CoreServices/SpringBoard.app:桌面管理器應用,用戶與系統交互的中介。
          • /var/mobile/Containers:存放App Store應用相關文件,其中,子目錄/Bundle存放應用可執行文件(App Store下載的App就存放在這個目錄),子目錄/Data存放應用數據。

          部分系統應用資料存放目錄

          • /var/wireless/Library/CallHistory:存放通話記錄,網絡流量,使用時間等記錄。
          • /var/mobile/Library/AddressBook:存放聯系人數據。
          • /var/mobile/Library/Calendar:存放日歷及提醒事項記錄文件。
          • /var/mobile/Library/Maps:存放地圖搜索書簽記錄。
          • /var/mobile/Library/SMS:存放短信。
          • /var/mobile/Library/Notes:存放備忘錄。
          • /var/mobile/Library/Safari:存放Safari保存的書簽等。
          • /var/mobile/Library/Mail:存放電子郵件數據。
          • /var/mobile/Library/Preferences/com.apple.accountsettings.plist:存放郵箱設置。
          • /var/mobile/Library/Preferences/com.apple.mobilephone.speeddial.plist :存放個人收藏(快速撥號)。
          • /var/mobile/Media/Recordings:存放語音備忘錄。
          • /var/mobile/Media/iTunes_Control:存放iTunes 同步的電影,歌曲等媒體文件。
          • /var/mobile/Media/DCIM:存放照片里面的膠卷。
          • /var/mobile/Media/PhotoData:存放照片里面的圖片(含相機膠卷的識別庫縮略圖等)。
          • /var/mobile/Media/Books:存放iBooks同步的書籍。
          • /var/mobile/Media/PhotoStreamsData:存放照片流。

          iOS App沙盒目錄結構

          出于安全考慮,iOS系統把每個應用以及數據都放到一個沙盒(sandbox)里面,應用只能訪問自己沙盒目錄里面的文件、網絡資源等(也有例外,比如系統通訊錄、照相機、照片等能在用戶授權的情況下被第三方應用訪問)[1]。

          請注意,使用沙盒的目的是為了防止被攻擊的應用危害到系統或者其他應用,它并不能阻止應用本身被攻擊,因此,開發者需要防御式的編程來避免應用被攻擊。蘋果官方是這樣說的:

          Important: The purpose of a sandbox is to limit the damage that a compromised app can cause to the system. Sandboxes do not prevent attacks from happening to a particular app and it is still your responsibility to code defensively to prevent attacks. For example, if your app does not validate user input and there is an exploitable buffer overflow in your input-handling code, an attacker could still hijack your app or cause it to crash. The sandbox only prevents the hijacked app from affecting other apps and other parts of the system.

          為了便于應用組織數據,每個沙盒內都有幾個名字固定的子目錄用來保存文件,下圖是沙盒的目錄結構:

          iOS沙河目錄結構

          主要有4個目錄官方文檔:

          • MyApp.app 該目錄包含了應用程序本身的數據,程序打包的時候的資源文件和一些本地文件就是存放在這個目錄下的。程序的可執行程序、plist文件也在這個目錄下。

          這個目錄不會被iTunes同步

          • Documents使用這個目錄來保存關鍵數據。關鍵數據指那些應用不可再生的數據。

          這個目錄會被iTunes同步

          • Library用來保存一些配置文件和其他一些文件。其中使用NSUserDefaults寫的設置數據都會保存到Library/Preferences目錄下的一個plist文件中。Library/Caches可以用來保存可再生的數據,比如網絡請求,用戶需要負責刪除對應文件。

          這個目錄(除了Library/Caches外)會被iTunes同步

          • tmp

          使用這個目錄來保存各種應用下次啟動不再需要的臨時文件。當應用不再需要這些文件的時候,需要主動將其刪除。(當應用不再運行的時候,系統可能會將此目錄清空。) 這個目錄不會被iTunes同步

          獲取主要目錄路徑的方式

          沙盒目錄

          NSLog(@"%@",NSHomeDirectory());

          MyApp.app

          NSLog(@"%@",[[NSBundle mainBundle] bundlePath]);

          tmp

          NSLog(@"%@",NSTemporaryDirectory());

          Documents

          NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);NSString *docPath = [paths objectAtIndex:0];NSLog(@"%@",docPath);

          Library

          NSArray *paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);NSString *libPath = [paths objectAtIndex:0];NSLog(@"%@",libPath);

          iOS應用結構

          • App Store下載的App安裝在/var/mobile/Container/Bundle/Application下
          • 系統自身的App和越獄商店安裝的App安裝在/Applications下

          iOS文件權限

          iOS是一個多用戶操作系統,每個用戶扮演著不同的角色,對系統的控制權也各不相同。root用戶具有系統最高控制權,可以執行所有命令,而mobile用戶只能執行一些權限比較低的命令?!敖M”是用戶的一種組織方式,一個組可以包含多個用戶,一個用戶也可以歸屬于多個組。

          我們使用ls -l命令可以查看文件的各種權限。類似“-rwxr-xr--”這樣的就是文件的權限信息。權限信息由10個bit來劃分,最前面一個bit表示文件類型。如“d”表示目錄、“l”表示符號鏈接、“-”表示普通文件。接下來的9個bit平分為3組,分別如下:

          • 所有者權限:決定文件的所有者可以對文件執行的操作。
          • 所屬組權限:決定屬于改組的成員對他所擁有的文件能夠執行的操作。
          • 其他人權限:表示其他人對于該文件能夠進行的操作。

          r:read 代表讀權限 w: write 代表寫權限 x: execute代表執行權限 -: 該位置無對應權限

          權限設置

          權限設置使用二進制表示:如果某一位為1則代表權限生效,為0無效。例如:要使某個文件的所有者具有r、w、x權限,所屬組具有r、w權限,其他人只有r權限。則可用二進制表示為:111-110-100。同時二進制111-110-100轉成八進制為764。所以可以使用chmod命令設置權限:

          chmod 764 xxx.txt

          參考文章

          File System Programming Guide

          iOS之系統文件目錄

          《iOS應用逆向與安全之道》

          標簽:springboard.app-
          上一篇:Vue + Element UI
          下一篇:骰子5點

          網絡推廣與網站優化公司(網絡優化與推廣專家)作為數字營銷領域的核心服務提供方,其價值在于通過技術手段與策略規劃幫助企業提升線上曝光度、用戶轉化率及品牌影響力。這...

          在當今數字化時代,公司網站已成為企業展示形象、傳遞信息和開展業務的重要平臺。然而,對于許多公司來說,網站建設的價格是一個關鍵考量因素。本文將圍繞“公司網站建設價...

          在當今的數字化時代,企業網站已成為企業展示形象、吸引客戶和開展業務的重要平臺。然而,對于許多中小企業來說,高昂的網站建設費用可能會成為其發展的瓶頸。幸運的是,隨...

          什么是new age?新時代,中國俗稱“新世紀音樂”。與古典音樂和流行音樂相比,新時代音樂只是近年來興起的一種新的音樂形式,但它已迅速發展成為當代音樂的一大流派。它以其豐富的音效、華麗的旋律、雄偉的氣勢、逼真的氛圍征服了眾多的歌迷,尤其是那些熱心的音響愛好者。上世紀60年代末,一些德國音樂家將電子合成器聲音的概念融入到原創聲音表演或即興創作的方式中,這激發了許多新音樂家運用更多元技術探索新領域。這...

          常州恐龍園要怎么去?恐龍公園的門票是120元。從常州火車站往南走到長途汽車站,上29路,大約1小時:市區中華恐龍園線——縣直街袁茵第三汽車公司上行:縣直街-小營前路橋市場-長洲賓館-艾博路-公交集團公司-春亭橋(鵬程賓館)-蔻馳站-小東門商場(火車站)-紅梅新村-北路-紅星美凱龍-北環新村-永寧花園-翠竹新村-翠竹東站-棗江花園-棗江北站-體育中心-國際學校-。下游:中華恐龍園-建東學院-何海東路...

          qt錯誤代碼0xc0000005怎么解決?0xc0000005此錯誤原因:內存錯誤,軟件。如果是新安裝的應用程序或驅動程序,建議卸載。解決方案如下:方法1:卸載最新更新或回滾驅動程序更新。1.重啟電腦或按電源鍵,然后按F8進入高級選項界面,選擇最后正確的配置嘗試修復。方法2:修改注冊表鍵值1、win R快捷鍵打開運行對話框,輸入regedit命令,然后回車。2.打開注冊表編輯器,將以下路徑復制到p...

          TOP
          国产初高中生视频在线观看|亚洲一区中文|久久亚洲欧美国产精品|黄色网站入口免费进人
          1. <nobr id="easjo"><address id="easjo"></address></nobr>

              <track id="easjo"><source id="easjo"></source></track>
              1. 
                

              2. <bdo id="easjo"><optgroup id="easjo"></optgroup></bdo>
              3. <track id="easjo"><source id="easjo"><em id="easjo"></em></source></track><option id="easjo"><span id="easjo"><em id="easjo"></em></span></option>