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

OllyDbg会拦截目标调试程序中OutputDebugString输出的调试信息,但其调试输出过滤等功能不如DbgView。本文介绍一个插件,可在不影响OllyDbg记录显示的情况下,将调试信息输出到DbgView,并给出了该插件的代码实现。

我们都知道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

计及风电并网运行的微电网及集群电动汽车综合需求侧响应的优化调度策略研究(Matlab代码实现)内容概要:本文研究了计及风电并网运行的微电网及集群电动汽车综合需求侧响应的优化调度策略,并提供了基于Matlab的代码实现。研究聚焦于在高渗透率可再生能源接入背景下,如何协调微电网内部分布式电源、储能系统与大规模电动汽车充电负荷之间的互动关系,通过引入需求侧响应机制,建立多目标优化调度模型,实现系统运行成本最小化、可再生能源消纳最大化以及电网负荷曲线的削峰填谷。文中详细阐述了风电出力不确定性处理、电动汽车集群充放电行为建模、电价型与激励型需求响应机制设计以及优化求解算法的应用。; 适合人群:具备一定电力系统基础知识和Matlab编程能力的研究生、科研人员及从事新能源、微电网、电动汽车等领域技术研发的工程师。; 使用场景及目标:①用于复现相关硕士论文研究成果,深入理解含高比例风电的微电网优化调度建模方法;②为开展电动汽车参与电网互动(V2G)、需求侧响应等课题提供仿真平台和技术参考;③适用于电力系统优化、能源互联网、综合能源系统等相关领域的教学与科研项目开发。; 阅读建议:建议读者结合文中提供的Matlab代码进行实践操作,重点关注模型构建逻辑与算法实现细节,同时可参考文档中提及的其他相关案例(如储能优化、负荷预测等),以拓宽研究视野并促进交叉创新。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值