以. 開頭的都是彙編指示,指導彙編器如何進行彙編
其中.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中的資料傳送...