2005.3.20-IT俱乐部-活动笔记
由于未拿到讲座的ppt,暂时把我记下来的先整理出来,肯定会有许多遗漏和错误,还望大家指出或补充。
Advanced Debugging
By Raymond Zhang
Debuger 调试者
Debuggee 被调试者
系统内存分配
00000000-7FFFFFFF HAL
7FFFFFFF-
-FFFFFFFF System Cache Page System
函数的地址分布
EBP - Extended Based Point
EBP+8 第一个参数地址
EBP+4 返回值地址
WinDBG调试方式
1. 由Windbg启动一个进程(该方式可以保证调试器是窗口的主进程)
2. 附加到一个Running 的进程
3. 附加到目标计算机
命令分类
1. Regular Command
d+xxx 显示
e+xxx 修改
b+xxx 断点
r+xxx 寄存器
2. Meta Commands
reboot 重启程序
reload 重新加载符号文件
3. Extended Command
process 列出所有进程
通过process命令显示的进程列表中的一些参数说明:
SessionID 所在桌面的ID,在多桌面情况下有效,默认为0
DirBase 内核对象基地址
Image exe文件名
调试演示1:通过GetWindowText()获得Outlook帐号界面中的密码框中的内容
说明:
1. WinXP API规定必须从自己进程发出的消息或命令才会被处理
2. 非攻击性Attach是被Windows系统允许的
00000000 00000000 00000000 00000000
假设以上为事件调用GetWindowText()时,GetWindowText()的函数入口情况,第一个是函数的Handle地址,第二个是buffer的地址,第三个是buffer的长度地址
Software Exceptions 0-255(这里的异常是汇编级异常,与.net中的异常完全不同)
0 Divide by Zero
1 Debug Exception
3 Breakpoint
4 Overflow by NTO
5 Array Bounds Check
6 Invalid opcode (WinNT下,IN / OUT 操作可能引发)
? Page fault (缺页异常)
如:int 3h 产生断点,VC中通过保存特定行的语句,并用int 3h代替来实现断点
在程序Hex中我们经常看到“烫”,其实它是ASCII码DCDC转换而来,DC表示一个int 3h
用户态堆栈 1MB
内核态堆栈 8KB
在VS.net或VC未安装时,异常是由Windows自带的Dr Watson处理,并且弹出提示对话框的
在Dr Watson中可以设置是否允许Debug
在注册表中可以设置使用哪个调试器,在AeDebug中
用户堆栈
_______________-
参数 SP+8
————————
返回值 SP+4
————————
调用堆指针 SP(本行下面一条边,就是SP地址)
————————
本地变量
————————
从上到下,地址从大到小
一些黑客可以利用特定的字符串传入,覆盖本地变量并且造成buffer overflow来向上覆盖返回值,从而获得对程序的控制权。(这时可能返回到不该返回的地方,如黑客指定的控制程序)
BSOD(Blue Screen of Death)
通常是由于发生了驱动程序无法处理的异常,而被os捕获造成的
STOP: 0xC0000005(0x0000000,0x0000000,...)
0xC0000005为异常码,可以在Windbg帮助文件中的Bug Checks中找到对应的异常码和具体说明
括号中的内容是特定异常码所对应的参数,也可以在Windbg的帮助文件中找到。注意,每一个异常码对应特定个数和类型的参数
(以上例子中的0x0C0000005是访问异常)
在WinDbg中用户可以通过!analyze -v命令实现对Dump File的自动分析,它会告诉你是哪个驱动程序引起蓝屏的,通常情况下,这一信息时可靠的。
技巧:大家可以通过关闭 我的电脑->启动与恢复设置->系统失败 自动重新启动选项,实现蓝屏后不马上重新启动,以便于记录下错误信息,方便调试。
推荐的两本参考书:
Debugging Applications By John Robbins
Debugging Principle By Raymond Zhang (not published)
即将开通的IT俱乐部网站:www.chinaitclub.org
************************************Updated ***************************************
祝成科技提供的讲义下载
版权声明:本文由作者Tony Qu原创, 未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则视为侵权。