新手学习.OD符号调试技术

学习加解密3上的 东西~~



符号表的作用:

它的作用是将十六进制数转换为源文件代码行,函数名以及变量名称,
符号表还包含程序使用的类型信息,调试使用这些类型信息可以获取原始数据,并将这些原始数据显示为在程序中所定义的结构或变量



(1);SYM
SYM是早期用于MS-DOS和16位win os 现在只在9x下使用的调试符(内核还是16为代码的问题)

(2)COFF
Common Object File Format   
这是unix 上遵循的规范的一部分,nt2.1 的时候使用,现在微软逐渐抛弃Coff格式,而使用其他的调试符号表达式(比如pdb)

(3)
C7 (CodeView)格式
最早是在 MS-DOS 做为 Microsoft C/C++ 的一部分而问世的,现在已经支持win32系统,
CodeView是早期 微软 大哥调试器的名称, 符号为C7格式,
C7是一个自我包含的,符号信息与二进制代码混合,进而意味着调试文件会非常大,

(4)
PDB 格式

Program Database  (vc6里面有这个选项,在debuginfo 部分选择program Database)  ,是现今最常用的一种符号格式,VC和VB都支持PDB , PDB符号是根据应用程序不同的链接方式,保存在单独的一个文件或多个文件中.

(5)
DBG 格式

DBG 是系统调试符号,有了系统调试符号,调试器才可正确显示系统函数名,
他的不同之处在于,link并不创建DBG 文件,
DBG文件基本是包含其他调试符号的文件,如包含COFF或C7等类型调试符号,微软将操作系统调试符,都分配在DBG文件中,当然这些文件只包括公用信息和全局信息,
如ntdll,kernerl32 ,gdi,user32等

(6)
MAp 文件是程序的全局符号,源文件和代码行号信息的 一个文件(最重要的是他是txt格式)
MAP 文件在任何地方,任何时候都可以使用,不要求支持程序。通用性不错

进行符号或者 源码及调试的首要条件是生成的文件得包含符号调试信息,否则不是白扯吗....


创建调试文件的方法

BCB 4.5和5.0的方法

编译器(以下简称cl) /v
链接器 (简称link) /v

Masm
产生的是codeview格式的符号
cl:
ML/Zi /COFF
link:
/DEBUG/DEBUGTYPE:CV[/PDB:NONE]

Visual C++ 6.0
产生 PDB 调试信息:


1,选上 ProGram Database选项
2,cmd line : /Zi
link:
/DEBUG/DEBUGTYPE:CV


产生CodeView格式的调试信息

cl: 用C7-compatible选项
cmd line : /Zi

link: 同上PDB

NTDDK 的方法 请参考NetRoc大牛翻译的windbg入门文章(非常有用hoho~~~)



OllDbg里面 在“调试选项”里面设置“CPU”标签,选上 Synchronize source with CPU (源代码同步跟踪)

然后可以 单击View/SouRce file 打开源码文件路径窗口查看,一些不正路径的源文件 ,OD默认不显示
需要 显示 可以在“调试选项”里面 到debug标签 将 “ 隐藏不存在的源代码文件” 选项去掉
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值