Advanced Debugging
About AdvDbg Consult Train Services Products Tools Community Contact  
欢迎光临 高端调试 登录 | 注册 | FAQ
 
  ACPI调试
Linux内核调试
Windows内核调试
 
  调试战役
调试原理
新工具观察
 
  Linux
Windows Vista
Windows
 
  Linux驱动
WDF
WDM
 
  PCI Express
PCI/PCI-X
USB
无线通信协议
 
  64位CPU
ARM
IA-32
  CPU Info Center
 
  ACPI标准
系统认证
Desktop
服务器
 
  Embedded Linux
嵌入式开发工具
VxWorks
WinCE
嵌入式Windows
 
  格蠹调试套件(GDK)
  格蠹学院
  小朱书店
  老雷的微博
  《软件调试》
  《格蠹汇编》
  《软件调试(第二版)》
沪ICP备11027180号-1

Windows内核调试

帖子发起人: clark   发起时间: 2011-01-18 15:32 下午   回复: 3

Print Search
帖子排序:    
   2011-01-18, 15:32 下午
clark stone 离线,最后访问时间: 2011/1/18 7:26:33 clark

发帖数前500位
注册: 2011-01-18
发 贴: 2
WDK正常编译后,在windbg里,check版本的符号很正确,release版本的符号经常对不上
Reply Quote
我的驱动程序编译后,都是用build -nmake /a 全部编译后发行.
check版本时,在windbg里调问题时很清晰,所有的符号都很准确.
但是release版本时,在客户那边出了问题,给回dmp文件时,用windbg分析,经常符号对的非常混乱,有的变量无法查看其值,有的对应错了.头疼死了.
请问该怎么处理?
我的makefile文件和source文件都非常简单:

makefile文件里:
!IF 0

Copyright (C) Microsoft Corporation, 1999 - 2002

Module Name:

makefile.

Notes:

DO NOT EDIT THIS FILE!!! Edit .\sources. if you want to add a new source
file to this component. This file merely indirects to the real make file
that is shared by all the components of Windows NT (DDK)

!ENDIF

!INCLUDE $(NTMAKEENV)\makefile.def



source文件里:
TARGETNAME=FXD
TARGETTYPE=DRIVER
DRIVERTYPE=FS


TARGETLIBS= $(TARGETLIBS) \
$(IFSKIT_LIB_PATH)\fltMgr.lib

SOURCES= .....\
FXD.rc
IP 地址: 已记录   报告
   2011-01-18, 18:45 下午
WANGyu 离线,最后访问时间: 2012/9/10 3:34:00 王宇

发帖数前10位
男
注册: 2007-05-08
发 贴: 306
Re: WDK正常编译后,在windbg里,check版本的符号很正确,release版本的符号经常对不上
Reply Quote
这很正常啊。如果在 release 版里还能 ?? 出变量,那就信息泄露大了。WDK 的优化还算好,不然连函数都给优化内联了才叫抓狂。

多数公司会编译完加签名,会导致偏移再次错位,加壳 / VM 的则更悲剧。我远程用户的时候,往往得 Local Debug 等一点点分析我的变量,这时,留一些“不经意”的定位“入口”(不违反信息保密 / 被攻击者利用 Patch 的前提下)会帮上大忙。

QQ 远程用户时,无法调试驱动。我给逼的只得写一堆栈回朔封装,内存打印封装,往驱动里整,给用户替换,定位问题。LZ 看看 dump 啥的,已经很幸福了呢。
IP 地址: 已记录   报告
   2011-01-19, 08:22 上午
clark stone 离线,最后访问时间: 2011/1/18 7:26:33 clark

发帖数前500位
注册: 2011-01-18
发 贴: 2
Re: WDK正常编译后,在windbg里,check版本的符号很正确,release版本的符号经常对不上
Reply Quote
额,ls你说的那些我也搞了,我驱动中支持一整套的我自己的各种调试机制,我通过往一个特定的DIOC中输入数据,可以指引我的驱动打印各种数据,影响它的执行流程等等.
我之前也一直认为是release版优化的问题,所以没管这个问题.看dmp文件也经常要dds的搞下去.可搞多了,就觉得这样太痛苦了.
我试过编译的时候把优化关的差不多了,还是有这个问题.

这和保密什么的没关系啦.用户又没有驱动的符号文件,怎么可能能分析到各个符号的数据等等.

IP 地址: 已记录   报告
   2011-01-19, 10:24 上午
WANGyu 离线,最后访问时间: 2012/9/10 3:34:00 王宇

发帖数前10位
男
注册: 2007-05-08
发 贴: 306
Re: WDK正常编译后,在windbg里,check版本的符号很正确,release版本的符号经常对不上
Reply Quote
呵呵,我还是觉得这个问题没什么。写驱动的人应该要很清楚自己发布驱动的二进制细节特征,从 Dump 的文件版本信息必须能唯一定位到自己的某个 Tag。再 IDA 兑一下那个 Tag 的 Free Build 版,也就几分钟的事情嘛。

另外就是 ls 同学的驱动应该不是对公众发布的 ( FXD.SYS )。某些众矢之的的公司驱动发出来,几天之内就可以被木马作者们逆成源码。到时被点杀会很惨的。
IP 地址: 已记录   报告
高端调试 » 软件调试 » Windows内核调试 » Re: WDK正常编译后,在windbg里,check版本的符号很正确,release版本的符号经常对不上

 
Legal Notice Privacy Statement Corporate Governance Corporate Governance
(C)2004-2020 ADVDBG.ORG All Rights Reserved.