源码:一个OllyDbg的插件.调试输出重定向.

王朝网络·other·作者佚名  2006-01-09
宽屏版  字体: |||超大  

我们都知道OllyDbg会把目标调试程序中调用OutputDebugString输出的调试信息拦截.而OllyDbg的调试输出过滤等功能都不如DbgView.所以,如果你习惯使用DbgView,那这个插件是你需要的,它可以在不影响OllyDbg记录显示的情况下再输出一份调试信息到DbgView.

下面是代码:

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

; OD 的一个插件例子

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

.386

.model flat, stdcall

option casemap :none

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

; Include 文件定义

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

include windows.inc

include kernel32.inc

includelib kernel32.lib

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

.data?

szDbgStr db 1024 dup (?) ; 调试输出缓冲区

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

.code

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

; dll 的入口函数

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

DllEntry proc _hInstance,_dwReason,_dwReserved

mov eax,TRUE

ret

DllEntry Endp

szPluginName db "调试输出重定向",0

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

; OD 获取插件名称的函数

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

_ODBG_Plugindata proc C _lpStr

pushad

invoke lstrcpy,_lpStr,offset szPluginName

popad

mov eax,06Ch ; OD 版本信息(#define PLUGIN_VERSION 108)

ret

_ODBG_Plugindata endp

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

; 初始化函数

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

_ODBG_Plugininit proc C _dwVersion,_hWnd,_Features

xor eax,eax

ret

_ODBG_Plugininit endp

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

; 主循环函数

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

_ODBG_Pluginmainloop proc C stDE

local @hProc

pushad

mov edi,stDE

.if edi != 0

mov eax,(DEBUG_EVENT ptr [edi]).dwDebugEventCode

.if eax == OUTPUT_DEBUG_STRING_EVENT ; 调试输出事件

invoke OpenProcess,PROCESS_ALL_ACCESS,0,(DEBUG_EVENT ptr [edi]).dwProcessId

.if eax != 0

mov @hProc,eax

mov edx,(DEBUG_EVENT ptr [edi]).u.DebugString.lpDebugStringData

movzx ecx,(DEBUG_EVENT ptr [edi]).u.DebugString.nDebugStringiLength

invoke ReadProcessMemory,@hProc,edx,offset szDbgStr,ecx,0

invoke CloseHandle,@hProc

invoke OutputDebugString,offset szDbgStr

.endif

.endif

.endif

popad

ret

_ODBG_Pluginmainloop endp

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

End DllEntry

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有