本文为笔者从零基础学习系统安全相关内容的笔记,如果您对系统安全、逆向分析等内容感兴趣或者想要了解一些内容,欢迎关注。本系列文章将会随着笔者在未来三年的读研过程中持续更新。
前文链接
[系统安全] PE文件格式详解1[系统安全] PE文件格式详解2
文章目录
- 逆向调试工具介绍
- 用户模式程序调试
- 内核模式程序调试
逆向调试工具介绍
windows下调试工具主要有Ollydbg、IDA、Windbg。调试的程序主要分成两类,一类是用户态下程序,一类是内核态下程序。Windbg的一个升级版是Windbg Preview,这个也是本篇文章记录的内容。
一般情况下用户态程序调试使用Ollydbg或者IDA,内核态程序调试使用Windbg。
需要注意的是Windbg调试器需要符号文件来获取有关代码模块的信息(函数名、变量名等)。也就是VS编译生成的一个.pdb
后缀文件。
用户模式程序调试
先使用VS编译代码生成exe文件和pdb文件
void MyFunction(long p1, long p2, long p3){
long x = p1 + p2 + p3;
long y = 0;
y = x / p2;
}
int main(){
long a = 2;
long b = 0;
MyFunction(a, b, 5);
return 0;
}
从Windbg Preview中打开,并在main处设置断点
然后点击run之后就可以进行常规调试
内核模式程序调试
进行内核调试时,操作系统将被冻结,这种情况下不可能运行调试器。因此,调试内核的常用方法是使用VMware。
注意: 需要修改被调试机器的开机启动项和其他设置,windows XP下修改C:\boot.ini文件,
Win7下因为没有C:\boot.ini文件,就需要其他方式修改。这里以win7为实验环境。
第一步先配置虚拟机,添加一个硬件串行端口
设置管道名称
配置系统调试模式
补充: 引导配置数据 (BCD) 文件提供用于描述启动应用程序和启动应用程序设置的存储。 存储中的对象和元素会替换 Boot.ini内容。
设置端口com1
bcdedit /dbgsettings serial baudrate:115200 debugport:1
复制一个开机选项,取名DebugEntry
bcdedit /copy {current} /d DebugEntry
增加一个开机引导项
bcdedit /displayorder {current} {上面生成的id}
激活debug
bcdedit /debug {上面生成的id} ON
重启进入调试引导
配置调试器
然后过几秒左右就能连上