逆向之密码破解
OllyDbg介绍
- OllyDbg的功能
OllyDbg提供程序动态调试的功能,可以在程序运行过程中修改汇编指令
- OllyDbg的转移指令
在利用OllyDbg分析程序的过程中, “转移指令”就是在程序判断符合特定条件的情况下使程序发生跳转。
“转移指令”通常是分析程序的突破口。
常见的转移指令
(1)无条件转移指令(长转移)
(2)条件转移指令(短转移,-128到+127的距离内)
(3)循环控制指令(短转移)
(4)中断指令
无条件转移指令
- JMP无条件转移指令
- CALL 过程调用
- RET/RETF过程返回
条件转移指令
(当且仅当(SFXOROF)=1时,OP1<OP2)
- JA/JNBE不小于或不等于时转移
- JAE/JNB大于或等于转移
- JB/JNAE小于转移
- JBE/JNA小于或等于转移
- JG/JNLE大于转移
- JGE/JNL大于或等于转移
- JL/JNGE小于转移
- JP/JPE奇偶性为偶数时转移
- JLE/JNG小于或等于转移
- JE/JZ等于转移
- JNE/JNZ不等于时转移
- JC有进位时转移
- JNC无进位时转移
- JNO不溢出时转移
- JNP/JPO奇偶性为奇数时转移
- JO溢出转移
- JS符号位为"1"时转移
循环控制指令
- LOOPCX不为零时循环
- LOOPE/LOOPZCX不为零且标志Z=1时循环
- LOOPNE/LOOPNZCX不为零且标志Z=0时循环
- JCXZCX为零时转移
- JECXZ ECX为零时转移
中断指令
- INT中断指令
- INTO溢出中断
- IRET中断返回
转移指令特性
- 转移指令特性
转移指令通常对应程序中的因果判断,循环判断等等逻辑结构,而这些结构对于一个程序的整体逻辑结构至关重要往往一个很小的判断语句就担负着程序执行方向的变化任务。
通过修改特定部分的转移指令,可以达到截然不同的执行效果,因此转移指令对程序的安全性起到很大的作用。