armv8最多支援48根位址,4級頁表,這樣最多支援user space和kernnel space 分別是256tb
其中user space佔據低端位址
kernel可以支援48/42/39 根位址
# config_arm64_va_bits_39 is not set
config_arm64_va_bits_48=y
最多四級頁表
config_pgtable_levels=4
可以支援4k/16k/64k的pages
unsigned long virt, phys_addr_t size,
pgprot_t prot,
phys_addr_t (*pgtable_alloc)(void),
int flags)
while (pgdp++, addr = next, addr != end);
這裡會建立pgd,每個pgd表示的範圍用pgdir_size 用來表示,在va=48bit,levels等於4的情況下。
pgditr_size 是512gb,pud_size等於1g,pmd_szie等於2m。page_size等於4k。因為pmd_size等於2m。
所以hugepage 最小size等於2m
其中ptrs_per_pdg/pud/pmd/pte 都等於512.
在對映的時候每個階段都會按照size 作為步長來優化,例如pgd的步上就是pgditr_size等於512gb
arm64入棧出棧 棧 ARM64
棧 棧 是一種具有特殊的訪問方式的儲存空間 後進先出,last in out firt,lifo sp和fp暫存器 sp暫存器在任意時刻會儲存我們棧頂的位址.fp暫存器也稱為x29暫存器屬於通用暫存器,但是在某些時刻我們利用它儲存棧底的位址 注意 arm64開始,取消32位的 ldm,stm,pus...
ARM64除錯環境
自從上一次zctf做了一道arm64的逆向題目後,我決定記錄下利用qemu搭建arm64的環境的過程,以後肯定會遇到更多arm平台下的reverse和pwn。我要模擬的是64位的arm環境,所以需要使用的是qemu system aarch64。在kali下,使用apt get install qe...
Arm64彙編 BFXIL指令
下屬專案 測試用例數量 問題背景無0 解決方法無1 總結無0復現一套加密演算法時,遇到了bfxil指令。ida中顯示情況如下 bfxil w9,w16,2 2 ida使用fn f5操作得到偽 如下 v4 v4 v8 0xfc 2 3 其中v4就是w9,v8 0xfc 這個整體就是w16,定義如下 u...