64位下JMP遠跳地址的計算方法
如果你分配的記憶體地址是64位的話。如: 504BEA0000, 你可以這樣
方法一:
48 B8 0000EA4B50000000 - mov rax,000000504BEA0000
FF E0 - jmp rax
指令和機器碼:
mov rax, 64位地址 的機器碼就是 “48 B8 64位地址的little-endian(需要64位即8個位元組)”
jmp rax 的機器碼 FF E0
這個方法會佔用12個位元組。如果你還要儲存rax暫存器內容和還原暫存器,你還需要額外的2兩個位元組,即14個位元組。
方法二:
如果跳轉前後的地址都是32位的,那麼地址的換算和32位沒有什麼區別,都是用的相對偏移。
方法三:
504BEA0006 - FF 25 00000000 - jmp qword ptr [504BEA000C]
504BEA000C - 00 00 - add [rax],al
504BEA000E - EA 4B500000 0000 - jmp 0000:0000504B
把64位的跳轉地址000000504BEA0000作為資料直接寫到跳轉語句504BEA0006的下面504BEA000C處。那麼跳轉語句永遠都是FF 25 00000000, 它會讀取接下來的8個位元組作為跳轉地址來使用的。而這個地址就是你申請到的記憶體地址。可以看到這種方法需要14個連續位元組,且不改變暫存器的內容。
當然也可以把跳轉地址的資料寫到其他的地方如: 04BEA000D處。 那麼跳轉語句的FF 25 00000000就變成FF 25 01000000, 其中01000000 little-endian讀下來就是00000001=1 即關於504BEA000C的相對地址是1。這後面4個位元組其實就是資料地址關於504BEA000C的偏移量。和32位的原理是相同的。
總之,以上三種方法各有特色也各有利弊。方法一和三對於32和64位地址是通用的。方法二適用當地址是32位的情況下。而對於第一種方法需要修改暫存器,但是不需要計算跳轉地址,而且定址範圍包括整個64位可用地址空間。第三種方法不修改暫存器,但需要計算偏移地址,而且和32位一樣定址空間限制在32位即前後2GB的範圍內。所以根據需要自己取捨吧。
相關文章
- 正確區分LJMP、AJMP、SJMP、JMP跳轉指令
- 透過手機遠端控制計算機方法計算機
- 帝國CMS實現下載地址直接下載而不需要跳轉的方法教程
- IP地址分段計算 (轉)
- 如何計算網路地址和廣播地址
- 計算機儲存器的容量計算和地址轉換計算機
- 子網掩碼、網路地址、廣播地址的計算
- 在動態IP下遠端連線計算機計算機
- windows伺服器下指定IP地址遠端訪問伺服器的設定方法Windows伺服器
- 帶你瞭解IP地址的計算
- win10怎麼查遠端桌面的ip地址_win10檢視遠端桌面ip地址的方法Win10
- 計算機網路之二:IP地址與MAC地址計算機網路Mac
- 雲端計算的戰爭遠沒結束
- 微軟認證:遠端開啟遠端計算機的遠端桌面微軟計算機
- 網路和IP地址計算器
- DDR地址和容量計算、Bank理解
- 總算找到eclipse 3.02的正常下載地址Eclipse
- 檢視本地計算機的私有/公有 IP 地址計算機
- 謝希仁 計算機網路第五版下載地址計算機網路
- word公式怎麼計算 word公式計算的方法公式
- 什麼是計算機 cpu 的地址匯流排?計算機
- 得到計算機的主機名和IP地址 (轉)計算機
- 遠端操控多臺計算機計算機
- SAS JMP Statistical Discovery Pro for mac 資訊統計處理工具Mac
- 計算方法之祖沖之的精度
- VB計算圓周率的方法
- 遠端辦公背後的雲端計算博弈
- PowerShell獲取遠端計算機的時間計算機
- 想寫程式嗎?遠離你的計算機!計算機
- linux下的計算器Linux
- IP地址規劃和設計方法
- 【計算機組成原理】第6章 計算機的運算方法計算機
- Paypal Rest Api自定義物流地址(跳過填寫物流地址)RESTAPI
- Linux下VNC遠端控制的使用方法LinuxVNC
- Ubuntu系統下配置IP地址方法介紹Ubuntu
- 雲端計算離生活還有多遠
- 取IP地址的方法
- 遠端桌面此計算機無法連線到遠端計算機請嘗試重新連線。計算機