li指令 汇编_汇编指令简介

前言

用OD玩了几个crackme,要通过验证,就需要定位到生成序列号的代码段。基本思路有两个方向,一是顺着输入数据流走,既然验证是跟输入有关的,那么输入数据必定会参与到序列号验证过程中;二是根据软件本身存在的一些字面特征(如弹出验证通过或失败对话框之类的),再反方向顺藤摸瓜之。

内存操作

NOP(无操作)运行这条指令不会对寄存器,内存以及堆栈造成任何影响。

PUSH       将操作数压入堆栈中。

PUSHAD指令把所有通用寄存器的内容按一定顺序压入到堆栈中

POP          出栈:它会取出堆栈顶部的第一个字母或者第一个值,然后存放到指定的目标地址内存单元中。

POPAD该指令与PUSHAD正好相反,它从堆栈中取值,并将它们放到相应的寄存器中。

MOV该指令将第二个操作数赋值给第一个操作数,例如: MOV EAX, EBX; EBX值赋值给EAX。

LEA取地址指令,类似于MOV指令, 但是第一个操作数是一个通用寄存器,并且第二个操作数是一个内存单。

XCHG交换 寄存器/内存单元 和 寄存器 该指令交换两个操作数的值,例如:XCHG EAX,ECXEAX的值将被存放到ECX中。

数学指令

INC和DEC这两个指令分别是执行增加和减少的操作,如果是INC指令的话,就加1,如果是DEC指令的话,就减1。

ADDADD指令有两个操作数,相加后的结果存放到第一个操作数中。ADD EAX,1等价于INC EAX。

ADC带进位的加法,在这种情况下,两个操作数的和加上进位标志的值,结果存放到第一个操作数中。

SUB这个指令与ADD刚好相反-它将第一个操作数减去第二个操作数的值存放到第一个操作数中。

SBB该指令跟ADC正好相反,它计算两个操作数的差值,并且还要减去进位标志,结果存放到第一个

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值