硬核二进制安全:汇编语言快速入门底层语言基础
Posted 鸿渐之翼
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了硬核二进制安全:汇编语言快速入门底层语言基础相关的知识,希望对你有一定的参考价值。
X86 Register:
General-Purpose Register
本文简单介绍了计算机底层基本知识与常用的汇编语言
16-bit:AX,BX,CX,DX
32-bit:
EAX(Accumulator)累加寄存器
EBX(Base Register)基地址寄存器
ECX(Count Register)计数寄存器
EDX(Data Register)数据寄存器
EBP(Base Pointer)堆栈寄存器
EDI(Index Register)变址寄存器
ESP(Stack Pointer)堆栈顶指针
CS——(Code Segment Register)代码段
DS——(Data Segment Register)数据段
ES——(Extra Segment Register)附加数据段
SS——(Stack Segment Register)堆栈段寄存器
FS——(Extra Segment Register)附加堆栈段寄存器
GS——(Extra Segment Register)附加堆段寄存器
CS:EIP准确定位一个命令
EFLAGS Register:
Memory More Work Space:
movl %eax,%edx edx=eax; register mode 直接寻址
movl $0x123,%edx edx=0x123; immediate 间接寻址
movl (%ebx),%edx edx=(int32_t)ebx; direct
movl (%ebx),%edx edx=(int32_t)ebx; indirect
movl 4(%ebx),%ebx edx=*(int32_t)(ebx+4); displaced
Stack Memory Operation
How to execute Push command in stack
Push:
pushl %eax
subl $4,%esp #开辟一个virtual varibal memory
POP:
popl %eax
movl (%esp),%eax
addl $4,%esp
pushl %8
movl %esp,%ebp
;%ebp=%esp
subl $4,%esp
;%esp = $4 %ebp=%4
movl $8,(%esp)
%(esp)=$8
enter:
pushl %ebp
movl %esp,%ebp
leave
movl %ebp,%esp
popl %ebp
如何把c程序编译成汇编
gcc -s -o test.s test.c
2021/6/11
以上是关于硬核二进制安全:汇编语言快速入门底层语言基础的主要内容,如果未能解决你的问题,请参考以下文章