写在前面
由于比赛的方向分配,我开始学习逆向,学习逆向有一些基础知识需要补充,因此这周的学习内容是汇编语言。
逆向学习路线
一、语言
学习逆向,需要掌握四门语言,分别是C、C++、Python和汇编。C和C++在开发杀毒引擎中能起到很大的作用,而且使用IDA pro翻译出的伪代码是C语言格式的。C和C++也是开发shellcode最高效的语言,也可以用来写驱动代码。因此,C和C++是学习逆向的两门重要语言。Python可以辅助我们开发一些分析工具,可以快速降低重复劳动的成本。汇编语言是在逆向分析过程中不可避免的。因此,这四门语言是学习逆向必须掌握的。
二、Windows编程
在逆向学习、二进制安全学习中,我们要掌握系统编程,学习如何写安全工具、Windows下的API编程、Windows的文件结构,即PE(Protable Executable)这一部分可以帮助到我们日后分析病毒以及漏洞分析。
三、逆向
在学习好基础知识后,我们可以开始学逆向以及恶意代码分析、漏洞分析。
汇编语言基础知识
语言特性
汇编语言是直接作用在硬件上的编程语言,对硬件系统有一定了解后,才能有效地应用汇编语言编程。汇编的研究重点应放在如何利用硬件系统的编程结构和指令集有效灵活的控制系统进行工作。
1.机器语言
机器语言是机器指令的集合,机器指令就是一台机器可以正确执行的命令,形式为二进制代码。机器语言出现错误,查错成本高,可读性差,因此需要汇编语言方便编程。
2.汇编语言
汇编语言的主题是汇编指令 汇编指令是机器指令便于记忆的书写格式 汇编指令是机器指令的助记符 汇编语言的写法与人类语言接近,便于阅读和记忆
寄存器:CPU中可以存储数据的器件,一个CPU中有多个寄存器 工作方式:汇编指令通过编译器转换成机器指令,传给机器,并执行
3.汇编语言的组成
汇编语言由一下三类组成: 1.汇编指令(机器码的助记符) 2.伪指令(由编译器执行) 3.其他符号(由编译器识别)
4.存储器
CPU是计算机的核心部件,它控制整个计算机的运作并进行运算,要想让一个CPU工作,就必须向它提供指令和数据 指令和数据在存储器中存放,也就是内存 磁盘上的数据或程序,如果不读到内存中,就无法被CPU使用
5.指令和数据
在内存或磁盘中,指令和数据都是二进制信息
6.存储单元
存储器被划分为若干个存储单元,每个存储单元从0开始顺序编号,如有128哥存储单元,编号则为0~127 存储单元的容量单位有bit、B、KB、MB、GB、TB等
7.CPU对存储器的读写
CPU对数据进行读写,则要进行三类信息的交互: 1.存储单元的地址(类似C语言中的指针)(地址信息) 2.器件的选择,读或写命令(控制信息) 3.读或写的数据(数据信息)
|