逆向之密碼破解
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中斷返回
轉移指令特性
- 轉移指令特性
轉移指令通常對應程序中的因果判斷,循環判斷等等邏輯結構,而這些結構對於一個程序的整體邏輯結構至關重要往往一個很小的判斷語句就擔負着程序執行方向的變化任務。
通過修改特定部分的轉移指令,可以達到截然不同的執行效果,因此轉移指令對程序的安全性起到很大的作用。