最近学习了一些汇编的基础,整理了一些笔记给大家,供大家参考。对于反病毒、逆向等方向而言,汇编确实是个好东西。
废话不多说,今天带来的内容主要为以下四个方面
进制
这里我们不去讲计算,因为每一种进制都是完美的,大家不应该去局限于进制的转换。这里简单的介绍一下二进制与十六进制的关系
二进制逢二进一,十六进制则是十六进一,所以二进制与十六进制的关系图如下
数据宽度
这里需要给大家简单介绍一下数据宽度的概念,计算机中常见的数据宽度如下所示
如上图,可知 1双字=2字=4字节=32位
那么, 0001 其实可以成为半字节
存储范围
无符号数编码规则
在计算机语言里面,是区分有符号和无符号的,首先介绍无符号数,无符号数只有正数没有负数,所以他的值就是该数的本身,举例说明如下
有符号数 正数编码规则
有符号数正数编码规则与无符号数编码规则一致,最高位为0时为正数,最高位为1时为负数;在计算机中,所有的数值都是以补码的形式存储,而有符号数的正数的补码与原码相同,原码是除符号位(最高位)之外其余的值取绝对值。
举例说明如下
此时最高位为0,该值为正值
有符号数 负数编码规则
有符号数负数的编码规则与正数编码规则不一样,首先最高位符号位的数值为1
其次,负数的原码与正数一样,保留符号位其余位取绝对值
用二进制表示正数不存在问题,但是在表示负数时会存在意想不到的困难,由于最高位为符号位,为负数的时候需要最高位占位1,导致可能无法展示的问题
象限图
假设数据宽度为1 byte (8 bit)
盗的图哈(盗图狗在此,谁敢造次!)
假设数据宽度为 doubleword (32 bit)
运算
与运算
或运算
亦或运算
非运算
移位运算(左移)
移位运算(右移)
通用寄存器
今天先简单的介绍一下通用寄存器,如下图
这款工具是xdbg工具,支持32位以及64位的应用逆向分析;
该工具四个窗口分别是,反汇编窗口,寄存器窗口,内存窗口以及堆栈窗口。xdbg工具是目前比较新的工具,与以前的Dbdbg、Ollydbg类似,但是语法以及使用方式略有区别,同时支持x64位分析。
而今天先简单介绍一下通用寄存器的概念
这里的通用寄存器是32位通用寄存器
64位的长这样
这里我们主要还是将32位的,在32位通用寄存器里我们又可以将他拆分为 32位、16位以及8位,其中8位的分为高八位以及低八位,对应十六位的AX/BX/CD/DX寄存器
16位对应32位如下图
8位分为高八位和低八位
寄存器之间可以直接赋值,但是位数必须一致,十六位只能给十六位赋值,八位只能给八位赋值,如下图,把bx值赋给cx
好了,今天的内容就分享到这了,我尽量在占用三篇文章的篇幅的情况下将汇编常用的语句以及用法较为详细的分享给大家,至于为什么不上来就分析,因为我也不会,所以只能分享给大家基础,只有做好基础后期学会PE之后才能完整的去反汇编程序。
公众号回复 xdbg即可获取免安装工具,解压即用,x64位请使用64位工具,x32请使用x32位工具。
hash值
84447d78cc9a54a3f0fc7d824447c35655e4dd292856facd09fcaa6ba1664763
公众号:
我不懂安全