建立调试会话

  • 用户层调试会话的建立

    • 直接创建进程并调试

    • 附加到已经打开的进程

      • 侵入式附加:接管正在运行的进程,可以进行调试

      • 非侵入式附加:只能读取进程信息,不能接收目标进程的调试事件

通常情况下一个程序只能被一个调试器调试,如果一个程序正在被调试时而我们又想要去查看他的信息时就可以使用非侵入式附加的方式,实际不能调试,只能查看它的信息。

  • 内核层调试会话的建立

    • 使用物理机器调试虚拟机,建立双击调试环境

    • 使用类似用户层的非侵入式调试,仅仅查看内核中的信息,本地内核调试

必要条件:

  1. 需要以调试的模式启动windows操作系统

开启虚拟机按F8,出现以下界面,选择调试模式

  1. 需要以管理员的方式运行Windbg

  2. 操作系统与WinDbg版本需要对应

打开Windbg选择内核调试,本地确定,开始查看!

WindDbg界面概览

  1. 工具栏详解

2.  窗口选项

符号与源码

  • 符号文件

    • 概念:是在编译器编译可执行文件的时生成的一些文件,通常我们在windows平台遇到的符号文件叫做pdb文件,其中包括

      • 全局变量类型、名称、地址

      • 局部变量类型、名称、地址

      • 函数名称、原型、地址

      • 变量、结构体类型的定义

    • 符号文件对于程序的调试非常重要,无论源码调试和非源码调试

    • 设置方法一:

    

  • 方法二:设置一个环境变量 _NT_SYMBOL_PATH

  • 方法三:使用命令.sympath+

  • 设置完路径后加载符号

    • 使用命令 .reload刷新符号加载路径

    • 使用命令 ld + [模块名]来加载某一个模块的符号

    • 通过网络来获取符号文件

设置Symbol File (.pdb 文件)路径 SRVc:\mysymbol http://msdl.microsoft.com/download/symbols

srvd:\SymbolsLocalhttp://msdl.microsoft.com/download/symbols

调试的时候会从微软网站上下载符号,并存放在c:\mysymbol目录中

如果有其它符路径用分号隔开,如 ;c:\pdb

  • 源码调试

符号文件加载完成就可以进行源码调试

Windbg工作空间

  • 当前Windbg中的工作环境称之为工作空间

    • 当前的界面布局等调试器设置等信息

    • 调试项目有关的属性,参数以及调试器设置等信息

  • 默认工作空间

    • 基础工作空间

    • 默认内核态工作空间

    • 默认用户态工作空间

    • 默认转储文件工作空间

默认工作空间是以单个分析过程为区分的,例如当使用WinDbg分析一个应用程序时会根据可执行文件的路径和文件名为其建立一个默认的工作空间。

例如下面这个工作空间在保存之后,下次打开此程序的就会自动显示这个布局,别的程序就不可以使用这个工作空间

  • 命名工作空间

    • 在WinDbg中可以为工作空间命名,可以把满意的工作空间保存起来或者转储成文件,下次调试起来就非常的方便了。

    • 保存在WinDbg中

    • 保存在文件中,可以带到任何地方只需要调试程序时,打开,Open WorkSpace in File找到保存的文件,就可以使用自己以前保存的工作空间了

WinDag基础1的更多相关文章

  1. java基础集合经典训练题

    第一题:要求产生10个随机的字符串,每一个字符串互相不重复,每一个字符串中组成的字符(a-zA-Z0-9)也不相同,每个字符串长度为10; 分析:*1.看到这个题目,或许你脑海中会想到很多方法,比如判 ...

  2. node-webkit 环境搭建与基础demo

    首先去github上面下载(地址),具体更具自己的系统,我的是windows,这里只给出windows的做法 下载windows x64版本 下载之后解压,得到以下东西 为了方便,我们直接在这个目录中 ...

  3. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  4. Golang, 以17个简短代码片段,切底弄懂 channel 基础

    (原创出处为本博客:http://www.cnblogs.com/linguanh/) 前序: 因为打算自己搞个基于Golang的IM服务器,所以复习了下之前一直没怎么使用的协程.管道等高并发编程知识 ...

  5. [C#] C# 基础回顾 - 匿名方法

    C# 基础回顾 - 匿名方法 目录 简介 匿名方法的参数使用范围 委托示例 简介 在 C# 2.0 之前的版本中,我们创建委托的唯一形式 -- 命名方法. 而 C# 2.0 -- 引进了匿名方法,在 ...

  6. HTTPS 互联网世界的安全基础

    近一年公司在努力推进全站的 HTTPS 化,作为负责应用系统的我们,在配合这个趋势的过程中,顺便也就想去搞清楚 HTTP 后面的这个 S 到底是个什么含义?有什么作用?带来了哪些影响?毕竟以前也就只是 ...

  7. Swift与C#的基础语法比较

    背景: 这两天不小心看了一下Swift的基础语法,感觉既然看了,还是写一下笔记,留个痕迹~ 总体而言,感觉Swift是一种前后端多种语言混合的产物~~~ 做为一名.NET阵营人士,少少多多总喜欢通过对 ...

  8. .NetCore MVC中的路由(1)路由配置基础

    .NetCore MVC中的路由(1)路由配置基础 0x00 路由在MVC中起到的作用 前段时间一直忙于别的事情,终于搞定了继续学习.NetCore.这次学习的主题是MVC中的路由.路由是所有MVC框 ...

  9. .NET基础拾遗(5)多线程开发基础

    Index : (1)类型语法.内存管理和垃圾回收基础 (2)面向对象的实现和异常的处理基础 (3)字符串.集合与流 (4)委托.事件.反射与特性 (5)多线程开发基础 (6)ADO.NET与数据库开 ...

随机推荐

  1. 如何搭建基于Docker的gitlab服务器集成CI/CD实现DEVOPS(完整版)

    From this lesson you will learn about 1,How to install and configure a docker based gitlab server 2, ...

  2. java基础之缓存:session、cookie和cache的区别

    以前实现数据的缓存有很多种方法,有客户端的Cookie,有服务器端的Session和Application. 其中Cookie是保存在客户端的一组数据,主要用来保存用户名等个人信息. Session则 ...

  3. 序列标注(BiLSTM-CRF/Lattice LSTM)

    前言 在三大特征提取器中,我们已经接触了LSTM/CNN/Transormer三种特征提取器,这一节我们将介绍如何使用BiLSTM实现序列标注中的命名实体识别任务,以及Lattice-LSTM的模型原 ...

  4. mybatis执行过程及经典面试题

    Mybatis执行流程 mybatis中xml解析是通过SqlSessionFactoryBuilder.build()方法. 初始化mybatis(解析xml文件构建成Configuration对象 ...

  5. phpexcel来做表格导出(多个工作sheet)及设置单元格格式

    <?php /** * 简单实用Execl */ set_include_path('.'.get_include_path().PATH_SEPARATOR.dirname(__FILE__) ...

  6. Yii2.0怎么设置时区?

    在config文件夹下,main.php 中, return [ 'charset' => 'utf-8', 'language' => 'zh-CN', 'timeZone' => ...

  7. MOV与LEA

    MOV 格式:MOV dest, src 作用:赋值,且不改变标记位的值 特点:可以从寄存器到寄存器.从立即数到寄存器.从存储单元到寄存器.从立即数到储存单元.从寄存器到存储单元.从寄存器或存储单元到 ...

  8. Redis实现分布式文件夹锁

    缘起 最近做一个项目,类似某度云盘,另外附加定制功能,本人负责云盘相关功能实现,这个项目跟云盘不同的是,以项目为分配权限的单位,同一个项目及子目录所有有权限的用户可以同时操作所有文件,这样就很容易出现 ...

  9. 不就是SELECT COUNT语句吗,竟然能被面试官虐的体无完肤

    数据库查询相信很多人都不陌生,所有经常有人调侃程序员就是CRUD专员,这所谓的CRUD指的就是数据库的增删改查. 在数据库的增删改查操作中,使用最频繁的就是查询操作.而在所有查询操作中,统计数量操作更 ...

  10. Cobalt Strike之信息收集、木马钓鱼

    System Profiler使用 System Profiler 模块,搜集目标的各类机器信息(操作系统版本,浏览器版本等) Attacks->web drive-by->System ...