OllyDbg指令
运行该指令不会对寄存器、内存以及堆栈造成任何影响,英文意思是”无操作”,它没有特殊的用途
例如,你用一个短指令来替换一个长指令的话,如果处理器没有错误多余的空间将会被NOP填充
适当数目的nop指令可以将其他指令完全替换掉
将操作数压入堆栈,PUSH操作后会更新ESP指向新的栈顶地址,可操作数值、寄存器和内存地址
堆栈保存数据窗口中颠倒过来的值,即倒序放置,读/写的内容在内存中倒序是处理器的特点之一
如data(CA 20 40 00)则stack(00 40 20 CA)
PUSH 401000 将数据401000压入栈
PUSH [401000] 取内存地址为401000中的数据压入栈
它会取出堆栈顶部的***个字母或者***个值,然后存放到指定的目标地址内存单元中
POP操作后会更新ESP指向新的栈顶地址
如,POP EAX从栈顶中取出***个值存放到EAX中,随后的一个值随即变成栈顶
指令把所有通用寄存器的内容按一定顺序压入到堆栈中,相当于
"PUSH EAX,PUSH ECX,PUSH EDX,PUSH EBX,PUSH ESP,PUSH EBP,PUSH ESI,PUSH EDI"
PUSHA 等价于 "PUSH AX, CX, DX, BX, SP, BP, SI, DI"
与PUSHAD正好相反,它从堆栈中取值,并将它们放到相应的寄存器中,相当于
"POP EDI,POP ESI,POP ESP,POP ESP,POP EBX,POP EDX,POP ECX,POP EAX"
POPA 等价于 "pop DI, SI, BP, SP, BX, DX, CX, AX"
PUSHA,POPA/PUSHAD,POPAD在16位程序中使用,我们不感兴趣,OllyDbg是一个32位调试器
该指令将第二个操作数赋值给***个操作数,如: MOV EAX, EBX
p2是寄存器也可能是内存单元,p1的位数比p2多,p2的符号位填充p1剩余部分
如:
EAX = 00000000,BX = F000
MOVSX EAX,BX
执行后EAX = FFFFF000,因为F000是负数,所以EAX的高位用F填充
EAX = 00000000,BX = 7FFF
MOVSX EAX,BX
执行后EAX = 00007FFFF,因为7FFF是正数,所以EAX的高位用0填充
16位范围0000~FFFF, 正 0000~7FFF, 负8000~FFFF
32位范围00000000~FFFFFFFF, 正 00000000~7FFFFFFF, 负80000000~FFFFFFFF
MOVZX类似于MOVSX,但是这种情况下,剩余的部分不根据第二个操作数的正负来进行填充
剩余的部分总是被填充为0
类似于MOV指令, 但是***个操作数是一个通用寄存器,并且第二个操作数是一个内存单元。
当计算的时候要依赖于之前的结果的话,那么这个指令就非常有用。
如:
LEA EAX, DWORD PTR DS:[ECX+38]
在这个例子中,LEA指令就计算ECX + 38的值,然后将计算的结果赋值给EAX
因为完成的是赋值操作,所以我们会认为操作数是内存单元中的值,
但实际上,操作数仅仅是内存单元的地址,而不是里面的内容
该指令交换两个操作数的值
如:
XCHG EAX,ECX
EAX的值将被存放到ECX中,反之亦然,也可以交换寄存器和内存单元的值
Ollydbg中的内存断点和硬件断点的区别
内存断点一般是对壳进行数据解压,通过解压后的数据来实现ope跳转,简单的说,加壳程序的重要代码都在壳中,如果要脱壳,就必须让壳自己完成解压,这时,通过内存断点的方法可以很容易进行破解,而硬件断电一般与esp定律相结合使用的。
ollydbg怎么学?
OllyDbg 是一款非常流行的 Windows 逆向工程调试器。如果你想学习使用 OllyDbg,可以参考以下步骤:
了解 OllyDbg 的基本功能,包括调试程序、查看内存、修改程序行为等。
安装 OllyDbg,并打开一个简单的程序进行调试。
学习 OllyDbg 的基本操作,包括断点、单步执行、查看堆栈等。
熟练使用 OllyDbg 的插件,如反汇编插件、汇编插件、内存浏览器等。
尝试调试一些稍微复杂的程序,并学习如何修改程序行为。
学习使用 OllyDbg 进行逆向工程,包括反汇编、提取加密程序的密钥、去壳等。
学习 OllyDbg 需要耐心和持续的练习。建议你参考相关教程和文档,并多参与一些 OllyDbg 相关的讨论群或论坛,从而加深对 OllyDbg 的理解,在B站上有一些关于OllyDbg 的视频教程,可以去了解下
关于ollydbg和ollydbg手机版的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。