2013-11-08 22:37
⁄ 工业·编程
⁄ 共 1366字
什么是内存转储文件, 即dump?
======================
内存转储文件时一个进程或系统在某一给定的时间的快照. dump文件的种类有很多, 不同种类的dump文件包含不成程度的数据.
用户态内存转储文件 VS 内核态内存转储文件
======================
如果你抓一个进程的dump文件, 那么你抓取的是用户态的dump文件.
如果你抓取整个系统的内存dump文件, 那么你抓取的是内核态的dump文件.
一般来说, hung, crash, memory leak, exceptio...
WinDbg, 软件调试阅读全文
2013-11-07 22:36
⁄ 工业·编程
⁄ 共 598字
Symbol能够包含以下的一些信息:
全局变量
局部变量
函数名称, 参数
结构体
源代码行号
有三种类型的Symbol
export symbols 是dll本身的一部分. 比如ntdll.dll和kernel32.dll暴露出很大一部分他们的函数, 以便于他们能够像API一样地调用, 但是大多数的dll会有很少的exported symbols. 大致上, export symbol不包含函数的参数信息, 并且因为暴露的函数实在太少, 所以当你只有export symbol的时候不能确定栈信息的正确...
符号文件, 软件调试阅读全文
2013-11-06 22:31
⁄ 工业·编程
⁄ 共 1875字
扩展命令(Extension Command)用于实现针对特定调试目标的调试功能. 与标准命令和元命令是内建在WinDBG程序文件中不同, 扩展命令式实现在动态加载的扩展模块(DLL)中的.
利用WinDBG的SDK, 用户可以自己编写扩展模块和扩展命令. WinDBG程序包中包含了常用的扩展命令模块. 存放在以下几个子目录中.
NT4CHK: 调试目标为Windows NT 4.0 checked版本时的扩展命令模块.
NT4FRE: 调试目标为Windows NT 4.0 free 版本时的扩展命令模块.
W...
WinDbg, 软件调试阅读全文
2013-11-05 22:35
⁄ 工业·编程
⁄ 共 829字
1、入门的话,当属codeproject上的Driver Development Part系列。你google一下,会出1~7章,每章都用简洁精练的语言把windows驱动开发最难的部分讲清楚了,比国内很多教程强得多。我这么笨的都能看懂。
2、学windows内核驱动编程就应该从学写rootkit开始入门,这个有意思。到网上找《Professional Rootkits》和《subvert the windows kernel》的电子书来看,把他们配套的程序都玩一下,想想怎么样改进,各种rootkit的功能排列...
windows, 内核, 新手, 方法阅读全文
2013-11-04 22:29
⁄ 工业·编程
⁄ 共 1787字
元命令(Meta-Command)用来提供标准命令没有提供的常用调试功能, 与标准命令一样, 元命令也是内建在调试器引擎或者WinDBG程序文件中的. 所有元命令都已一个点(.)开始, 所以元命令也被称为点命令(Dot Command).
按照功能, 可以把元命令分成如下几类.
显示和设置调试会话和调试器选项.
用于符号选项的.symopt- Set Symbol Options
用于符号路径的.sympath- Set Symbol Path, 和.symfix- Set Symbol Store Path.
用于程序源文件...
WinDbg, 软件调试阅读全文
2013-11-03 22:50
⁄ 工业·编程
⁄ 共 390字
.reload /f 命令会强制debugger立即解析所有module相关联的符号文件.
于是我就想, 有没有什么命令可以立即去掉所有module相关联的符号文件呢? 找了半天也没找到, 最后发现.reload /f的反命令就是.reload
其他形式
===========
.reload <module>
抛弃模块<module>的符号信息. 任何解析符号的动作都将从硬盘上重新加载符号文件.
.reload /f <module>
强制调试器立刻加载并且解析与模块module相关的符号文件....
WinDbg, 软件调试阅读全文
2013-11-03 19:50
⁄ 工业·编程
⁄ 共 690字
1、Blitz++
参考网站:http://www.oonumerics.org/blitz
Blitz++ 是一个高效率的数值计算函数库,它的设计目的是希望建立一套既具像C++ 一样方便,同时又比Fortran速度更快的数值计算环境。通常,用C++所写出的数值程序,比 Fortran慢20%左右,因此Blitz++正是要改掉这个缺点。方法是利用C++的template技术,程序执行甚至可以比Fortran更快。
Blitz++目前仍在发展中,对于常见的SVD,FFTs,QMRES等常见的线性代数方法并不提...
c++, 程序库阅读全文
2013-11-02 22:27
⁄ 工业·编程
⁄ 共 1907字
WinDBG的大多数功能是以命令方式工作的, 本系列将介绍WinDBG的三类命令, 标准命令, 元命令和扩展命令.
标准命令
===============
标准命令用来提供适用于所有调试目标的基本调试功能.
所有基本命令都是实现在WinDBG内部的, 执行这些命令时不需要加载任何扩展模块. 大多数标准命令是一两个字符或者符号, 只有version等少数命令除外. 标准命令的第一个字符是不分大小写的, 第二个字符可能区分大小写. 迄今为止, WinDBG调试器共实...
WinDbg, 软件调试阅读全文
2013-11-01 22:26
⁄ 工业·编程
⁄ 共 864字
Crash都是发生在某一函数中, 而95%的crash都是由下面两种情况中的一种导致的:
发生crash的函数获得了错误的参数.
发生crash的函数使用了损坏了的内部数据.
代码的执行过程是对数据进行变化的过程. 对同一段代码, 在相同环境下, 如果使用的数据都相同, 那么执行的结果肯定是唯一的. 如果函数发生崩溃, 那么肯定是使用到的数据跟理想情况有差别. 函数使用的数据来源: 一是函数传入的参数, 二是函数体引用到的成员变量或全局变...
WinDbg, 软件调试阅读全文
2013-10-31 22:22
⁄ 工业·编程
⁄ 共 804字
如果有出错程序的dump, 哪怕dump不是在合适的时机获取的, 也可以分析出有用的信息.
通过vertarget查看系统版本和系统运行了多长时间.
通过!peb查看环境变量的情况. 由于很多第三方软件都习惯把自身路径添加到环境变量中, 所以这里很多时候可以看出一些已经安装的软件.
同时还能看到当前进程所加载的DLL和对应路径.
检查DLL和对应路径时, 可以重点检查如下的一些项目:
有没有防毒程序的DLL加载.
有没有类似...
WinDbg, 软件调试阅读全文