可以使用WinDbg将PE映像作为转储文件打开
WinDbg、ntsd、cdb、kd和其他任何使用DbgEng打开转储文件的工具都有一个鲜为人知的特性。
事实证明,使用DbgEng提供的任何功能,在任何可以打开转储文件(用户转储、内核转储等)的地方,都可以打开PE映像(.exe/.dll/.sys/etc),并让调试器将其视为只包含所选PE映像内容的转储。
这实际上是一个相对有用的特性。当您将PE映像作为转储文件打开时,调试器将其映射为映像,就好像它是作为可执行代码加载到内存中一样(尽管它实际上不运行任何代码,但只是将其映射为可执行文件而不是数据文件)。这将获得exe/dll/sys/other PE文件的内存表示形式,就好像您正在调试加载有问题图像的实时进程(或转储)。
与转储调试会话一样,这本质上是一个只读会话;您不能真正修改任何内容,因为没有要控制的目标。此外,也没有真正的寄存器上下文(或堆栈或堆),尽管初始化和零填充的全局变量以及属于该模块的可执行代码将在内存中。(在这种情况下,模块的首选映像库用于将请求的PE模块建立在为调试会话构造的虚拟地址空间中。)
加载完目标后,您可以执行通常对转储执行的大部分操作,只要检查符号并分解目标即可。如果您需要一个具有符号支持的反汇编程序,并且不能启动一个进程或什么不包含PE映像,那么这个特殊的技巧是一个功能更全面的反汇编程序的quick-n-dirty替换。
注意,在转储模式下打开PE映像的一个副作用是符号服务器用于检索二进制文件(这可能看起来有点奇怪,直到您考虑到对于转储文件,通常情况是您没有将整个二进制文件保存在内存中;只有足够的头信息从符号服务器检索二进制文件)。因此,在尝试此特殊技巧之前,请确保您的符号路径设置正确。
可以使用WinDbg将PE映像作为转储文件打开的更多相关文章
- 使用WinDBG调试查看C#内存转储文件
有时候我们想查看一个正在运行的程序内存中的数据,可以在任务管理器将内存状态保存为转储文件,并使用WinDBG验证,这里我们来试试: 0.安装WinDBG 1.首先写个代码用来测试 一个class pu ...
- 如何使用Microsoft的驱动程序验证程序解释无法分析的崩溃转储文件
这篇文章解释了如何使用驱动程序验证工具来分析崩溃转储文件. 使用Microsoft驱动程序验证工具 如果您曾经使用Windows的调试工具来分析崩溃转储,那么毫无疑问,您已经使用WinDbg打开了一个 ...
- 使用Dump转储文件排查线上环境服务未知问题
利用Dump转储文件获取正式环境程序堆栈状态 服务异常找不到原因时,我们通常通过重新启动服务来尝试解决问题,但是在决定重启之前,请不要立刻重启Windows服务或站点 重启服务会让当前案发现场的内存证 ...
- 使用 Eclipse Memory Analyzer 进行堆转储文件分析
Eclipse Memory Analyzer(MAT)是著名的跨平台集成开发环境 Eclipse Galileo 版本的 33 个组成项目中之一,它是一个功能丰富的 JAVA 堆转储文件分析工具,可 ...
- WinDbg抓取程序报错dump文件的方法
程序崩溃的两种主要现象: a. 程序在运行中的时候,突然弹出错误窗口,然后点错误窗口的确定时,程序直接关闭 例如: “应用程序错误” “C++错误之类的窗口” “程序无响应” “假死”等 此种崩溃特点 ...
- windows转储文件(dmp)
1. 何为转储文件 转储文件也就是我们常说的dump文件.可以把转储文件看成软件的某个时刻的一个快照.转储文件一般都是在软件出现问题时手动生成或者程序自动生成.下面我们介绍几种生成转储文件的 ...
- Java内存泄漏分析系列之六:JVM Heap Dump(堆转储文件)的生成和MAT的使用
原文地址:http://www.javatang.com JVM Heap Dump(堆转储文件)的生成 正如Thread Dump文件记录了当时JVM中线程运行的情况一样,Heap Dump记录了J ...
- mat 使用 分析 oom 使用 Eclipse Memory Analyzer 进行堆转储文件分析
概述 对于大型 JAVA 应用程序来说,再精细的测试也难以堵住所有的漏洞,即便我们在测试阶段进行了大量卓有成效的工作,很多问题还是会在生产环境下暴露出来,并且很难在测试环境中进行重现.JVM 能够记录 ...
- [Android Memory] 使用 Eclipse Memory Analyzer 进行堆转储文件分析
转载地址:http://www.ibm.com/developerworks/cn/opensource/os-cn-ecl-ma/index.html Eclipse Memory Analyzer ...
随机推荐
- Fiddler手机抓包不完全记录
准备工作: 1.必须确保安装fiddler的电脑和手机在同一个wifi环境下 备注:如果电脑是笔记本当然最好;如果电脑用的是台式机,可以安装一个随身wifi,来确保台式机和手机在同一wifi环境下 ...
- HDU校赛 | 2019 Multi-University Training Contest 2
2019 Multi-University Training Contest 2 http://acm.hdu.edu.cn/contests/contest_show.php?cid=849 100 ...
- mvc_1_ex_stu_manage
Mvc第一遍结束综合练习:带权限的学生管理系统程序的设计应该根据功能来进行.先来设想一下本练习的程序功能:学生信息管理.登录用户区分权限.出错应该给出提示.由此可以设想,完成以后的程序是下图的样子:主 ...
- Java自学-操作符 关系操作符
Java的关系操作符 关系操作符:比较两个变量之间的关系 > 大于 >= 大于或等于 < 小于 <= 小于或等于 == 是否相等 != 是否不等 示例: public clas ...
- 【方法论】5WHY分析法
一.概述 所谓“5WHY”分析法,又称“5问法”,就是连续反复使用5次“为什么”方式自问,以打破砂锅问到底方式寻找问题的根本原因的方法.“5WHY”不限定必须或只做5次为什么的提问,以找到问题根因为准 ...
- IntelliJ Cannot find declaration to goto----解决方案
系统中已经有了该类库,还是找不到类提示 close the project in intellij. close intellij. go to the project folder and dele ...
- elementUI一次请求上传多个文件
elementui <el-upload class="upload-demo" ac ...
- Django:RestFramework之-------权限
4.restframework-权限 4.1权限: 权限在单个视图应用. class MyPermission(object): """认证类""&q ...
- Vue学习之品牌案例部分代码小结(二)
品牌案例的增删查和其他部分效果: <!DOCTYPE html> <html lang="en"> <head> <meta charse ...
- Java 之 可变字符序列:字符串缓冲区(StringBuilder 与 StringBuffer)
一.字符串拼接问题 由于 String 类的对象内容不可改变,所以每当进行字符串拼接时,总是会在内存中创建一个新的对象. Demo: public class StringDemo { public ...