X86反汇编速成班(条件指令,分支指令、重复指令、寄存器等)

X86反汇编速成(恶意代码篇) X86 反汇编 阅读详情
4.3.3大端字节序和小端字节序
4.3.4立即数操作数是一个固定的值,如0x42
     寄存器操作数指向寄存器,如ecx
     内存地址操作数指向感兴趣的值所在的内存地址,一把由[]内包含值、寄存器或方程式组成,如[eax]
4.3.5通用寄存器一般用于存储数据或内存地址,而且经常交换这使用以完成程序
     一些X86指令只能使用特定的寄存器,例如,乘法和除法指令就只能使用EAX和EDX
     EAX通常存储了一个函数调用的返回值
     EIP指令指针,保存了程序将要执行的下一跳指令在内存中的地址,它的唯一的作用就是告诉处理器接下来要做什么
     lea eax,[ebx+8]将EBX+8的值给EAX,,,,,,和mov eax,ebx+8等价
     mov eax,[ebx+8]加载内存中地址为EBX+8处的数据
     sub eax,0x10   EAX寄存器值减去0X10
4.3.7栈是后入先出
EBP是栈基址寄存器,在函数中会保持不变,因此程序把它当作定位器,来确定局部变量和参数的位置
不用push和pop也可以从栈中读取数据,例如mov eax,ss :[esp]就可以直接访问栈顶
这和pop eax一样,
4.3.8条件指令
最常见的是test和cmp
cmp dst,src    ZF     CF
dst = src       1      0
dst < src       0      1
dst > sec       0      0
4.3.9分支指令
最常见的分支指令是跳转指令
jz loc 如果ZF=1,则跳转
jnz loc 如果ZF=0,则跳转
je loc 和jz类似,通常在cmp指令后使用。如果源操作数与目的操作数相等,则调准
jne loc。。。。。。。。。。。。。。。。。。。。

jg loc 在一条cmp指令做有符号比较之后,如果目的操作数大于源操作数,跳转
jge loc .............................................小于等于
ja loc 与jg类似,但使用无符号比较
jae loc 与jge类似,但使用无符号比较


jl loc 在一条cmp指令做有符号比较之后,如果目的操作数小于源操作数,跳转
jle loc .........................................小于或等于
jb loc 与jl类似,但使用无符号比较
jbe loc 与jle类似,但使用无符号比较


jo loc 如果前一条指令置位了溢出标志位(OF=1),则跳转
js loc 如果符号标志位被置位(SF=1),则跳转
jecxz 如果ECX=0,则跳转
4.3.10重复指令
最常见的数据缓冲区操作指令是movsx\cmpsx\stosx\scasx,其中的x可以是b,w,d(单字节,字,双字节)
ESI源索引寄存器,EDI目的索引寄存器
rep    循环终止条件ECX=0
repe repz   循环终止条件ECX=0 or ZF=0
repne repnz 循环终止条件ECX=0 or ZF=1
Intel指令解析规则,反汇编引擎工作原理 一、Intel保护模式、实地址模式和虚拟8086模式指令格式(x86)                    图在Intel手册Volume2 2.1章节   1.1)Instruction Prefixes:指令前缀,可选项,每个前缀一个字节,可选0个前缀到4个不等;指令前缀分为四组,每组都允许设置指定的前缀代码。     Group 1:锁定和重复前缀。     Group 2:段... 阅读详情

相关推荐

ARM指令:比较、分支、条件指令(Thumb和ARM状态却换)

前言分支说白了就是跳转,而分支与条件结合使用就是当满足一定条件后进行特定的跳转。(1)、比较指令(2)、分支指令常用的分支指令是B、BL、BX这三个指令。B Lable ;该指令表示将PC设置成Lable, 而PC就是指向下一条将要执行的指令。BL Label ; 执行该指令说明将LR设置成PC - 4, 然后再将PC设置成Lable。 在执行BL Lable这条命令时,PC中存储的就是当前BL这

专注于计算机研发知识和资讯分享 1万+

程序是如何跑起来的 笔记

第一章:CPU是什么 CPU内部由寄存器、控制器、运算器和时钟四个部分构成。 寄存器可用来暂存指令、数据等处理对象,可以将其看作是内存的一种。根据种类的不同,一个CPU内部会有20~100个寄存器。 控制器负责把内存上的指令、数据等读入寄存器,并根据指令的执行结果来控制整个计算机。 运算器负责运算从内存读入寄存器的数据。 时钟负责发出CPU开始计时的时钟信号。 DRAM Dynamic Ran...

zzb5233的专栏 552

无人机通信电台--XBee-PRO 900HP (S3B)

XBee PRO S3B也称为XBee-900HP无线模块,它是一款工作在频段900~928MHz之间,基于FHSS跳频技术的远距离无线数传电台核心模块。常用型号如下: 类别 型号 开发套件 XKB9-DMT-UHP XBee-PRO 900HP (S3B) DigiMesh模块,200Kbps,软天线 XBP9B-DMWT-002 XBee-PRO 900HP (S3B)...

low米的博客 4505

汇编语言常用指令介绍与函数应用

汇编语言常用指令介绍

hhd1988的专栏 1万+

KUKA机器人 - 从开机到自动运行

注1:本文仅代表本人对机器人使用的一些建议,在使用机器人前,还请详细阅读库卡机器人官方资料,道路千万条,安全第一条!!! 注2:技术有限,欢迎各位大大在阅读过程中发现各类问题,并且批评指正!!! 目录 一、准备工作 1. 机器人上电完成 2. 电脑安装Workvisual 二、学习手动移动机器人 三、项目配置 1. 设置机器人IP地址 2.电脑和机器人通过网线连接 3.查找并打开项目 4. 通讯配置 5. 项目上传 6. 检验IO配置 四、编程 1.新建程序 2. 程序...

yilunyao的博客 1万+

手把手教你用VCS+Verdi在Linux下仿真蜂鸟E203 RISC-V核(附波形调试技巧)

本文详细介绍了在Linux环境下使用VCS和Verdi工具链对蜂鸟E203 RISC-V核进行仿真验证的完整流程。从环境配置、工程结构解析到VCS编译优化和Verdi波形分析技巧,提供了实战性强的调试方法和性能优化策略,帮助工程师高效完成数字IC验证工作。

weixin_42531163的博客 415

C++ 反汇编:流程控制与循环结构

反汇编(Disassembly) 即把目标二进制机器码转为汇编代码的过程,该技术常用于逆向工程、软件汉化等领域,学习和理解反汇编对软件调试、系统漏洞挖掘、内核原理及理解高级语言代码都有相当大的帮助,软件一切神秘的运行机制全在反汇编代码里面。

微软技术分享 8842

中小团队必看!用Harbor+Jenkins打造轻量级K3S交付流水线(含成本优化方案)

本文为中小团队详细介绍了如何利用K3S、Harbor与Jenkins构建一套高性价比的自动化交付流水线。内容涵盖单节点K3S集群的效能配置、Harbor镜像仓库的磁盘空间优化、Jenkins共享库实现流水线复用,并提供了完整的实战案例与成本优化方案,帮助团队以较低成本快速落地高效的自动化部署。

weixin_29223603的博客 503

【黑客免杀攻防】读书笔记8 - 软件逆向工程基础2(if-else,三目运算符)

0x1 if-else分支 if-else分支4种状态 1.1 以常量为判断条件的简单if-else分支 C源代码: 单层if-else判断,常量为判断条件 int _tmain(int argc, _TCHAR* argv[]) { int nTest = 1; if (nTest>0) printf("Hello world!\r\n"); ...

weixin_30614109的博客 177

彻底解决0x80070005错误代码:全面分析与实战指南

0x80070005错误代码虽然令人头疼,但通过上述方法,我们完全有能力将其攻克。从检查磁盘空间、设置账号权限,到运行疑难解答和系统文件检查器,再到调整相关服务状态,每一步都是解决这一问题的关键。希望本文能为你提供有力的帮助,让你在使用Windows系统的过程中更加顺畅无忧。

nntxthml的博客 6933

【数据集】中国各类水文专业常用数据集合集

对中国各类水文专业常用数据集进行整理并总结

WW、forever的博客 9299

恶意代码分析实战-x86反汇编速成班

x86反汇编速成 x86体系结构 3种硬件构成: 中央处理器:负责执行代码 内存(RAM):负责存储所有的数据和代码 输入/输出系统(I/O):为硬盘、键盘、显示器等设备提供接口 内存 一个程序的内存可以分为以下四个主要的节: 栈:栈用于函数的局部变量和参数,以及控制程序执行流。 堆:堆是为程序执行期间需要的动态内存准备的,用于创建(分配)新的值,以及消除(释放)不再需要的值。 代...

weixin_30516243的博客 337

SAP-ABAP:SAP采购业务核心表关联关系详解

MM(核心)、FI(财务)、SD(计划协议):PR → PO → GR → MIRO → FI过账。

baidu_35680696的博客 930

汇编语言----X86汇编指令

汇编语言----X86汇编指令 1.汇编指令的构成 2.X86架构CPU中包含的寄存器 3.常见的x86汇编指令 (1)算数运算 (2)逻辑运算 (3)其他 4.AT&T格式 5.选择语句(分支结构) 6.循环语句 (1)条件转移指令实现循环 (2)loop指令实现循环 7.函数调用的机器级指令 如何访问栈帧中的数据 函数调用栈在内存的位置: 访问栈帧数据:push、pop指令: 函数调用时切换栈帧: 恢复esp与ebp的值: 执行ret: 栈帧内可能包含哪些内容 如何

weixin_69884785的博客 5572

华为od 面试八股文_测试/测试开发_05_含答案

华为od 面试八股文_测试/测试开发_05_含答案

MISAYAONE的博客 2556

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

X86汇编速成

X86汇编

qq_45983373的博客 651

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

EAX、EBX、ECX、EDX

前面学习了8086的基本知识,今天正式开始学习win32平台的汇编 EAX:累加寄存器 32位,功能和8086中ax相同 mov eax,dword ptr [ebp-4] add eax,1 mov dword ptr [ebp-4],eax EBX:基址寄存器 32位,功能和8086中bx相同 mov eax,dword ptr [ebx+8] ECX:计数寄存器 32位,功能和8086中...

qq_41683305的博客 2622

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

【ARM汇编速成】零基础入门汇编语言(ARM架构+汇编的实际应用)

汇编语言(Assembly Language)是任何一种用于电子或其他可编程器件的低级语言,亦称为。在汇编语言中,用代替的,用地址符号或代替指令或的地址。在不同的设备中,汇编语言对应着不同的,通过汇编过程转换成机器指令。特定的汇编语言和特定的机器语言指令集是的,不同平台之间不可直接移植。汇编是上世纪五十年代人们为了摆脱机器语言的繁琐而创造的,因此,比起机器语言,汇编语言具有更高的机器,更加便于记忆和书写,但又同时保留了机器语言高速度和高效率的特点。但汇编语言仍是。

meno的博客 5095

代码混淆/程序保护(对抗反汇编)原理与实践

所谓对抗反汇编技术,就是在程序中使用特殊构造的代码或数据,让反汇编工具产生不正确的指令。恶意代码使用该技术,可以一定程度上阻碍相似性检测算法和启发式反病毒检测。一、反汇编算法的局限性反汇编软件在拿到一堆机器码时,采用什么样的思维和算法来“断词断句”,又基于哪些假设,都会决定最终的解析结果。运用不同的反汇编器,同样的字节码会被“翻译”出完全不同的指令序列。而对抗反汇编技术就是利用了反汇编器算法的天生漏

pianogirl123的博客 1万+

分支指令

分支指令可改变程序的执行流程或者调用子程序。这种指令使得一个程序可以使用子程序、if-then-else的结构及循环。执行流程的改变迫使程序计数器指向一个新地址,armV5e架构指令集包括以下四种不同的分支指令。 B     label     跳转     pc=label ARM汇编器通过以下步骤计算指令编码中的signed_immed_24 1pc寄存器的值作为本次跳转的基地址 2从

z1179675084的专栏 6883

分支预测器(Branch Predictor) 汇总介绍

当包含流水线技术的处理器处理分支指令时就会遇到一个问题,根据判定条件的真/假的不同,有可能会产生转跳,而这会打断流水线中指令的处理,因为处理器无法确定该指令的下一条指令,直到分支执行完毕。流水线越长,处理器等待的时间便越长,因为它必须等待分支指令处理完毕,才能确定下一条进入流水线的指令。   分支预测技术便是为解决这一问题而出现的。   分支预测技术包含编译时进行的静态分支预测和硬件在

AddyLee的专栏 4万+

【汇编】各个寄存器作用详解

寄存器   英文名称:Register 寄存器定义   寄存器是中央处理器内的组成部份。寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令、数据和位址。在中央处理器的控制部件中,包含的寄存器有指令寄存器(IR)和程序计数器(PC)。在中央处理器的算术及逻辑部件中,包含的寄存器有累加器(ACC)。   寄存器是内存阶层中的最顶端,也是系统获得操作资料的最快速途径。寄存

AG的博客 1万+

反汇编基本原理与x86指令构造

反汇编基本原理与x86指令构造 概要:旨在讲述程序的二进制代码转换到汇编。即反汇编的基本原理。以及 x86 架构的 CPU 的指令构造,有这个基础后就能够自己编写汇编程序了,也能够将二进制代码数据转换成汇编助记指令。当然,把本文当作手冊的阅读指导也是能够的。本文还讲述了 DEBUG 工具的部分功能。32位平台下有一个 DEBUG32 版本号能够配合 DOSBOX 工具执行在 Windos...

weixin_34348111的博客 559

ARM 汇编基础速成1:ARM汇编以及汇编语言基础介绍

译文声明本文是翻译文章,文章原作者,文章来源:azeria-labs.com原文地址:https://azeria-labs.com/writing-arm-assembly-part-1/译者:arnow117预估稿费:200RMB投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿写在前面欢迎来到ARM汇编基础教程,这套教程是为了让你可以在ARM架构下进行漏洞利用打基础的。在我...

zerokkqq的专栏 2万+

X86反汇编简要说明

一、抽象 在经典的计算机体系结构中,往往将计算机系统表示为一些抽象的层次,来隐藏其实现细节。 机器码: 机器码由操作码(opcode)组成,操作码是一些十六进制形式的数字,用于告诉处理器你想要他做什么。 低级语言: 低级语言是计算机体系结构指令集的人类易读的版本,注意是汇编语言。恶意代码分析师使用这一语言。 高级语言: 大部分程序员使用高级语言。高级语言对机器层做了很强的抽象,

经典的误导的专栏 1829
上一篇: SetUid的权限问题
下一篇: 用python画柱状图以及numpy和matplotlib的安装及配置
code_AC
博客等级 码龄12年 255粉丝 109原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值