OllyDbg命令行命令+汇编指令大全.docx
- 文档编号:12731738
- 上传时间:2023-06-07
- 格式:DOCX
- 页数:31
- 大小:21.86KB
OllyDbg命令行命令+汇编指令大全.docx
《OllyDbg命令行命令+汇编指令大全.docx》由会员分享,可在线阅读,更多相关《OllyDbg命令行命令+汇编指令大全.docx(31页珍藏版)》请在冰点文库上搜索。
OllyDbg命令行命令+汇编指令大全
OllyDbg命令行命令+汇编指令大全
以下命令适用于OllyDbg的命令行插件Cmdline.dll(显示于程序的插件菜单中)
==============================================================
=
命令行插件支持的命令
CALC
判断表达式
WATCH
添加监视表达式
AT
在指定地址进行反汇编
FOLLOW
跟随命令
ORIG
反汇编于EIP
DUMP
在指定地址进行转存
DA
转存为反汇编代码
DB
使用十六进制字节格式转存
DC
使用ASCII格式转存
DD
转存在堆栈格式
DU
转存在UNICODE格式
DW
使用十六进制字词格式转存
STK
前往堆栈中的地址
AS
(AS地址字符串)
在指定地址进行汇编
BP
进行条件中断(有条件的断点)
BPX
中断在全部调用(Call)
BPD
清除全部调用中的断点
BC
清除断点
MR
内存断点于访问时
MW
内存断点于写入时
MD
清除内存断点
HR
访问时进行硬件中断
HW
写入时进行硬件中断
HE
执行时进行硬件中断
HD
清除硬件断点
STOP
停止运行程序调试
PAUSE
暂停执行程序调试
RUN
运行程序进行调试
GE
运行和通过例外
SI
单步进入Call中
SO
步过Call
TI
跟踪进入直到地址
TO
跟踪步过直到地址
TC
跟踪进入直到满足条件
TOC
跟踪步过直到满足条件
TR
运行直到返回
TU
运行直到用户代码
LOG
查看记录窗口
MOD
查看模块窗口
MEM
查看内存窗口
CPU
查看CPU窗口
CS
查看Call堆栈
BRK
查看断点窗口
OPT
打开选项设置窗口
EXIT
退出OllyDbg
QUIT
退出OllyDbg
OPEN
打开一个可执行文件
CLOSE
关闭可执行文件
RST
重新运行当前程序
HELP
查看API函数的帮助
以下命令适用于OllyDbg的快捷命令栏插件(显示于程序的状态栏上方)
========================================================
CALC
判断表达式
WATCH
添加监视表达式
AT/FOLLOW
Disassembleataddress
在地址进行反汇编
ORIG
DisassembleatEIP
反汇编于EIP
DUMP
Dumpataddress
在地址转存
DA
Dumpasdisassembly
转存为反汇编代码
DB
Dumpinhexbyteformat
转存在十六进制字节格式
DC
DumpinASCIIformat
转存在ASCII格式
DD
Dumpinstackformat
转存在堆栈格式
DU
DumpinUNICODEformat
转存在UNICODE格式
DW
Dumpinhexwordformat
转存在十六进制字词格式
STK
Gotoaddressinstack
前往堆栈中的地址
AS+地址+字符串
Assembleataddress
在地址进行汇编
L+地址+字符串
Labelataddress
在地址进行标号
C+地址+字符串
Commentataddress
在地址进行注释
BP
Breakwithcondition
使用条件中断
BPX
Breakonallcalls
中断在全部调用
BPD
Deletebreakonallcalls
清除位于全部调用的断点
BC
Deletebreakpoint
清除断点
MR
Memorybreakptonaccess
内存断点于访问时
MW
Memorybreakptonwrite
内存断点于写入时
MD
Removememorybreakpoint
清除内存断点
HR
HWbreakonaccess
硬件中断在访问
HW
HWbreakonwrite
硬件中断在写入
HE
HWbreakonexecution
硬件中断在执行
HD
RemoveHWbreakpoint
清除硬件断点
STOP
Pauseexecution
暂停执行
PAUSE
PAUSE
RUN
Runprogram
运行程序
Runtilladdress
运行到地址
GE
Runandpassexception
运行和通过例外
SI
Stepinto
步入
SO
Stepover
步过
TI
Traceintilladdress
跟踪进入直到地址
TO
Traceovertilladdress
跟踪步过直到地址
TC
Traceintillcondition
跟踪进入直到条件
TOC
Traceovertillcondition
跟踪步过直到条件
TR
Tillreturn
直到返回
TU
Tillusercode
直到用户代码
LOG
ViewLogwindow
查看记录窗口
MOD
ViewModuleswindow
查看模块窗口
MEM
ViewMemorywindow
查看内存窗口
CPU
ViewCPUwindow
查看CPU窗口
CS
ViewCallStack
查看Call堆栈
BRK
ViewBreakpointswindow
查看断点窗口
OPT
OpenOptions
打开选项
EXIT/QUIT
QuitOllyDbg
退出OllyDbg
OPEN
Openexecutablefile
打开可执行文件
CLOSE
Closeexecutable
关闭程序
RST
Restartcurrentprogram
恢复当前程序
HELP
HelponAPIfunction
API函数的帮助
ASM
Assemble(ifcommandneedsit'sownaddres,\"ASMCOMMAND;ADDRESS\")
汇编(如果命令需要自身的地址\"ASMCOMMAND;ADDRESS\")
DASM
Disassembleimmediateopcode
反汇编直接的机器码
FR
Findreferencetoselectedcommand/address
查找参考到选定的命令/地址
AC
Analysecode
分析代码
SN
SearchforName(label)incurrentmodule
在当前模块中搜索名称(标号)
SOB
Scanobjectfiles
扫描项目文件
**********************************************************************
***
**********************************************************************
***
**********************************************************************
***
汇编指令大全
一、数据传送指令
1.通用数据传送指令
MOV(Move)传送
PUSH(Pushontothestack)进栈
POP(Popfromthestack)出栈
XCHG(Exchange)交换
.MOV指令
格式为:
MOVDST,SRC
执行的操作:
(DST)<-(SRC)
.PUSH进栈指令
格式为:
PUSHSRC
执行的操作:
(SP)<-(SP)-2
((SP)+1,(SP))<-(SRC)
.POP出栈指令
格式为:
POPDST
执行的操作:
(DST)<-((SP+1),(SP))
(SP)<-(SP)+2
.XCHG交换指令
格式为:
XCHGOPR1,OPR2
执行的操作:
(OPR1)<-->(OPR2)
2.累加器专用传送指令
IN(Input)输入
OUT(Output)输出
XLAT(Translate)换码
这组指令只限于使用累加器AX或AL传送信息.
.IN输入指令
长格式为:
INAL,PORT(字节)
INAX,PORT(字)
执行的操作:
(AL)<-(PORT)(字节)
(AX)<-(PORT+1,PORT)(字)
短格式为:
INAL,DX(字节)
INAX,DX(字)
执行的操作:
AL<-((DX))(字节)
AX<-((DX)+1,DX)(字)
.OUT输出指令
长格式为:
OUTPORT,AL(字节)
OUTPORT,AX(字)
执行的操作:
(PORT)<-(AL)(字节)
(PORT+1,PORT)<-(AX)(字)
短格式为:
OUTDX,AL(字节)
OUTDX,AX(字)
执行的操作:
((DX))<-(AL)(字节)
((DX)+1,(DX))<-AX(字)
在IBM-PC机里,外部设备最多可有65536个I/O端口,端口(即外设的端口地址)
为0000~FFFFH.其中前256个端口(0~FFH)可以直接在指令中指定,这就是长格式中
的PORT,此时机器指令用二个字节表示,第二个字节就是端口号.所以用长格式时可
以在指定中直接指定端口号,但只限于前256个端口.当端口号>=256时,只能使用短
格式,此时,必须先把端口号放到DX寄存器中(端口号可以从0000到0FFFFH),然后
再用IN或OUT指令来传送信息.
.XLAT换码指令
格式为:
XLATOPR
或:
XLAT
执行的操作:
(AL)<-((BX)+(AL))
3.有效地址送寄存器指令
LEA(Loadeffectiveaddress)有效地址送寄存器
LDS(LoadDSwithPointer)指针送寄存器和DS
LES(LoadESwithPointer)指针送寄存器和ES
.LEA有效地址送寄存器
格式为:
LEAREG,SRC
执行的操作:
(REG)<-SRC
指令把源操作数的有效地址送到指定的寄存器中.
.LDS指针送寄存器和DS指令
格式为:
LDSREG,SRC
执行的操作:
(REG)<-(SRC)
(DS)<-(SRC+2)
把源操作数指定的4个相继字节送到由指令指定的寄存器及DS寄存器中.该指
令常指定SI寄存器.
.LES指针送寄存器和ES指令
格式为:
LESREG,SRC
执行的操作:
(REG)<-(SRC)
(ES)<-(SRC+2)
把源操作数指定的4个相继字节送到由指令指定的寄存器及ES寄存器中.该指
令常指定DI寄存器.
4.标志寄存器传送指令
LAHF(LoadAHwithflags)标志送AH
SAHF(storeAHintoflags)AH送标志寄存器
PUSHF(pushtheflags)标志进栈
POPF(poptheflags)标志出栈
.LAHF标志送AH
格式为:
LAHF
执行的操作:
(AH)<-(PWS的低字节)
.SAHFAH送标志寄存器
格式为:
SAHF
执行的操作:
(PWS的低字节)<-(AH)
.PUSHF标志进栈
格式为:
PUSHF
执行的操作:
(SP)<-(SP)-2
((SP)+1,(SP))<-(PSW)
.POPF标志出栈
格式为:
POPF
执行的操作:
(PWS)<-((SP)+1,(SP))
(SP)<-(SP+2)
二、算术指令
1.加法指令
ADD(add)加法
ADC(addwithcarry)带进位加法
INC(increment)加1
.ADD加法指令
格式:
ADDDST,SRC
执行的操作:
(DST)<-(SRC)+(DST)
.ADC带进位加法指令
格式:
ADCDST,SRC
执行的操作:
(DST)<-(SRC)+(DST)+CF
.ADD加1指令
格式:
INCOPR
执行的操作:
(OPR)<-(OPR)+1
2.减法指令
SUB(subtract)减法
SBB(subtractwithborrow)带借位减法
DEC(Decrement)减1
NEG(Negate)求补
CMP(Compare)比较
.SUB减法指令
格式:
SUBDST,SRC
执行的操作:
(DST)<-(DST)-(SRC)
.SBB带借位减法指令
格式:
SBBDST,SRC
执行的操作:
(DST)<-(DST)-(SRC)-CF
.DEC减1指令
格式:
DECOPR
执行的操作:
(OPR)<-(OPR)-1
.NEG求补指令
格式:
NEGOPR
执行的操作:
(OPR)<--(OPR)
.CMP比较指令
格式:
CMPOPR1,OPR2
执行的操作:
(OPR1)-(OPR2)
该指令与SUB指令一样执行减法操作,但不保存结果,只是根据结果设置条件标
志西半球.
3.乘法指令
MUL(UnsignedMultiple)无符号数乘法
IMUL(SignedMultiple)带符号数乘法
.MUL无符号数乘法指令
格式:
MULSRC
执行的操作:
字节操作数:
(AX)<-(AL)*(SRC)
字操作数:
(DX,AX)<-(AX)*(SRC)
.IMUL带符号数乘法指令
格式:
IMULSRC
执行的操作:
与MUL相同,但必须是带符号数,而MUL是无符号数.
4.除法指令
DIV(Unsigneddivide)无符号数除法
IDIV(Signeddivide)带符号数除法
CBW(Convertbytetoword)字节转换为字
CWD(Contertwordtodoubleword)字转换为双字
.DIV无符号数除法指令
格式:
DIVSRC
执行的操作:
字节操作:
(AL)<-(AX)/(SRC)的商
(AH)<-(AX)/(SRC)的余数
字操作:
(AX)<-(DX,AX)/(SRC)的商
(AX)<-(DX,AX)/(SRC)的余数
.IDIV带符号数除法指令
格式:
DIVSRC
执行的操作:
与DIV相同,但操作数必须是带符号数,商和余数也均为带符号数,且
余数的符号与被除数的符号相同.
.CBW字节转换为字指令
格式:
CBW
执行的操作:
AL的内容符号扩展到AH.即如果(AL)的最高有效位为0,则(AH)=00;
如(AL)的最高有效位为1,则(AH)=0FFH
.CWD字转换为双字指令
格式:
CWD
执行的操作:
AX的内容符号扩展到DX.即如(AX)的最高有效位为0,则(DX)=0;否
则(DX)=0FFFFH.
这两条指令都不影响条件码.
三、逻辑指令
1.逻辑运算指令
AND(and)逻辑与
OR(or)逻辑或
NOT(not)逻辑非
XOR(exclusiveor)异或
TEST(test)测试
.AND逻辑与指令
格式:
ANDDST,SRC
执行的操作:
(DST)<-(DST)^(SRC)
.OR逻辑或指令
格式:
ORDST,SRC
执行的操作:
(DST)<-(DST)V(SRC)
.NOT逻辑非指令
格式:
NOTOPR
执行的操作:
(OPR)<-(OPR)
.XOR异或指令
格式:
XORDST,SRC
执行的操作:
(DST)<-(DST)V(SRC)
.TEST测试指令
格式:
TESTOPR1,OPR2
执行的操作:
(DST)^(SRC)
两个操作数相与的结果不保存,只根据其特征置条件码
2.移位指令
SHL(shiftlogicalleft)逻辑左移
SAL(shiftarithmeticleft)算术左移
SHR(shiftlogicalright)逻辑右移
SAR(shiftarithmeticright)算术右移
ROL(Rotateleft)循环左移
ROR(Rotateright)循环右移
RCL(Rotateleftthroughcarry)带进位循环左移
RCR(Rotaterightthroughcarry)带进位循环右移
格式:
SHLOPR,CNT(其余的类似)
其中OPR可以是除立即数以外的任何寻址方式.移位次数由CNT决定,CNT可以
是1或CL.
循环移位指令可以改变操作数中所有位的位置;移位指令则常常用来做乘以2
除以2操作.其中算术移位指令适用于带符号数运算,SAL用来乘2,SAR用来除以2;
而逻辑移位指令则用来无符号数运算,SHL用来乘2,SHR用来除以2.
四、串处理指令
1.与REP相配合工作的MOVS,STOS和LODS指令
.REP重复串操作直到(CX)=0为上
格式:
REPstringprimitive
其中StringPrimitive可为MOVS,LODS或STOS指令
执行的操作:
1)如(CX)=0则退出REP,否则往下执行.
2)(CX)<-(CX)-1
3)执行其中的串操作
4)重复1)~3)
.MOVS串传送指令
格式:
可有三种
MOVSDST,SRC
MOVSB(字节)
MOVSW(字)
其中第二、三种格式明确地注明是传送字节或字,第一种格式则应在操作数中表明是字还是字节操作,例如:
MOVSES:
BYTEPTR[DI],DS:
[SI]
执行的操作:
1)((DI))<-((SI))
2)字节操作:
(SI)<-(SI)+(或-)1,(DI)<-(DI)+(或-)1
当方向标志DF=0时用+,当方向标志DF=1时用-
3)字操作:
(SI)<-(SI)+(或-)2,(DI)<-(DI)+(或-)2
当方向标志DF=0时用+,当方向标志DF=1时用-
该指令不影响条件码.
.CLD(Cleardirectionflag)该指令使DF=0,在执行串操作指令时可使地址自动增量;
.STD(Setdirectionflag)该指令使DF=1,在执行串操作指令时可使地址自动减量.
.STOS存入串指令
格式:
STOSDST
STOSB(字节)
STOSW(字)
执行的操作:
字节操作:
((DI))<-(AL),(DI)<-(DI)+-1
字操作:
((DI))<-(AX),(DI)<-(DI)+-2
该指令把AL或AX的内容存入由(DI)指定的附加段的某单元中,并根据DF的值及数据类型修改DI的内容,当它与REP联用时,可把AL或AX的内容存入一个长度为(CX)的缓冲区中.
.LODS从串取指令
格式:
LODSSRC
LODSB
LODSW
执行的操作:
字节操作:
(AL)<-((SI)),(SI)<-(SI)+-1
字操作:
(AX)<-((SI)),(SI)<-(SI)+-2
该指令把由(SI)指定的数据段中某单元的内容送到AL或AX中,并根据方向标志及数据类型修改SI的内容.指令允许使用段跨越前缀来指定非数据段的存储区.该指令也不影响条件码.
一般说来,该指令不和REP联用.有时缓冲区中的一串字符需要逐次取出来测试时,可使用本指令.
2.与REPE/REPZ和REPNZ/REPNE联合工作的CMPS和SCAS指令
.REPE/REPZ当相等/为零时重复串操作
格式:
REPE(或REPZ)StringPrimitive
其中StringPrimitive可为CMPS或SCAS指令.
执行的操作:
1)如(CX)=0或ZF=0(即某次比较的结果两个操作数不等)时退出,否则往下执行
2)(CX)<-(CX)-1
3)执行其后的串指令
4)重复1)~3)
.REPNE/REPNZ当不相等/不为零时重复串操作
格式:
REPNE(或REPNZ)StringPrimitive
其中StringPrimitive可为CMPS或SCAS指令
执行的操作:
除退出条件(CX=0)或ZF=1外,其他操作与REPE完全相同.
.CMPS串比较指令
格式:
CMPSRC,DST
CMPSB
CMPSW
执行的操作:
1)((SI))-((DI))
2)字节操作:
(SI)<-(SI)+-1,(DI)<-(DI)+-1
字操作:
(SI)<-(SI)+-2,(DI)<-(DI)+-2
指令把由(SI)指向的数据段中的一个字(或字节)与由(DI)指向的附加段中的一个字(或字节)相减,但不保存结果,只根据结果设置条件码,指令的其它特性和MOVS指令的规定相同.
.SCAS串扫描指令
格式:
SCASDST
SCASB
SCASW
执行的操作:
字节操作:
(AL)-((DI)),(DI)<-(DI)+-1
字操作:
(AL)-((DI)),(DI)<-(DI)+-2
该指令把AL(或AX)的内容与由(DI)指定的在附加段中的一个字节(或字)进行比较,并不保存结果,只根据结果置条件码.指令的其他特性和MOVS的规定相同.
五、控制转移指令
1.无条件转移指令
.JMP(jmp)跳转指令
1)段内直接短转移
格式:
JMPSHORTOPR
执行的操作:
(IP)<-(IP)+8位位移量
2)段内直接近转移
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- OllyDbg 命令行 命令 汇编 指令 大全