使用OllyDbg调试独立DLL及函数调用详解

需积分: 45 21 下载量 8 浏览量 更新于2024-08-08 收藏 1.27MB PDF 举报
"这篇文档是关于OllyDbg的详细教程,涵盖了从基本概念到高级功能的多个方面,包括OllyDbg的组件、使用方法和调试DLL等其他功能。" 在OllyDbg这款强大的逆向工程工具中,调试独立的DLL是一个重要的功能。在第四章的"调试独立的DLL"部分,描述了如何打开和使用DLL文件。首先,你可以直接将DLL文件拖放到OllyDbg界面上,OllyDbg会调用loaddll.exe并传递DLL的全路径作为参数,随后DLL被加载并在DllEntryPoint处暂停。这样,你就可以设置断点,对启动代码进行运行或跟踪。 在DLL初始化完成后,程序会再次暂停,这次是在进入主消息循环之前的Firstbp标签处。此时,你可以通过“调试—>调用DLL输出”菜单项来调用DLL中的函数。调用函数时,OllyDbg会显示参数数量,例如在选择USER32.DLL的MessageBox函数时,它会显示出参数数量为4,这是通过识别RET 10指令推断出来的。RET nnn是PASCAL调用约定的标志,意味着参数从栈中按反向顺序依次出栈。 在调用函数前,你可以设置参数列表。尽管OllyDbg通常能自动识别参数数量,但你也可以手动调整。参数可以是任意有效的表达式,不局限于寄存器或内存地址。对于像MessageBox这样的函数,可能需要指定文本字符串、对话框类型、父窗口句柄和消息框图标等参数。 文档还提及了其他功能,例如解码提示、表达式赋值和自定义函数描述等,这些功能增强了OllyDbg的灵活性和实用性。解码提示帮助理解代码逻辑,表达式赋值允许用户直接在调试过程中修改变量或内存值,而自定义函数描述则允许用户为未知函数提供自定义解释,以增强分析能力。 OllyDbg的使用涵盖了从启动调试会话到高级调试技术的广泛范围,包括CPU窗口、断点管理、数据窗口、内存映射、线程和调用栈的监控,以及各种跟踪和搜索功能。此外,还有快捷键和插件的支持,提供了丰富的自定义和扩展能力。尽管OllyDbg 1.10版本的开发已停止,但它依然是逆向工程和调试领域的强大工具,尤其在没有源代码的情况下,其独特的功能使其成为解决问题的有效助手。