linux在arm中並沒有io埠概念,暫存器和記憶體位於記憶體空間的時候稱作io記憶體。
這裡簡單說一下操作步驟:
1、申請
2、對映
3、訪問
4、釋放
具體操作操作步驟如下:
1、申請——request_mem_region
申請後在系統相當於對已有資源做了個標記,即本資源已經申請占用,若相同資源再申請時核心會報錯。
2、對映———ioremap
通過ioremap才能將物理暫存器位址對映成虛擬位址方能於核心中應用,這裡的好處是,可以通過基位址加偏移來訪問暫存器。
3、訪問
這裡有特定的讀寫操作函式如writel etc.
4、釋放
對映完後要釋放資源使用到的函式為iounmap+release_mem_region
說明:有時不通過申請而直接對映訪問,只不過,這樣有點不規範,但核心中的應用還是很多,而且容易相互影響。
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 頁表對映
armv8最多支援48根位址,4級頁表,這樣最多支援user space和kernnel space 分別是256tb 其中user space佔據低端位址 kernel可以支援48 42 39 根位址 config arm64 va bits 39 is not set config arm64 ...