iOS逆向課程筆記(二)

3.iOS文件系統(tǒng)結(jié)構(gòu)
  • 可視化方式常看iOS系統(tǒng)文件
    ==在iOS通過Cydia安裝Apple File Conduit 2,在OS X使用iFunBox可以查看iOS系統(tǒng)文件(iOS和OS X需要在通一個(gè)局域網(wǎng)內(nèi))==

  • 通過SSH遠(yuǎn)程登錄iOS來查看

  • Filesystem Hierarchy Standard 文件系統(tǒng)層次化標(biāo)準(zhǔn)(以下簡(jiǎn)稱FHS)
    ==FHS為類UNIX操作系統(tǒng)的文件目錄結(jié)構(gòu)制定了一套標(biāo)準(zhǔn)隔躲,目的是讓用戶預(yù)知文件或目錄的存放位置空扎。UNIX操作系統(tǒng)的常見目錄結(jié)構(gòu)如下所示完域。==

       /:根目錄,以斜杠表示现喳,其他所有文件和目錄在根目錄下展開。
    
       /bin:"binary"的簡(jiǎn)寫犬辰,存放提供用戶級(jí)基礎(chǔ)功能的二進(jìn)制文件嗦篱,如ls、ps等幌缝。
    
       /boot:存放能使系統(tǒng)成功啟動(dòng)的所有文件灸促。iOS中此目錄為空。
    
       /dev:"device"的簡(jiǎn)寫涵卵,存放BSD設(shè)備文件浴栽。每個(gè)文件代表系統(tǒng)的一個(gè)塊設(shè)備或字符設(shè)備,一般來說轿偎,“塊設(shè)備”以塊為單位傳輸數(shù)據(jù)典鸡,如硬盤;而“字符設(shè)備”以字符為單位傳輸數(shù)據(jù)坏晦,如調(diào)制解調(diào)器萝玷。
    
       /sbin:"system binaries"的簡(jiǎn)寫,存放提供系統(tǒng)級(jí)基礎(chǔ)功能的二進(jìn)制文件昆婿,如netstat间护、reboot等。
    
       /etc:"Et Cetera"的簡(jiǎn)寫挖诸,存放系統(tǒng)腳本及配置文件汁尺,如passwd、hosts等多律。在iOS中痴突,/etc是一個(gè)符號(hào)鏈接,實(shí)際指向/private/etc狼荞。
    
       /lib:存放系統(tǒng)庫文件辽装、內(nèi)核模塊及設(shè)備驅(qū)動(dòng)等。iOS中此目錄為空相味。
    
       /mnt:"mount"的簡(jiǎn)寫拾积,存放臨時(shí)的文件系統(tǒng)掛載點(diǎn)。iOS中此目錄為空。
    
       /private:存放兩個(gè)目錄拓巧,分別是/private/etc和/private/var斯碌。
    
       /tmp:臨時(shí)目錄。在iOS中肛度,/tmp是一個(gè)符號(hào)鏈接傻唾,實(shí)際指向/private/var/tmp。
    
       /usr:包含了大多數(shù)用戶工具和程序承耿。/usr/bin包含那些/bin和/sbin中未出現(xiàn)的基礎(chǔ)功能冠骄,如nm、killall等加袋;/usr/include包含所有的標(biāo)準(zhǔn)C頭文件凛辣;/usr/lib存放庫文件。
    
      /var:"variable"的簡(jiǎn)寫职烧,存放一些經(jīng)常更改的文件蟀给,比如日志、用戶數(shù)據(jù)阳堕、臨時(shí)文件等跋理。其中/var/mobile和/var/root分別存放了mobile用戶和root用戶的文件,是重點(diǎn)關(guān)注的目錄恬总。
    
  • UNIX系統(tǒng)文件權(quán)限簡(jiǎn)介(UNIX一切皆文件:讀寫普通文件前普、目錄、設(shè)備壹堰、socket拭卿、管道、CPU信息贱纠、進(jìn)程信息等)
  • 系統(tǒng)用3位(bit)來表示文件的權(quán)限峻厚,從高位到低位分別是r(read)權(quán)限、w(write)權(quán)限谆焊,以及x(execute)權(quán)限惠桃。文件與用戶的關(guān)系存在以下三種可能性:
  • 此用戶是屬主用戶(文件所有者的權(quán)限)
  • 此用戶不是屬主用戶,但在屬主組里(組用戶權(quán)限)
  • 此用戶既不是屬主用戶辖试,又不在屬主組里(Other用戶權(quán)限)
```
1111 1111  = 2^0*1 + 2^1*1 + 2^2*1 + 2^3*1 + ...+2^7*1 = 2^8 - 1 

8421
1111  = 8+4+2+1 = 15
1011  = 8+2+1 = 11

rwx      r-x    r--
111      101    100 
所有者   屬組   其他

用3*3位來表示一個(gè)文件的權(quán)限辜王,如果某一位為1,則這一位代表的權(quán)限生效罐孝,否則無效呐馆。例如,111101101代表rwxr-xr-x莲兢,即該文件的屬主用戶擁有r汹来、w续膳、x權(quán)限,而屬主組和其他所有人只具有r和x權(quán)限收班;同時(shí)坟岔,二進(jìn)制的111101101轉(zhuǎn)換成十六進(jìn)制是755,也是一種常見的權(quán)限表示法闺阱。

可以使用chmod 命令修改文件權(quán)限炮车,如 chmod  755  filename

* iOS的獨(dú)有目錄
  ```
      /Applications:存放所有的系統(tǒng)App和來自于Cydia的App舵变,但不包括StoreApp酣溃。

      /Developer:如果一臺(tái)設(shè)備連接Xcode后被指定為調(diào)試用機(jī),Xcode就會(huì)在iOS中生成這個(gè)目錄纪隙,其中會(huì)含有一些調(diào)試需要的工具和數(shù)據(jù)赊豌。

      /Library:存放一些提供系統(tǒng)支持的數(shù)據(jù)。其中/Library/MobileSubstrate下存放了所有基于CydiaSubstrate(原名MobileSubstrate)的插件(如:tweak編寫的插件)绵咱。

      /System/Library:iOS文件系統(tǒng)中最重要的目錄之一碘饼,存放大量系統(tǒng)組件。

      /System/Library/Frameworks和/System/Library/PrivateFrameworks:存放iOS中的各種framework

      /System/Library/CoreServices里的SpringBoard.app:iOS桌面管理器(類似于Windows里的explorer)悲伶,是用戶與系統(tǒng)交流的最重要中介艾恼。

      /User:用戶目錄(其實(shí)就是mobile用戶的home目錄),實(shí)際指向/var/mobile麸锉,這個(gè)目錄里存放大量用戶數(shù)據(jù)钠绍,比如:

      /var/mobile/Media/DCIM下存放照片;

      /var/mobile/Media/Recordings下存放錄音文件花沉;

      /var/mobile/Library/SMS下存放短信數(shù)據(jù)庫柳爽;

      /var/mobile/Library/Mail下存放郵件數(shù)據(jù)。
      
      /var/mobile/Containers碱屁,存放StoreApp磷脯。值得注意的是,App的可執(zhí)行文件在bundle與App中的數(shù)據(jù)目錄被分別存放在/var/mobile/Containers/Bundle和/var/mobile/Containers/Data這兩個(gè)不同目錄下娩脾。其中/var/mobile/Containers/Data是我們常用的應(yīng)用沙盒目錄的起始目錄:NSString *directory = NSHomeDirectory(); //獲取沙盒根目錄

  ```


* iOS應(yīng)用(Store App)沙盒目錄:
- Application Bundle  包含應(yīng)用可執(zhí)行文件和資源文件

如獲取iOS上微信程序的Bundle路徑赵誓,可以通過ps -e | grep appname
luz-iphone:/ root# ps -e | grep WeChat
1368 ?? 5:41.43 /var/mobile/Containers/Bundle/Application/749DC69A-3A8D-4B5C-9926-1220E69FC85F/WeChat.app/WeChat

 - Application Data  包含App運(yùn)行生產(chǎn)的數(shù)據(jù)和配置信息等
    ```
    如獲取iOS上微信程序的Date路徑,可以通過cycript工具
    luz-iphone:~ root# cycript -p WeChat
    cy# directory = NSHomeDirectory()
    @"/var/mobile/Containers/Data/Application/986376B5-EF08-4CAF-81FB-CAE48D1FE4AE"
    cy# 
Date目錄結(jié)構(gòu)如下:
```
luz-iphone:/var/mobile/Containers/Data/Application/986376B5-EF08-4CAF-81FB-CAE48D1FE4AE root# ls
Documents/  Library/  tmp/
```
  • Document 存放應(yīng)用運(yùn)行時(shí)生成的并且需要保存的數(shù)據(jù)柿赊。注:iTunes或iCloud同步設(shè)備時(shí)會(huì)備份該目錄

  • Library/Caches 存放應(yīng)用運(yùn)行時(shí)生成的并且需要保存的數(shù)據(jù)架曹。iTunes或iCloud不同步。

  • Library/Preferences 存放偏好設(shè)置闹瞧。iOS的偏好設(shè)置(settings)應(yīng)用也會(huì)在該目錄查找應(yīng)用的設(shè)置信息绑雄。NSUserDefaults保存在該目錄下。iTunes或iCloud同步設(shè)備時(shí)備份該目錄奥邮。

  • tmp 存放應(yīng)用運(yùn)行時(shí)所需的臨時(shí)數(shù)據(jù)万牺。當(dāng)某個(gè)應(yīng)用沒運(yùn)行時(shí)罗珍,iOS系統(tǒng)可能會(huì)清除該目錄下的文件。但不可依賴這種自動(dòng)清除機(jī)制脚粟,應(yīng)該及時(shí)手動(dòng)清除覆旱。

4.Cycript工具介紹(作者:saurik,官網(wǎng):http://www.cycript.org/
  • Cycript是一款腳本語言核无,可以看作是Objective-JavaScript扣唱,它可以幫助我們輕松測(cè)試和驗(yàn)證函數(shù)效果。

    • 在越獄手機(jī)中可以通過注入方式在第三方應(yīng)用中運(yùn)行

    • 也可以用靜態(tài)庫的方式把cycript集成到自己的應(yīng)用(MonkeyDev团南,可以給非越獄iOS第三方App寫插件噪沙,但是權(quán)限受沙盒限制)

  • 在越獄手機(jī)中安裝Cycript

    • 在Cydia上搜索Cycript進(jìn)行安裝

    • apt-get install cycript

  • Cycript使用(注入到第三方進(jìn)程空間)

    • 注入Cycript模塊到第三方進(jìn)程
     //確認(rèn)進(jìn)程名或者進(jìn)程PID
     luz-iphone:/ root# ps -e | grep WeChat 
    

1368 ?? 6:17.44 /var/mobile/Containers/Bundle/Application/749DC69A-3A8D-4B5C-9926-1220E69FC85F/WeChat.app/WeChat

//打開方式1
luz-iphone:/ root# cycript -p WeChat
cy#

//打開方式2
luz-iphone:/ root# cycript -p 1368
cy#


- 退出cycript
 **Control+D**

- 實(shí)戰(zhàn)演練
  
//WeChat  cycript -p WeChat
[[UIApplication sharedApplication] setStatusBarHidden:YES]   //隱藏狀態(tài)欄
[[UIApplication sharedApplication] setStatusBarHidden:NO]    //顯示狀態(tài)欄

[[[UIAlertView alloc]initWithTitle:@"Tanzhou" message:@"Hello luz" delegate:ni cancelButtonTitle:@"ok" otherButtonTitles:nil, nil] show]            //彈框

[[UIApplication sharedApplication] setApplicationIconBadgeNumber:1000]   //設(shè)置badge數(shù)字 
[[UIApplication sharedApplication] setApplicationIconBadgeNumber:1]
[[UIApplication sharedApplication] setApplicationIconBadgeNumber:0]
[[UIApplication sharedApplication] setApplicationIconBadgeNumber:0]

//SpringBroad cycript -p SpringBroad
[[SBScreenShotter sharedInstance] saveScreenshot:YES]   截屏,閃光
[[SBScreenShotter sharedInstance] saveScreenshot:NO]   截屏吐根,不閃光
[[SBScreenFlash mainScreenFlasher] flashColor:[UIColor magentaColor] withCompletion:nil] 屏幕閃紫色光
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末正歼,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子拷橘,更是在濱河造成了極大的恐慌局义,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,639評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件冗疮,死亡現(xiàn)場(chǎng)離奇詭異萄唇,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)术幔,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門另萤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人特愿,你說我怎么就攤上這事仲墨。” “怎么了揍障?”我有些...
    開封第一講書人閱讀 157,221評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵目养,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我毒嫡,道長(zhǎng)癌蚁,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,474評(píng)論 1 283
  • 正文 為了忘掉前任兜畸,我火速辦了婚禮努释,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘咬摇。我一直安慰自己伐蒂,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,570評(píng)論 6 386
  • 文/花漫 我一把揭開白布肛鹏。 她就那樣靜靜地躺著逸邦,像睡著了一般恩沛。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上缕减,一...
    開封第一講書人閱讀 49,816評(píng)論 1 290
  • 那天雷客,我揣著相機(jī)與錄音,去河邊找鬼桥狡。 笑死搅裙,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的裹芝。 我是一名探鬼主播部逮,決...
    沈念sama閱讀 38,957評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼局雄!你這毒婦竟也來了甥啄?” 一聲冷哼從身側(cè)響起存炮,我...
    開封第一講書人閱讀 37,718評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤炬搭,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后穆桂,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體宫盔,經(jīng)...
    沈念sama閱讀 44,176評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,511評(píng)論 2 327
  • 正文 我和宋清朗相戀三年享完,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了灼芭。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,646評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡般又,死狀恐怖彼绷,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情茴迁,我是刑警寧澤寄悯,帶...
    沈念sama閱讀 34,322評(píng)論 4 330
  • 正文 年R本政府宣布,位于F島的核電站堕义,受9級(jí)特大地震影響猜旬,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜倦卖,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,934評(píng)論 3 313
  • 文/蒙蒙 一洒擦、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧怕膛,春花似錦熟嫩、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,755評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽洋侨。三九已至,卻和暖如春倦蚪,著一層夾襖步出監(jiān)牢的瞬間希坚,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,987評(píng)論 1 266
  • 我被黑心中介騙來泰國(guó)打工陵且, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留裁僧,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,358評(píng)論 2 360
  • 正文 我出身青樓慕购,卻偏偏與公主長(zhǎng)得像聊疲,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子沪悲,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,514評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容