退役考研选手在线学pwn_1
主要尝试通过pwn方向将计算机组成原理和数据结构相关的知识串一下,达到快速学习的目的。本人非科班,跨考计算机(悲
本篇的话主要借鉴了探姬师傅的hello-ctf的pwn入门教程0.汇编语言(x86)(个人觉得是很好的入门教程)
可能一些解读和学习有很多不当之处,欢迎各位大佬鞭策
汇编语言
在开始正式学习二进制安全之前,需要先进行汇编语言的学习,这里我就根据教程的指引来对汇编语言展开相关性学习。
Start!
从一个最简单的例子开始:
很多同学入门pwn的时候都是从栈溢出来开始的,而想要理解栈溢出的基本原理,通过汇编语言是必要的。这里的话我们通过几个简单的程序来介绍汇编语言和栈,这里我使用的环境是Ubuntu20,程序一般情况下是64位。(如果有特殊情况的话会提前说明)
各位小伙伴自行装好相关的虚拟机和工具,或者不知道什么时候会更一期工具教学捏^^
Hello World
我们先给出一个程序源代码
1 | //main.c |
这是一个大家都能够看明白的程序,更是许多人的入门第一程序,那么接着我们会用到GCC来将其编译为二进制文件,从而使得其可以在计算机上进行运行,在这个过程中,我们需要将C语言源码转换为汇编语言。
首先的话我们要对这段C语言源码进行如下操作:
gcc -S main.c -o main.s -masm=intel
这个命令使用GCC从C源文件”main.c”生成汇编代码。下面是命令的解释:
gcc
:这是调用GNU编译器集合的命令。-S
:此选项告诉GCC生成汇编代码而不是生成可执行文件。main.c
:这是要编译的源文件。-o main.s
:此选项指定生成的汇编代码的输出文件。在这种情况下,输出文件名为”main.s”。-masm=intel
:此选项指定要使用的汇编语法。在这里,它将汇编语法设置为Intel样式。默认情况下,通常使用AT&T语法。因此,运行此命令时,GCC将从”main.c”文件生成Intel样式的汇编代码,并将其保存在”main.s”文件中。您可以检查”main.s”文件,以查看C程序的相应汇编代码。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 TYsec!