会飞的鱼

奇乐云
首页 » 信息安全 » 常用破解软件的汇编指令

常用破解软件的汇编指令

常用汇编指令:
MOV 传送字或字节. 
MOVSX 先符号扩展,再传送. 
MOVZX 先零扩展,再传送. 
PUSH 把字压入堆栈. 
POP 把字弹出堆栈. 
PUSHA 把AX,CX,DX,BX,SP,BP,SI,DI依次压入堆栈. 
POPA 把DI,SI,BP,SP,BX,DX,CX,AX依次弹出堆栈. 
PUSHAD 把EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI依次压入堆栈. 
POPAD 把EDI,ESI,EBP,ESP,EBX,EDX,ECX,EAX依次弹出堆栈.

XCHG 交换字或字节.( 至少有一个操作数为寄存器,段寄存器不可作为操作数) 
CMPXCHG 比较并交换操作数.( 第二个操作数必须为累加器AL/AX/EAX ) 
XADD 先交换再累加.( 结果在第一个操作数里 )

ADD 加法. 
ADC 带进位加法. 
INC 加 1. 
AAA 加法的ASCII码调整. 
DAA 加法的十进制调整. 
SUB 减法. 
SBB 带借位减法. 
DEC 减 1. 
NEC 求反(以 0 减之). 
CMP 比较.(两操作数作减法,仅修改标志位,不回送结果). 
AAS 减法的ASCII码调整. 
DAS 减法的十进制调整. 
MUL 无符号乘法. 
IMUL 整数乘法. 
AAM 乘法的ASCII码调整. 
DIV 无符号除法. 
IDIV 整数除法. 
AAD 除法的ASCII码调整. 
CBW 字节转换为字. (把AL中字节的符号扩展到AH中去) 
CWD 字转换为双字. (把AX中的字的符号扩展到DX中去) 
CWDE 字转换为双字. (把AX中的字符号扩展到EAX中去) 
CDQ 双字扩展. (把EAX中的字的符号扩展到EDX中去)

逻辑运算指令 
AND 与运算. 
OR 或运算. 
XOR 异或运算. 
NOT 取反. 
TEST 测试.(两操作数作与运算,仅修改标志位,不回送结果). 
SHL 逻辑左移. 
SAL 算术左移.(=SHL) 
SHR 逻辑右移. 
SAR 算术右移.(=SHR) 
ROL 循环左移. 
ROR 循环右移. 
RCL 通过进位的循环左移. 
RCR 通过进位的循环右移.


程序转移指令 
1.简单的条件转移指令 
JZ(或jE) OPR---------------结果为零转移, 测试条件ZF=1 
JNZ(或jNE) OPR --------------结果不为零转移,测试条件ZF=0 
JS OPR----------------------结果为负转移, 测试条件SF=1 
JNS OPR---------------------结果为正转移, 测试条件SF=0 
JO OPR--------------------- 溢出转移, 测试条件OF= 
JNO OPR --------------------不溢出转移 , 测试条件SF=0 
JP OPR ---------------------结果为偶转移, 测试条件SF=1 
JNP OPR --------------------结果为奇转移 , 测试条件SF=0 
JC OPR -------------------- 有进位转移 , 测试条件SF=1 
JNC OPR --------------------无进位转移, 测试条件SF=0

2.无符号比较条件转移指令(以下指令经常是CMP OPD,OPS后面的指令根据比较结果来实现转移) 
JB(或JNAE) opd --------------小于或者不大于等于则转移 
JNB(或JAE) opd---------------不小于或者大于等于则转移 
JA(或NJBE) OPD---------------大于或者不小于等于则转移 
JNA(或JBE) OPD---------------不大于或者小于等于则转移

3.带符号比较条件转移指令 
JL(或JNGE) --------------小于或者不大于等于则转移 
JNL(或JGE)--------------不小于或者大于等于则转移 
JG(或NJLE)---------------大于或者不小于等于则转移 
JNG(或JLE)---------------不大于或者小于等于则转移 

调用子程序与返回指令 
CALL 子程序调用指令 
RET 子程序返回指令 

其它指令 
OFFSET -------------------- 返回偏移地址 
SEG -------------------- 返回段地址 
EQU(=) -------------------- 等值语句 
PURGE -------------------- 解除语句 
DUP -------------------- 操作数字段用复制操作符 
SEGMENT,ENDS -------------------- 段定义指令 
ASSUME -------------------- 段地址分配指令 
ORG -------------------- 起始偏移地址设置指令 
$ --------------------地址计数器的当前值 
PROC,ENDP -------------------- 过程定义语句 
NAME,TITLE,END -------------------- 程序开始结束语句 
MACRO,ENDM --------------------宏定义指令 
XLAT (TRANSLATE) -------------------- 换码指令---- 

条件标志 
ZF 零标志 -- 当结果为负时,SF=1,否则,SF=0. 
AF 辅助进位标志---运算过程中第三位有进位值,置AF=1,否则,AF=0 
PF 奇偶标志------当结果操作数中偶数个"1",置PF=1,否则,PF=0 
SF 符号标志----当结果为负时,SF=1;否则,SF=0.溢出时情形例外 
CF 进位标志----- 最高有效位产生进位值,例如,执行加法指令时,MSB有进位,置CF=1;否则,CF=0. 
OF 溢出标志-----若操作数结果超出了机器能表示的范围,则产生溢出,置OF=1,否则,OF=0

文章如无特别注明均为原创! 作者: 奇乐云, 转载或复制请以 超链接形式 并注明出处 奇乐云's blog - 奇乐云的个人博客
原文地址《 常用破解软件的汇编指令》发布于2019-4-11

分享到:
打赏

评论

游客

切换注册

登录

您也可以使用第三方帐号快捷登录

Q Q 登 录
微 博 登 录
切换登录

注册