逆向工程基础理论深剖及详细讲解

本文探讨了汇编语言的类型、进制转换在逆向工程中的重要性,以及寄存器的工作原理,包括进位标志、CPU缓存与JCC指令的讲解。通过实例说明了高级语言与底层语言的关系和运算流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

0x01 汇编语言

汇编语言类型:

  • 机器语言
    机器语言是机器能直接识别的程序语言或指令代码,无需经过翻译,每一操作码在计算机内部都有相应的电路来完成它,或指不经翻译即可为机器直接理解和接受的程序语言或指令代码。

  • 汇编语言
    汇编语言是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件加粗样式的低级语言,亦称为符号语言。在汇编语言中,用助记符代替机器指令的操作码,用地址符号或标号代替指令或操作数的地址。

  • 高级语言
    高级语言是一种独立于机器,面向过程或对象的语言。高级语言是参照数学语言而设计的近似于日常会话的语言。
    在这里插入图片描述

从下面这张图 可以更清楚地看到计算机里的语言的层级分布,首先在硬件的基础上是机器语言,机器语言可以直接转化为汇编语言,汇编语言又可以用人们可以理解的高级语言翻译,从而可以通过高级语言去编写程序、工具等。

在这里插入图片描述

0x02 进制转换

笔者认为,学好逆向工程的一个最大的帮助是熟悉进制转换,接触过逆向工程的小伙伴应该知道在逆向工程使用的工具中,经常见到进制转换,如果可以非常迅速的反应简直转化可以很大的帮助提高阅读印象工程代码的速度。

在这里插入图片描述

进制加减法

这个是在B站的一个老师那里看到的加法训练,只需要熟悉这两道题就可以很清楚的理解各种进制之间的加减乘除运算。
在这里插入图片描述
现在是一个外国大佬整理的逻辑单元运算流程,大题意思为,几乎所有的运算都是在中央处理单元中进行的,现在大部分的C P U都有自己的微处理单元,C P U U可以被分为很多很小的计算模块,例如逻辑门电路主要的运算功能,又可以进行加、或、否运算。
在这里插入图片描述

单位

单位分为:

  • byte(字节)
  • word(字)
  • dword(双字)
    在这里插入图片描述

0x03 寄存器

寄存器(register)是CPU(中央处理器)的组成部分,是一种直接整合到cpu中的有限的高速访问速度的存储器,用来暂时存放参与运算的数据和运算结果,因为寄存器的存储容量有限,只存储一些计算机频繁用到的数据存储在其中

在这里插入图片描述

  • 一级缓存:CPU内部集成的缓存
  • 二级缓存:CPU外部集成的缓存

CPU从寄存器拿数据,寄存器从高速缓存拿,以此类推

就是数据交换的缓冲区,当某一硬件要读取数据时,会首先从缓存中查找需要的数据,如果找到了则直接执行,找不到的话则从内存中找。
在这里插入图片描述
AX为EAX的低16位的 “ 子寄存器 ”
AL为EAX低8位的 “ 子寄存器 ”
AH为AX高八位的“ 子寄存器 ”

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

0x04 进位标志

进位标志CF

由生成进位或借位的算术指令设置,当操作生成目标操作数进位或从目标操作数借位时设置。
在这里插入图片描述

奇偶标志PF

反映运算结果中“1”的个数的奇偶性

在这里插入图片描述

辅助进位标志AF

在发生下列情况时,辅助进位标志的值被置为 1, 否则其值为 0:

(1)、在字操作时,发生低字节向高字节进位或借位时

(2)、在字节操作时,发生低 4 位向高 4 位进位或借位时

在这里插入图片描述

零标志ZF

反映运算结果是否为 0

如果一个操作的结果是二进制零则其值为 1, 否则其值为 0——mov不算
在这里插入图片描述

符号标志SF

反映运算结果的符号位,它与运算结果的最高位相同

0是正的,1是负的
在这里插入图片描述

溢出标志OF

大多数算术指令设置这个位,表示结果太大,无法装入目标。设置后,它指示操作的结果太大或太小,无法装入目标操作数
在这里插入图片描述

方向标志DF

减——1
加——0
在这里插入图片描述
在这里插入图片描述

0x05 JCC

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lmn_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值