tnblog
首页
视频
资源
登录

Windbg 从dump提取C#代码

8392人阅读 2022/9/2 11:41 总访问:3661383 评论:0 收藏:0 手机
分类: windbg

Windbg 从dump提取C#代码

抓dump包


首先我们的应用在服务器上出现问题时,我们可以通过procdump或者procexp提取文件。
这里我就使用procdump来抓取了。
首先以管理员的方式打开Powershell。
(关于安装请点击这里)


创建Inglass.PackagingMediaRepository.UploadJob进程的Dump到D盘下。

  1. procdump -ma Inglass.PackagingMediaRepository.UploadJob -i D:\


更多关于procdump的参数请访问这里

提取dump中的C#代码


首先打开Windbg,使用lm命令来获得image的base address.


然后我们通过SaveModule提取于此项目相关的代码。

  1. !SaveModule 00db0000 D:\out.tmp


生成的out.tmp文件,我们通过ILSpy工具进行反汇编一下,但是只发现了几个文件的代码,并没有找到其他包的代码。


这时我们需要通过AppDomain来提取了。

AppDomain提取C#代码


我们知道 CLR 中 Assembly 是在名为 AppDomain 的逻辑空间中被载入运行的,而 AppDomain 是介于操作系统层面进程和线程概念之间,同时具有线程的轻便和进程的封闭性,使用者可以通过 AppDomain.CreateDomain 传见新的 AppDomain。
我们可以通过EEHeap命令,通过列出 CLR 执行引擎的堆信息,获取当前运行的 AppDomain 情况。

  1. !EEHeap


我们可以看到CLR已经有了三个AppDomain:System Domain, Shared DomainDomain 1
然后我们通过如下命令来查看这三个域中有哪些引用的dll。

  1. !DumpDomain /d 731875a8
  2. !DumpDomain /d 73187258
  3. !DumpDomain /d 0130aa50


我们慢慢滚动,发现想要的包在Domain1下面,并且地址为01115f40.


接着我们通过SaveModule导出该dll的c#代码到D盘的out2.tmp文件中,并再次用ILSpy查看就有了。

  1. !SaveModule 01115f40 D:\out2.tmp


欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739

评价

<font Color='#ff5555'>Windbg 解决 No symbols for ntdll. Cannot Continue.

Windbg 解决 No symbols for ntdll. Cannot continue.[TOC] 问题起因当我通过!address -summary命令查看CPU地址空间时。出...

<font Color='#ff5555'>Windbg 无法开启内核态模式

Windbg 无法开启内核态模式[TOC] 问题起因当我们要查看内核态模式时,我们发现无法进行内核态模式。 解决方法以管理员的...

安装 <font Color='#ff5555'>Windbg 简单运用

安装 Windbg 简单运用[TOC] 软件安装列表1.Visual Studio 2022: 安装 .NET Framework 4.8, .NET 6.0.5 ,支持 C++ 模板2....

.Net <font Color='#ff5555'>Windbg 与汇编基础(学习笔记)

.Net Windbg 与汇编基础(学习笔记)[TOC] 为什么要学习汇编?有时候再Debug下可以运行的逻辑,但在Release下却无法实现。举...

Windows下Redis的主<font Color='#ff5555'>从复制

Redis拥有非常强大的主从复制功能,而且还支持一个master可以拥有多个slave,而一个slave又可以拥有多个slave,从而形成强...

redis中主<font Color='#ff5555'>从、哨兵和集群这三个有什么区别

主从模式:备份数据、负载均衡,一个Master可以有多个Slaves。sentinel(哨兵)发现master挂了后,就会从slave中重新选举一个...

MySQL主<font Color='#ff5555'>从复制+读写分离

使用Mysql读写分离和主从复制的原因:*单台MySQL服务器的安全性,高可用性,高并发都是不满足实际的生产需要。介绍:1.MySQ...

修改了Css后,让浏览器<font Color='#ff5555'>从缓存中更新

当我们修改了css后,如果不做一些操作,浏览器是不会自动更新我们的样式文件的。除非是过期或者用户手动刷新清理缓存等。所...

检测到包降级: Newtonsoft.Json <font Color='#ff5555'>从 12.0.2 降级到 12.0.1。直接Color='#ff5555'>从项目引用包以选择不同版本

这是因为添加了不同版本的引用造成的,net core中即使在不同的类库中添加了不同版本的引用也要报这个错解决办法也很简单,...

<font Color='#ff5555'>从博客文章的路由来看一点处理查询的方法

例如我们来看看一篇文章的路由www.tnblog.net/aojiancc2/article/details/2670这里的aojiancc2是用户名,后面的2670是id其...

iis 文件下载 防止直接<font Color='#ff5555'>从地址输入访问文件

我们限制iis可以访问的文件后缀,在webconfig中system.webServer节点配置一下即可&lt;security&gt; &lt;requestFiltering&...

Redis的主<font Color='#ff5555'>从关系配置

今天我们来讲一下Redis缓存数据库的分布式配置,能做到有关系的服务器数据一致,数据同步很快。首先我们解压三份Redis压缩...

Redis-类型与配置-主<font Color='#ff5555'>从

今天我们讲一下 Redis 主从复制首先我们要解压几个Redis 文件出来,然后更改他的conf配置文件主节点的IP我们就默认让他是63...

金融转行项目要如何选择?金融人该何去何<font Color='#ff5555'>从?带货达人

金融跨行难吗?威,w56789at 不难,除非是那种对专业能力要求非常高的行业(比如研究生、博士北京要求的相关研究行业,其他...
这一世以无限游戏为使命!
排名
2
文章
657
粉丝
44
评论
93
docker中Sware集群与service
尘叶心繁 : 想学呀!我教你呀
一个bug让程序员走上法庭 索赔金额达400亿日元
叼着奶瓶逛酒吧 : 所以说做程序员也要懂点法律知识
.net core 塑形资源
剑轩 : 收藏收藏
映射AutoMapper
剑轩 : 好是好,这个对效率影响大不大哇,效率高不高
ASP.NET Core 服务注册生命周期
剑轩 : http://www.tnblog.net/aojiancc2/article/details/167
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术