反彙編學習筆記4 ADRP

2021-09-24 08:19:34 字數 536 閱讀 8223

sp 需要16位對齊 函式引數從x0開始呼叫

常量的獲取

adrp 指令: adr(address)p(page) adrp x0, x1 第一步:將1的值左移12位 (1 0000 0000 0000)= 0x1000 第二步:將pc暫存器的低12位清零 第三步:將前兩步的結果相加,放入x0暫存器

adrp是用來計算指定的資料位址到當前(runtime)pc值的相對偏移 因為後12bit為0,所以得到的偏移量是不精確的,後面的12bit(4kb)是用來自己去精確確定的。這個指令的目的是在以的到的位址為基位址,4kb的偏移位址以內一定有你要找的資料。

下移條指令一般就是去精確這個偏移位址的

**在編譯的時已經確定了**中的常量的位址,所以後面的偏移位址計算機本已經知道了。

全域性變數是位址傳遞,所以裡面是 int* 型別,要去到這個位址指向的值要用 *(int *) 所以要顯示的時候是 p *(int *) 0x1002e8d10

外掛程式在遊戲更新後就不能用了,是因為遊戲更新的時候這些位址改變了,這些位址是在編譯的時候確認的,重新編譯會導致位址改變。

學習筆記 2011 07 03 反彙編

include using namespace std int main 00c514e6 jmp main 27h 0c514a7h int a 0 00c514e8 mov dword ptr a 0 return 0 00c514ef xor eax,eax 00c514f1 pop edi ...

C 反彙編學習筆記(二)

chinese 1 位址 指標 引用 c 中位址標號用16進製表示,取乙個變數位址使用 操作符,只有變數才存在記憶體位址,常量沒有位址 不包括const定義的偽常量 指標是一種資料型別,用於儲存各種資料型別在記憶體中的位址。指標變數也可以取出位址,所以會出現多級指標。c 中引用不可以單獨定義,定義的...

C 反彙編學習筆記(一)

chinese c 整數與浮點數的儲存方式 1 整數型別 無符號整數的所有位都用來表示數值,有符號整數的最高位是符號位,其餘位以補碼格式儲存。補碼規則就是用0減去這個數的絕對值 取反加一 首先我們知道x x 反碼 0xffffffff,因此x x 反碼 1 0,因此x 補碼 0 x x 反碼 1。補...