Windbg+sos调试.net笔记
函数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笔记相关推荐
- windbg + sos 调试w3wp进程内存崩溃问题
windbg + sos 调试w3wp进程内存崩溃问题 1.加载符合文件 C:\symbols;SRV*C:\symbols*http://msdl.microsoft.com/download/sy ...
- WinDbg实战调试命令笔记
1.字符串查看 da esp-20 //显示ansi字符串 du esp-20 //显示ansi字符串 db esp-20 dd esp-20 dt SYSTEMTIME //查看结构体 ...
- CLR探索系列:Windbg+SOS动态调试分析托管代码
http://blog.csdn.net/garyye/article/details/4788070 在使用VS进行托管应用程序的调试的时候,有的时候总感觉有些力不从心.譬如查看一个托管堆或者计 ...
- 使用64位任务管理器转储的32位.NET进程dump,WinDbg如何调试
如果是如题所述的Dump文件. 当使用WinDbg Preview调试时,输入命令!threads,提示如下: 0:000> !threads The version of SOS does n ...
- [系统安全] Windbg Preview调试记录
本文为笔者从零基础学习系统安全相关内容的笔记,如果您对系统安全.逆向分析等内容感兴趣或者想要了解一些内容,欢迎关注.本系列文章将会随着笔者在未来三年的读研过程中持续更新. 前文链接 [系统安全] PE ...
- win7 x64 windbg 双机调试
-------------------------------------------------------------- 转自http://yexin218.iteye.com/blog/5451 ...
- win7 x64驱动开发经验(三)windbg 双机调试配置 、问题及解决办法
win7 x64驱动开发经验(三)windbg 双机调试配置 .问题及解决办法 http://www.cnblogs.com/witty/archive/2012/04/23/2466024.html ...
- Windbg双机调试环境配置(Windows7/Windows XP+VirtualBox/VMware+WDK7600)
简介:Windbg双机调试内核.驱动 下载软件: 下载Windbg(GRMWDK_EN_7600_1.ISO) 下载VirtualBox 5.2/VMware 12 一.安装WDK,这里要提一点的是D ...
- 使用WinDbg内核调试
WINDOWS调试工具很强大,但是学习使用它们并不容易.特别对于驱动开发者使用的WinDbg和KD这两个内核调试器(CDB和NTSD是用户态调试器). 本教程的目标是给予一个已经有其他调试工具使用经验 ...
最新文章
- oracle安装问题: 11g安装未填写hosts导致弹窗错误
- Window10下Ubuntu20.04子系统下安装cuda
- 史上超级详细:HashMap源码分析,你了解到源码的魅力了嘛
- 315 · Istio1.1 功能预告,真的假不了
- python中点的作用_一分钟了解Python中“*”的作用
- db2 删除schema中所有表_常用SQL系列之(六):删除方式、数据库、表及索引元信息查询等...
- ubuntu安装php-curl拓展
- ZOJ - 4122 Triangle City(最短路+欧拉通路+思维)
- Java获取登录用户IP地址
- 全国第一条5G步行街开街;罗永浩回应直播有多赚钱:没那么夸张;Windows Terminal 1.4发布|极客头条
- mysql查询语句ppt,mysql查询表中数据总条数的语句怎么写
- !!!常用CSS代码块
- B树和TreeSet与TreeMap
- Axure Mac汉化
- Windos10+VS2019+Qt5.14+Coin3D+SoQt
- c3p0数据库连接池配置总结
- 李宏毅机器学习-- RNN
- c/c++利用ghostscript API打印机pdf文件
- 数据分析在银行业应用之欺诈检测
- 利用matlab实现非线性拟合(三维、高维、参数方程)
热门文章
- 在线机房改造类项目建设难点的研究
- 机房做隔断为什么要用防火玻璃?
- 成功解决ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or
- CUMCM:05A长江水质综合评价与预测
- Paper之CV:《One Millisecond Face Alignment with an Ensemble of Regression Trees》的翻译与解读
- python3 邮件方式发送测试报告
- oracle-ORA-01555错误
- django jquery ajax 知识点
- uva 10047 the monocyle (四维bfs)
- jdbc连接sqlserver报错java.lang.ClassNotFoundException: com.microsoft.jdbc.sqlserver.SQLServerDriver...