OllyDbg是一款能够在Windows环境下的动态调试软件,与Softice不同的是,它运行在用户模式下,且结合了动态调试与静态分析的功能。
OllyDbg通常用于反汇编调试,但事实上,它也能进行源码级调试,这对众多程序员来说是个福音。
下面我就以Win32汇编语言为例,简单介绍一下OllyDbg的源码级调试方法。
=================================================================
先来看一段示例代码:
代码文件列表:
ODbgTest.Asm
ODbgTest.Inc
DlgProc/DlgProc.Asm
ODbgTest.Rc
主要代码如下:
-------------------
ODbgTest.Asm:
-------------------
.386
.model flat, stdcall
option casemap :none
include ODbgTest.inc
include DlgProc/DLgProc.asm
.code
start:
invoke GetModuleHandle,NULL
mov hInstance,eax
invoke InitCommonControls
invoke DialogBoxParam,hInstance,IDD_DIALOG1,NULL,addr DlgProc,NULL
invoke ExitProcess,0
end start
-------------------
DlgProc/DlgProc.Asm
-------------------
.code
DlgProc proc hWin:HWND,uMsg:UINT,wParam:WPARAM,lParam:LPARAM
mov eax,uMsg
.if eax==WM_INITDIALOG
.elseif eax==WM_COMMAND
mov eax,wParam
mov edx,eax
shr edx,16
and eax,0FFFFh
.if edx==BN_CLICKED
.if eax==IDC_BTN1
invoke EndDialog,hWin,NULL
.endif
.endif
.elseif eax==WM_CLOSE
invoke EndDialog,hWin,0
.else
mov eax,FALSE
ret
.endif
mov eax,TRUE
ret
DlgProc endp
---------------------------------------------------------------
下面的编译链接所用的选项比较重要,就是要添加调试信息供OllyDbg调试:
rc ODbgTest.Rc
ml /c /coff /Cp /Zi ODbgTest.Asm
link /SUBSYSTEM:WINDOWS /DEBUG /DEBUGTYPE:CV ODbgTest.obj ODbgTest.res
完成后,我们便可以得到可执行程序ODbgTest.exe。
===============================================================&#
OllyDbg通常用于反汇编调试,但事实上,它也能进行源码级调试,这对众多程序员来说是个福音。
下面我就以Win32汇编语言为例,简单介绍一下OllyDbg的源码级调试方法。
=================================================================
先来看一段示例代码:
代码文件列表:
ODbgTest.Asm
ODbgTest.Inc
DlgProc/DlgProc.Asm
ODbgTest.Rc
主要代码如下:
-------------------
ODbgTest.Asm:
-------------------
.386
.model flat, stdcall
option casemap :none
include ODbgTest.inc
include DlgProc/DLgProc.asm
.code
start:
invoke GetModuleHandle,NULL
mov hInstance,eax
invoke InitCommonControls
invoke DialogBoxParam,hInstance,IDD_DIALOG1,NULL,addr DlgProc,NULL
invoke ExitProcess,0
end start
-------------------
DlgProc/DlgProc.Asm
-------------------
.code
DlgProc proc hWin:HWND,uMsg:UINT,wParam:WPARAM,lParam:LPARAM
mov eax,uMsg
.if eax==WM_INITDIALOG
.elseif eax==WM_COMMAND
mov eax,wParam
mov edx,eax
shr edx,16
and eax,0FFFFh
.if edx==BN_CLICKED
.if eax==IDC_BTN1
invoke EndDialog,hWin,NULL
.endif
.endif
.elseif eax==WM_CLOSE
invoke EndDialog,hWin,0
.else
mov eax,FALSE
ret
.endif
mov eax,TRUE
ret
DlgProc endp
---------------------------------------------------------------
下面的编译链接所用的选项比较重要,就是要添加调试信息供OllyDbg调试:
rc ODbgTest.Rc
ml /c /coff /Cp /Zi ODbgTest.Asm
link /SUBSYSTEM:WINDOWS /DEBUG /DEBUGTYPE:CV ODbgTest.obj ODbgTest.res
完成后,我们便可以得到可执行程序ODbgTest.exe。
===============================================================&#