




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、(參見上集)(參見上集(參見上集)奔跑吧Linux社區(qū)開源精神 奔跑不息奔跑吧Linux社區(qū)開源精神 奔跑不息奔跑吧Linux社區(qū)開源精神 奔跑不息X0X7:用于傳遞子程序參數(shù)和結(jié)果,使用時不需要保存,多余參數(shù)采用堆棧傳遞,64位返回結(jié)果采用X0表示,128位返回結(jié)果采用X1:X0 表示。X29:幀指針寄存器,用于連接棧幀,使用時需要保存。X30:寄存器LRX31:堆棧指針寄存器SP奔跑吧Linux社區(qū)開源精神 奔跑不息注意:本次ARM64的,和上集(x86_64/centos篇)的實驗代碼是一樣的奔跑吧Linux社區(qū)開源精神 奔跑不息奔跑吧Linux社區(qū)開源精神 奔跑不息奔跑吧Linux社區(qū)
2、開源精神 奔跑不息奔跑吧Linux社區(qū)開源精神 奔跑不息奔跑吧Linux社區(qū)開源精神 奔跑不息奔跑吧Linux社區(qū)開源精神 奔跑不息奔跑吧Linux社區(qū)開源精神 奔跑不息奔跑吧Linux社區(qū)開源精神 奔跑不息奔跑吧Linux社區(qū)開源精神 奔跑不息奔跑吧Linux社區(qū)開源精神 奔跑不息實驗?zāi)康模豪斫鈇rm64的棧是怎么布局的已知條件如上圖的30多個通用寄存器的值,求解函數(shù)調(diào)用關(guān)系以及調(diào)用 棧?奔跑吧Linux社區(qū)開源精神 奔跑不息:奔跑吧Linux社區(qū)開源精神 奔跑不息奔跑吧Linux社區(qū)開源精神 奔跑不息奔跑吧Linux社區(qū)開源精神 奔跑不息奔跑吧Linux社區(qū)開源精神 奔跑不息奔跑吧Linu
3、x社區(qū)開源精神 奔跑不息LR的值,上一個函數(shù)調(diào)用的地方就是LR的值-4調(diào)用該函數(shù)的 當(dāng)前棧的地址, sp調(diào)用該函數(shù)時候的PC值該函數(shù)的符號表名稱奔跑吧Linux社區(qū)開源精神奔跑不息LR的地址是ffff00000b903b50,LR的值為ffff00000808486cPC =LR的值 - 4奔跑吧Linux社區(qū)開源精神 奔跑不息奔跑吧Linux社區(qū)開源精神 奔跑不息奔跑吧Linux社區(qū)開源精神 奔跑不息奔跑吧Linux社區(qū)開源精神 奔跑不息的原因的進程的PID奔跑吧Linux社區(qū)開源精神 奔跑不息奔跑吧Linux社區(qū)開源精神 奔跑不息x0存放形參1,x1存放了形參2,x3存放了形參3。把x0的
4、值存放到sp+40的地方,把x1的值存放到sp+32的地方把x2的值存放到sp+24的地方把sp+24的地址的值,搬移到x0,然后調(diào)用down_read()函數(shù)奔跑吧Linux社區(qū)開源精神 奔跑不息create_oops函數(shù)的棧地址,sp指向這里從第2個參數(shù)里面mydev_priv.sem的值,反推出第三個參數(shù)是對的奔跑吧Linux社區(qū)開源精神奔跑不息奔跑吧Linux社區(qū)開源精神 奔跑不息奔跑吧Linux社區(qū)開源精神 奔跑不息奔跑吧Linux社區(qū)開源精神 奔跑不息奔跑吧Linux社區(qū)開源精神 奔跑不息奔跑吧Linux社區(qū)開源精神 奔跑不息奔跑吧Linux社區(qū)開源精神 奔跑不息把x22的值存放到
5、棧里SP+104x22寄存器的值給了x0,作為down_read()函數(shù)的第一個參數(shù)奔跑吧Linux社區(qū)開源精神 奔跑不息參考奔跑吧Linux內(nèi)核第534頁,關(guān)于讀寫信號量counter的含義有其他的讀者類型或者寫者類型的進程睡眠等待在這里owner為1表示持有鎖者是一個讀者類型的奔跑吧Linux社區(qū)開源精神奔跑不息mmap_sem因此,我們知道持有這個鎖的進程是神馬人馬呢,原來是test進程,哈哈mm_struct奔跑吧Linux社區(qū)開源精神 奔跑不息奔跑吧Linux社區(qū)開源精神 奔跑不息疑問:那test進程在什么地方又去申請了寫者類型的讀寫鎖呢?奔跑吧Linux社區(qū)開源精神 奔跑不息接下來
6、,我們推導(dǎo)和分析這個鎖的狀態(tài)奔跑吧Linux社區(qū)開源精神 奔跑不息2. 從這里看到x25寄存器應(yīng)該是指向mm_struct數(shù)據(jù)結(jié)構(gòu),因為mmap_sem在mm_struct 結(jié)構(gòu)的偏移量是0x601. 從這里看到x24寄存器存放了mmap_sem的地址奔跑吧Linux社區(qū)開源精神 奔跑不息感覺SP+48+8的位置應(yīng)該存放了mmap_sem的結(jié)構(gòu)體這里從棧讀出來的值不對,感覺這里的內(nèi)容被改寫了,那怎么辦?為啥這里棧的內(nèi)容被破壞了?因為在函數(shù)最后,又寫了這個棧地址奔跑吧Linux社區(qū)開源精神 奔跑不息x19x28:臨時寄存器,使用時必須保存。繼續(xù)沿著backtrace去分析反匯編。因為前面分析了,
7、mmap_sem的值被保存到x24寄存器,看看后續(xù)有沒有人把x24寄存器的值保存到棧里面?奔跑吧Linux社區(qū)開源精神 奔跑不息奔跑吧Linux社區(qū)開源精神 奔跑不息從而推斷出 mmap_sem這個鎖是那個家伙持有的,和ps進程推導(dǎo)的結(jié)果是一樣一樣的奔跑吧Linux社區(qū)開源精神 奔跑不息奔跑吧Linux社區(qū)開源精神 奔跑不息demodrv_open()獲取了mmap_sem讀者鎖proc_pid_cmdline_read()嘗試去獲取mmap_sem讀者鎖malloc分配內(nèi)存獲取mmap_sem寫者鎖獲取了鎖,不釋放,氣死你被阻塞奔跑吧Linux社區(qū)開源精神 奔跑不息奔跑吧Linux社區(qū)開源精
8、神 奔跑不息奔跑吧Linux社區(qū)開源精神 奔跑不息我們沒有辦法從do_work函數(shù)里推導(dǎo)出mutex鎖長什么樣,因為沒有對應(yīng)的變量存在棧里面,我們愛莫能助!奔跑吧Linux社區(qū)開源精神 奔跑不息奔跑吧Linux社區(qū)開源精神 奔跑不息笨叔故意在mydev_work數(shù)據(jù)結(jié)構(gòu)里保存了一個name字符串,用來驗證我們推導(dǎo)的內(nèi)容是否正確的奔跑吧Linux社區(qū)開源精神 奔跑不息從mutex鎖的主要內(nèi)容我們知道:1. owner表示持有這個鎖的進程的task_struct2. counter為負數(shù)說明有進程在等待這個鎖注意這里:在最新4.19的內(nèi)核代碼里, mutex的owner這個成員的低7比特位做一些特殊用途,所以這里把末尾的3去掉看你有沒有眼力發(fā)現(xiàn)笨叔的貓膩,哈哈奔跑吧Linux社區(qū)開源精神 奔跑不息owner的低3位有特殊用途奔跑吧Linux社區(qū)開源精神 奔跑不息奔跑吧Li
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年語文考查項目與實施計劃試題及答案
- 小學(xué)一年級語文技能提升試題及答案
- 浙江省浙北G2聯(lián)盟2022-2023學(xué)年高一下學(xué)期4月期中聯(lián)考生物學(xué)試題(含答案)
- 2024年統(tǒng)計學(xué)考試學(xué)習(xí)難點闡述試題及答案
- 2024年汽車維修工輪胎與懸掛試題及答案
- 小學(xué)一年級語文試題及答案全面展示
- 二手車評估的心理因素分析試題及答案
- 2024年市場營銷領(lǐng)域的案例分析能力試題及答案
- 2024年計算機基礎(chǔ)知識測驗試題及答案
- 2024年小學(xué)六年級語文考試的試題及答案總結(jié)
- 創(chuàng)意AI時代人工智能ppt模板課件
- 工程項目管理(第五版)第三章
- 《設(shè)計色彩——色彩的基礎(chǔ)知識》PPT課件(完整版)
- 客戶受電工程竣工檢驗意見書(南網(wǎng))
- 基于單片機控制的異步電動機變頻調(diào)速系統(tǒng)的設(shè)計
- 泛光照明施工方案(DOC)
- 土地使用權(quán)(住宅用地)市場比較法評估測算表
- DFMEA全解(完整版)
- (最新整理)世界水利發(fā)展史
- 超市新員工進職[新版]ppt課件
- (完整版)護士延續(xù)注冊體檢表(總2頁)
評論
0/150
提交評論