本文为笔者从零基础学习系统安全相关内容的笔记,如果您对系统安全、逆向分析等内容感兴趣或者想要了解一些内容,欢迎关注。本系列文章将会随着笔者在未来三年的读研过程中持续更新。
前文链接
[系统安全] 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处设置断点![请添加图片描述 [系统安全] Windbg Preview调试记录_程序调试](https://file.cfanz.cn/uploads/png/2022/06/20/2/74e4109W46.png)
然后点击run之后就可以进行常规调试![请添加图片描述 [系统安全] Windbg Preview调试记录_系统安全_02](https://file.cfanz.cn/uploads/png/2022/06/20/2/K364W0J467.png)
内核模式程序调试
进行内核调试时,操作系统将被冻结,这种情况下不可能运行调试器。因此,调试内核的常用方法是使用VMware。
注意: 需要修改被调试机器的开机启动项和其他设置,windows XP下修改C:\boot.ini文件,
Win7下因为没有C:\boot.ini文件,就需要其他方式修改。这里以win7为实验环境。
第一步先配置虚拟机,添加一个硬件串行端口![请添加图片描述 [系统安全] Windbg Preview调试记录_程序调试_03](https://file.cfanz.cn/uploads/png/2022/06/20/2/Td94b3745Z.png)
设置管道名称![请添加图片描述 [系统安全] Windbg Preview调试记录_程序调试_04](https://file.cfanz.cn/uploads/png/2022/06/20/2/99531WJL83.png)
配置系统调试模式
补充: 引导配置数据 (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![请添加图片描述 [系统安全] Windbg Preview调试记录_程序调试_05](https://file.cfanz.cn/uploads/png/2022/06/20/2/dJFe23cENA.png)
重启进入调试引导![请添加图片描述 [系统安全] Windbg Preview调试记录_程序调试_06](https://file.cfanz.cn/uploads/png/2022/06/20/2/V10I22KS06.png)
配置调试器![请添加图片描述 [系统安全] Windbg Preview调试记录_安全_07](https://file.cfanz.cn/uploads/png/2022/06/20/2/93495b6630.png)
然后过几秒左右就能连上![请添加图片描述 [系统安全] Windbg Preview调试记录_安全_08](https://file.cfanz.cn/uploads/png/2022/06/20/2/8aMaR191V2.png)










