OD与调试符号

本文介绍了在OllyDbg(OD)与Visual Studio 2008(VS2008)中PDB和LIB文件的作用及使用方法。详细讲述了如何通过LIB文件提高符号可读性,以及在VC2008中如何配置DEF文件以输出导出序号。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在使用WinDBG时,要加载调试符号则是使用的编译器生成的标准PDB调试库。

而在OD中,有两类调试信息来源:

1.PDB文件

2.LIB文件

其中,LIB文件在查找导入符号时,能够发挥重要的作用。

 

下文将解释OD和VS2008使用LIB库的一些条件:

1.简介

例如众所周知的MFC库大量使用了DLL导出序号,因此在OD中查看这些导入信息时,都只能看到序号。

为了增加可读性,可以在OD中使用 “选择导入库” 功能来加载LIB信息,这样就可以在名称表中看到DLL的原始导入名称了。

在创建DLL工程时,程序员可以选择以序号输出导出函数。

2.VC2008的编译设置

在VC2008中,可以使用DEF文件来完成这项任务。其方法是,在工程中增加一个DEF文件。

DEF文件中的导出符号如下所示:

LIBRARY   TestLib
EXPORTS
   fnTest   @1 NONAME

其中:

TestLib是导出库名称

fnTest @1 NONAME表示了,fNTest是导出的原始函数名,将导出为序号为1的函数,NONAME表示强制不输出函数名称

LIB文件中存储了fnTest这种名称,当程序使用以上导入库时,在lib中匹配fnTest函数名称,然后按照序号1来链接。

 在VC2008中,如果要输出序号只能用DEF文件来实现,__declspec(dllexport)这种默认方式只能输出名称。

3.VC2008的链接设置

链接时,必须在链接器指定命令行选项:/DEF:TestLib.def,则编译器会使用DEF文件作为导出参考。

 4.OD应用LIB信息

OD可以利用LIB来还原fnTest这个信息。

而且,OD在加载DLL时,会比较智能的在当前目录下寻找DLL同名的LIB文件作为导入信息库。

posted on 2012-10-17 11:00 孤注一掷 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/bitxj/archive/2012/10/17/2727338.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值