WinDebug查看C#程序运行内存中的数据库连接字符串
- 作者: 五速梦信息网
- 时间: 2026年03月21日 04:38
> > > 真巧,昨天刷到了大佬“一线码农”的视频,大概就是讲的有人找他破解一个混淆加密的数据库连接字符串,然后大佬也提供了方案就是用WinDebug查看内存中的数据。这其实本质上就是一个用WinDebug查看对象字符串字段具体内容的需求,为啥要取这个标题?当然是骗人点进来啦 > 目录
准备工作(环境)
编写demo代码
程序启动后转储为dump文件
WinDebug分析DUMP文件
加载sos符号
寻找SqlConnection对象
查看实例细节
查看连接字符串
准备工作(环境)
.net 8
visual studio 2022
sql server (非必须)
编写demo代码
SqlConnection sqlConnection = new SqlConnection();
sqlConnection.ConnectionString = "server=127.0.0.1;database=****;uid=sa;pwd=123456;Pooling=true;TrustServerCertificate=True;";
try
{
sqlConnection.Open();
SqlCommand command = sqlConnection.CreateCommand();
command.Connection = sqlConnection;
command.CommandText = "SELECT * FROM FAB_OHT";
var reader = command.ExecuteReader();
while (reader.Read())
{
Console.WriteLine(reader["OHT_ID"].ToString());
}
}
finally
{
sqlConnection.Close();
}
Console.Read();
程序启动后转储为dump文件

WinDebug分析DUMP文件
在WinDebug中导入Dump文件
加载sos符号
.load C:\Users\bruce.qiu\.dotnet\sos\sos.dll
寻找SqlConnection对象
!dumpheap -type Microsoft.Data.SqlClient.SqlConnection
可以看到Microsoft.Data.SqlClient.SqlConnection的类型方法表对应的地址为 7ff995723580 ,然后看到上面的类型只有一个对应的方法表是这个,可以断定这个类型实例就是代码中的SqlConnection实例。
查看实例细节
实例的地址为 017ce380b030
!do 017ce380b030
找到对象实例的连接字符的对象地址。
查看连接字符串
!do 000001bd757e04c0
可以看到字符串的基本结构,除了方法表和对象头之外,包含了字符串长度,首字符。
可以看到字符串首字符的偏移为c,也就是0xC,大概就是该对象的第12位开始就是字符串的具体内容。
.printf "%mu", 000001bd757e04c0+0xC
这个命令就是从字符串的地址开始,取内容的偏移,
后面的+0xC就是移动了相应的偏移,偏移则是图中的offset.
至于为什么正好取到字符串长度而不越界,是因为调试器会根据字符串对象存储的长度来安全的截取长度。
相关文章
-
win10系统怎么做备份(win10家庭版系统备份)
win10系统怎么做备份(win10家庭版系统备份)
- 互联网
- 2026年03月21日
-
WePush 一款基于模拟点击实现的微信消息推送机器人,安全稳定不封号
WePush 一款基于模拟点击实现的微信消息推送机器人,安全稳定不封号
- 互联网
- 2026年03月21日
-
WechatMoments电脑版:轻松下载朋友圈视频和图片
WechatMoments电脑版:轻松下载朋友圈视频和图片
- 互联网
- 2026年03月21日
-
windows11 安装WSL2详细过程
windows11 安装WSL2详细过程
- 互联网
- 2026年03月21日
-
Windows操作系统安装经验总结
Windows操作系统安装经验总结
- 互联网
- 2026年03月21日
-
Windows快速安装MongoDB之Mongo实战
Windows快速安装MongoDB之Mongo实战
- 互联网
- 2026年03月21日





