⼏个汇编指令iret,ret,int
ret指令,(摘⾃百度百科)
执⾏过程
ret指令⽤栈中的数据,修改IP的值,从⽽实现近转移。
CPU执⾏ret指令时,进⾏下⾯两步操作:
(IP)=((SS)*16+(SP))
(SP)=(SP)+2;
另⼀种⽤法 ret n (n为整数)
等效于
(IP)=((SS)*16+(SP))
(SP)=(SP)+2;
(SP)=(SP)+n;
例如ret 4
pop ip
add sp,4
返回调⽤处
汇编指令有多少个例:
push eax
call @msg ;call标号是把压⼊,然后再跳到标号@msg处
;[标记1]
;继续代码....
@msg:
push 0
push 0
push eax
push 0
call dword ptr [MessageBoxA]
ret ;这是取出EIP,返回到调⽤处,继续执⾏[标记1]
iret interrupt return 中断返回指令 (也是百度百科)
1.恢复(instruction pointer):(IP)←((SP)+1:(SP)),(SP)←(SP)+2
2.恢复(code segment):(CS)←((SP)+1:(SP)),(SP)←(SP)+2
3.恢复中断前的(program status word),即恢复中断前的的状态。
(FR)←((SP)+1:(SP)),(SP)←(SP)+2
4.恢复ESP(返回权限发⽣变化)
5.恢复SS(返回权限发⽣变化)
int 指令
1) 中断类型号
2) 标志寄存器⼊栈,IF=0.TF=1
3) Cs ,ip⼊栈
4) IP=(n*4),CS=(n*4+2)
awatch指定⼀个变量,如果这个变量被读或者被写,则暂停程序运⾏,在调试器中显⽰信息,并等待下⼀个调试命令。参考rwatch和watch命令。
backtrace显⽰函数调⽤得所有栈框架(stack frames)的踪迹和当前函数的参数的值,bt是这个命令的简写。
break设置⼀个断点,这个命令需要指定代码⾏或者函数名作为参数
clear删除⼀个断点,这个命令需要制定代码⾏或者函数名作为参数
continue调试器停⽌的地⽅继续执⾏
Ctrl-C在当前位置停⽌执⾏正在执⾏的程序,断点在当前⾏
disable禁⽌断点功能,这个命令需要禁⽌的断点在断点列表索引值作为参数
display在断点的停⽌的地⽅,显⽰指定的表达式的值。(显⽰变量)
enable允许断点功能,这个命令需要允许的断点在断点列表索引值作为参数
enable允许断点功能,这个命令需要允许的断点在断点列表索引值作为参数
finish继续执⾏,知道当前函数返回
ignore忽略某个断点制定的次数。例:ignore 4 23忽略断点4的23次运⾏,在第24次的时候中断
info
breakpoints查看断点信息
info display查看设置的需要显⽰的表达式的信息
kill终⽌当前debug的进程
list显⽰10⾏代码。如果没有提供参数给这个命令,则从当前⾏开始显⽰10⾏代码。如果提供了函数名作为参数,则从函数开头显⽰。如果提供代码⾏的编号作为参数,这⼀⾏作为开头显⽰。
load动态载⼊⼀个可执⾏⽂件到调试器。
next执⾏下⼀⾏的源代码的所有指令。如果是函数调⽤,则也当作⼀⾏源代码,执⾏到此函数返回
nexti执⾏下⼀⾏的源代码中的⼀条汇编指令
print显⽰变量的值
ptype显⽰变量的类型
return强制从当前函数返回
run从程序开始的地⽅执⾏
rwatch指定⼀个变量,如果这个变量被读,则暂停程序运⾏,在调试器中显⽰信息,并等待下⼀个调试命令。参考rwatch和watch命令。
set设置变量的值。例如:set nval=54将把54保存到nval变量中
step继续执⾏程序下⼀⾏源代码的所有指令。如果是调⽤函数,这个命令将进⼊函数的内部,单步执⾏函数中代码。
stepi继续执⾏程序下⼀⾏源代码中的汇编指令。如果是函数调⽤,这个命令将进⼊函数的内部,单步执⾏函数中的汇编代码。txbreak在当前函数的退出的点上设置⼀个临时的断点(只可使⽤⼀次)。
undisplay删除⼀个display设置的变量显⽰。这个命令需要将display list中的索引做参数。
watch指定⼀个变量,如果这个变量被写,则暂停程序运⾏,在调试器中显⽰信息,并等待下⼀个调试命令。参考rwatch和watch命令。
whatis显⽰变量的值和类型。
xbreak在当前函数的退出的点上设置⼀个断点。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论