06 08x86彙編程式設計

2021-10-03 17:03:24 字數 2191 閱讀 7358

以.  開頭的都是彙編指示,指導彙編器如何進行彙編

其中.file 和 .def用於除錯(通常可以忽略)

.text **段

.p2align a,b,c 指定下一行**的對齊方式

a: 2^a次冪對齊

b: 使用b來填充

c: 最多填充多少位元組

如 .p2align 4,,15 2^4對齊,空填充,最多填充15個位元組

.section 對應於pe檔案中的節區表

.equ factor,3 將factor設定為3 增加程式的可讀性

以 : 結尾的字串,是用以表示變數或者函式的位址符號

1.搞清楚系統呼叫與函式呼叫的區別,king級別,由int $0x80系統中斷

如果不了解系統呼叫可以看這篇bolg

系統呼叫參考**

$p=傳遞p的位址,相當於&p

例如 char buf[12]

movl $buf ,%edi ---->相當於將buf的首位址傳遞到%edi中

movl $0x89123318 , 0x89237182 將$0x89123318當作常數,傳入到位址為 0x89237182中

將多個相關的重定位物件檔案集成為乙個單一的帶索引的檔案,稱之為歸檔檔案(archive file).

ar rs libc.a \ ato.o printf.o random.o 將ato.o printf.o random.o 三個檔案打包成libc.a

記憶體分為四個區,**區,資料區,heap,stack

heap的上限稱為 system break

可以通過系統呼叫brk(0)獲得

也可以通過lib_c函式sbrk(0)

call no.45(%eax) 設定新的brk為%eax 返回新的brk儲存到%eax中

gcc -s -m32 -o2  

gcc -o2 -mpreferred-stack-boundary=2 -s 將棧以2^2對齊,

gcc -romit-frame-pointer %ebp不做棧幀基址暫存器,被解放,由%esp做指標暫存器

as -o --32 my-object-file.o helloworld.s

ld -o my-exe-file -m elf_i386 my-object-file.o

編譯出錯時:sudo apt-get install g++-multilib

ld -lc -dynamic-linker /lib/ld-linux.so.2 -o cupid cpuid.o

將動態鏈結庫/lib/ld-linux.so.2 生成cpuid.o可執行檔案

ld -shared write-record.o read-record.o -o librecord.so

將 write-record.o和reed-record.o 鏈結成動態庫檔案 librecord.so

ld -l . -dynamic-linker /lib/ld-linux.so.2 -o write-records -l record write-recoreds.o

使用共享庫檔案

將單個.o檔案中被外部使用的符號寫入符號表中,在pe檔案中就是匯出表

重定位,最後生成的檔案必須是完整的,是乙個單一的資料段和**段,將.o檔案的符號解析為乙個絕對位址,然後將物件檔案中符號引用更新為絕對位址

elf物件檔案標準的二進位制格式(由at&t)

.so 可在執行或者裝載時候鏈結

.o : 可重定位的物件檔案

新為絕對位址

3. elf物件檔案標準的二進位制格式(由at&t)

.so 可在執行或者裝載時候鏈結

.o : 可重定位的物件檔案

gcc -o2 -g -o p main.c swap.c 將main.c 和swap.c靜態鏈結成p檔案

170824 彙編 x86基礎

a.1625 5 王子昂 總結 2017年8月24日 連續第325天總結 b.逆向知識 資料移動分為5種方式 立即數到暫存器 立即數到記憶體 暫存器到暫存器 暫存器到記憶體或記憶體到暫存器 記憶體到記憶體 前4種是所有現代體系都支援的,第五種是x86獨有的,可以通過inc add來直接操作記憶體 另...

彙編學習(X86 VC)

暫存器 32 16 8 eax 0 eax ah al ecx 1 ecx ch cl edx 2 edx dh dl ebx 3 ebx bh bl esp 4 esp ebp 5 ebp esi 6 esi edi 7 edi mov eax,dword ptr ds 0x12ffc4 或mov...

X86彙編指令詳解

x86彙編基本分為七大體系 分別是 1 資料傳送指令 2 算術運算指令 3 邏輯運算指令 4 串操作指令 5 控制轉移指令 6 處理器控制指令 7 保護方式指令 先介紹資料傳送指令集 1 資料傳送指令 1.mov 格式 mov destination,source 功能 將s ource中的資料傳送...