|
3#
樓主 |
發表於 2009-5-8 18:09:19
|
只看該作者
剛剛似乎試出來一些成果. d8 m+ {* J0 A
方法就是在上一篇的基礎上
0 Y/ V: M# u+ ~1 o, J, h$ D0 F, _7 t: U! K
1) 找到task_struct* `4 U% p; V) ]: Y6 P5 L
2) 找到所屬的 mm& J3 d! f# ]* K& f2 ]: v6 _
2) 找到 mm 中的 pgd (page descriptor)+ K9 m. |& @$ ^- J) O3 E0 \- r
3) 有了pgd就可以用系統的函式,找到對應的 page table entry(pte)( v6 M3 s5 Y7 ~+ q. @. @3 q
例如: pgd_offset(), pmd_offset(), pte_offset()等等2 J0 M( [# D+ Q9 n
4) pa = (virtual address & 0xfffff000) | (pte & 0xfff)
& I$ E3 @% x7 F0 Z& S
6 R4 T: _. N& k4 p1 [& h z4 M應該就可以得到physical address。以上不知道有沒有錯誤或例外狀況。
) {' |6 l1 }$ V: C2 w; E目前猜想trust zone可能會造成加在 driver的這段code沒有access某些$ R' _, y6 O) o) v
資料的權利。但是對trush zone不是相當了解,不知道page table是不是
# \8 |6 ^8 X0 {9 A7 r會被保護到。 |
|