二进制安全 二进制安全 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: POP: 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程序编译成汇编 本期作者 鸿渐之翼(王驭停) 深圳市狩猎者网络安全技术有限公司知柯信息安全联合创始人 知柯信息安全 2021 |
|