硬核二进制安全:汇编语言快速入门底层语言基础

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

以上是关于硬核二进制安全:汇编语言快速入门底层语言基础的主要内容,如果未能解决你的问题,请参考以下文章

二进制分析实战:x86汇编快速入门

硬核二进制安全学习:Heap overflow堆溢出(壹)

零基础快速入门Java的秘诀

硬核二进制安全:Pwn Return To Text溢出漏洞的分析与利用

JAVA入门

超硬核:深入讲解Perl安全之代码审计——perl脚本中存在的问题与存在的安全风险