函数Load断点 记录

sxe ld:clrjit
g
.loadby sos ld:clrjit
!name2ee mscorlib.dll System.Reflection.Assembly.Load
bp 0x66be5d2c //断在load
bl
!clrstack!dumpstackobjectsd 02f606d4d eaxdd 02f606d4

函数nLoadImage断点 记录

打开一个.net程序(调用过Load的对象样本),或者用ps反射调用Load(测试用)

sxe ld:clrjit

加载指定名称的dll时,调试器中断

g

.loadby sos ld:clrjit

从加载clr.dll的目录加载SOS调试扩展

!name2ee mscorlib.dll System.Reflection.Assembly.Load

找Assembly.Load的MethodDesc

找到nLoadImage的函数表token

!Token2EE mscorlib.dll 06004326

检索nLoadImage方法的MethodDesc。第一个参数(mscorlib.dll)是实现nLoadImage方法的模块,十六进制数字是从PowerShell检索的元数据令牌。

!DumpMD 662833ec

然后,转储有关MethodDesc的信息。这将为实现nLoadImage的对象提供方法表的地址

!DumpMT -MD 66063f04



转储System.Reflection.RuntimeAssembly类的所有方法及其各自的本机入口点。nLoadImage具有以下条目:

665289d0 662833ec   NONE System.Reflection.RuntimeAssembly.nLoadImage(Byte[], Byte[], System.Security.Policy.Evidence, System.Threading.StackCrawlMark ByRef, Boolean, Boolean, System.Security.SecurityContextSource)

因此,nLoadImage的本机地址为0x665289d0 。现在,在该地址上设置一个断点,让程序继续执行并使用PowerShell在伪造的PE字节数组上调用Load方法。

其他

我调试的样本有调试检测,Windbg查看调用堆栈:kvn

定位到:

32位进程需要32位SOS。 32位SOS仅适用于32位WinDbg。

加载扩展

要加载扩展,有2个命令。一个是.loadby,另一个是.load。对于.loadby,请使用相对路径;对于.load,请使用完整路径。

对于.loadby,有5个选项:
.loadby sos mscorsvr
.loadby sos mscorwks
.loadby sos clr
.loadby sos coreclr
.loadby sos
其中mscorsvr确实很旧(.NET CLR 1,服务器版本),mscorwks确实很旧(.NET CLR 1和2,但仍然存在),clr是在当今很常见(.NET CLR 4),coreclr可能正在增加(UWP和Silverlight)

当尚未加载.NET运行时时,您正在尝试加载SOS。等待直到加载.NET,然后该命令将起作用。在初始断点处肯定是不可能的。

sxe ld clr
sxe ld mscorwks
sxe ld coreclr
g

让应用程序运行到.NET可用

sxe ld 命令

有些场景需要使用windbg调试某个dll模块,而这个模块加载时机不是很确定。

通常需要使用sxe ld <dll名称> 来设置一个模块加载异常。当被调试进程加载指定名称的dll时,调试器就会中断,后续就可以对该模块的设置一些符号断点了。

那么如何看到我设置的所有sxe断点呢? 在windbg的event filter中可以管理设置过的sx系列断点

利用powershell执行反射调用Load函数辅助调试

[Reflection.Assembly].GetMethod('Load', [Type[]] @([Byte[]] )) | Get-ILDisassembly

Get-ILDisassembly函数为PowerShellArsenal模块提供。显示IL指令

得到Load函数的token,通过token得到load地址,nLoadImage函数再Load函数中调用

set-ExecutionPolicy RemoteSigned
$Env:PSModulePath
Import-Module PowerShellArsenal
Get-Command -Module PowerShellArsenal
Powershell中显示省略号内容:
$FormatEnumerationLimit = -1

Windbg+sos调试.net笔记相关推荐

  1. windbg + sos 调试w3wp进程内存崩溃问题

    windbg + sos 调试w3wp进程内存崩溃问题 1.加载符合文件 C:\symbols;SRV*C:\symbols*http://msdl.microsoft.com/download/sy ...

  2. WinDbg实战调试命令笔记

    1.字符串查看 da esp-20   //显示ansi字符串 du esp-20   //显示ansi字符串 db esp-20 dd esp-20  dt SYSTEMTIME   //查看结构体 ...

  3. CLR探索系列:Windbg+SOS动态调试分析托管代码

    http://blog.csdn.net/garyye/article/details/4788070   在使用VS进行托管应用程序的调试的时候,有的时候总感觉有些力不从心.譬如查看一个托管堆或者计 ...

  4. 使用64位任务管理器转储的32位.NET进程dump,WinDbg如何调试

    如果是如题所述的Dump文件. 当使用WinDbg Preview调试时,输入命令!threads,提示如下: 0:000> !threads The version of SOS does n ...

  5. [系统安全] Windbg Preview调试记录

    本文为笔者从零基础学习系统安全相关内容的笔记,如果您对系统安全.逆向分析等内容感兴趣或者想要了解一些内容,欢迎关注.本系列文章将会随着笔者在未来三年的读研过程中持续更新. 前文链接 [系统安全] PE ...

  6. win7 x64 windbg 双机调试

    -------------------------------------------------------------- 转自http://yexin218.iteye.com/blog/5451 ...

  7. win7 x64驱动开发经验(三)windbg 双机调试配置 、问题及解决办法

    win7 x64驱动开发经验(三)windbg 双机调试配置 .问题及解决办法 http://www.cnblogs.com/witty/archive/2012/04/23/2466024.html ...

  8. Windbg双机调试环境配置(Windows7/Windows XP+VirtualBox/VMware+WDK7600)

    简介:Windbg双机调试内核.驱动 下载软件: 下载Windbg(GRMWDK_EN_7600_1.ISO) 下载VirtualBox 5.2/VMware 12 一.安装WDK,这里要提一点的是D ...

  9. 使用WinDbg内核调试

    WINDOWS调试工具很强大,但是学习使用它们并不容易.特别对于驱动开发者使用的WinDbg和KD这两个内核调试器(CDB和NTSD是用户态调试器). 本教程的目标是给予一个已经有其他调试工具使用经验 ...

最新文章

  1. oracle安装问题: 11g安装未填写hosts导致弹窗错误
  2. Window10下Ubuntu20.04子系统下安装cuda
  3. 史上超级详细:HashMap源码分析,你了解到源码的魅力了嘛
  4. 315 · Istio1.1 功能预告,真的假不了
  5. python中点的作用_一分钟了解Python中“*”的作用
  6. db2 删除schema中所有表_常用SQL系列之(六):删除方式、数据库、表及索引元信息查询等...
  7. ubuntu安装php-curl拓展
  8. ZOJ - 4122 Triangle City(最短路+欧拉通路+思维)
  9. Java获取登录用户IP地址
  10. 全国第一条5G步行街开街;罗永浩回应直播有多赚钱:没那么夸张;Windows Terminal 1.4发布|极客头条
  11. mysql查询语句ppt,mysql查询表中数据总条数的语句怎么写
  12. !!!常用CSS代码块
  13. B树和TreeSet与TreeMap
  14. Axure Mac汉化
  15. Windos10+VS2019+Qt5.14+Coin3D+SoQt
  16. c3p0数据库连接池配置总结
  17. 李宏毅机器学习-- RNN
  18. c/c++利用ghostscript API打印机pdf文件
  19. 数据分析在银行业应用之欺诈检测
  20. 利用matlab实现非线性拟合(三维、高维、参数方程)

热门文章

  1. 在线机房改造类项目建设难点的研究
  2. 机房做隔断为什么要用防火玻璃?
  3. 成功解决ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or
  4. CUMCM:05A长江水质综合评价与预测
  5. Paper之CV:《One Millisecond Face Alignment with an Ensemble of Regression Trees》的翻译与解读
  6. python3 邮件方式发送测试报告
  7. oracle-ORA-01555错误
  8. django jquery ajax 知识点
  9. uva 10047 the monocyle (四维bfs)
  10. jdbc连接sqlserver报错java.lang.ClassNotFoundException: com.microsoft.jdbc.sqlserver.SQLServerDriver...