windbg调试符号win10下代理设置

0x00 前言

时间过得太快,本来还想再win7上再战几年后转win10用windbg,结果win7在2019年年底已经停止维护了。今年2月有停止了edge的维护。前几篇博文还停留在xp的漏洞阶段。最近开始捡起windows的漏洞调试技术,准备再战,结果win10下的windbg一致提示找不到符号,郁闷了。

win7 的符号配置可以参考之前的这篇windbg符号路径设置,当然基本内容是一样的

0x01 配置符号文件

在windbg的命令行中直接输入:

0:040> .sympath SRV*c:\localsymbols*https://msdl.microsoft.com/download/symbols
0:040> .reload

这里与之前不一样的是,微软官网已经启用https的服务了,所以url中不再是http而是https。

结果提示找不到符号文件,为啥呢?

需要开启打印日志看下

0x02 带日志的符号文件下载

在windbg的命令行中直接输入:

0:040> !sym noisy
0:040> .sympath SRV*c:\localsymbols*https://msdl.microsoft.com/download/symbols
0:040> .reload /f

看下报错日志

0:034> !sym noisy
noisy mode - symbol prompts on
0:034> .reload /f
Reloading current modules
.
SYMSRV:  BYINDEX: 0x2
         c:\localsymbols*https://msdl.microsoft.com/download/symbols
         iexplore.pdb
         8AA5D5C87EC4C09B7AAD89E8BC3AB2181
SYMSRV:  UNC: c:\localsymbols\iexplore.pdb\8AA5D5C87EC4C09B7AAD89E8BC3AB2181\iexplore.pdb - path not found
SYMSRV:  UNC: c:\localsymbols\iexplore.pdb\8AA5D5C87EC4C09B7AAD89E8BC3AB2181\iexplore.pd_ - path not found
SYMSRV:  UNC: c:\localsymbols\iexplore.pdb\8AA5D5C87EC4C09B7AAD89E8BC3AB2181\file.ptr - path not found
SYMSRV:  HTTPGET: /download/symbols/iexplore.pdb/8AA5D5C87EC4C09B7AAD89E8BC3AB2181/iexplore.pdb
SYMSRV:  HttpSendRequest: 800C2EFD - ERROR_INTERNET_CANNOT_CONNECT
SYMSRV:  RESULT: 0x800C2EFD
DBGHELP: C:\Program Files\Internet Explorer\iexplore.pdb - file not found
DBGHELP: iexplore.pdb - file not found
DBGHELP: iexplore - no symbols loaded
.

划重点

SYMSRV: HttpSendRequest: 800C2EFD - ERROR_INTERNET_CANNOT_CONNECT
这里提示http请求错误,LZ抓了个包看了看,麻蛋,已经建立https连接了,但是没几个交易就被reset了。
在这里插入图片描述
有种不祥的预感。

google了一下,有用的信息基本都是中文结果,英文检索几乎没有提过这个问题。这暗示着只有国内的民工才会遇到。。翻了翻帖子,印证了长城在年初阻挡了这个服务。

0x03 配置代理

在环境变量中设置符号下载代理
变量名为:_NT_SYMBOL_PROXY
变量值为:127.0.0.1:8080
在这里插入图片描述
重新启动windbg,再来一发就可以下载了。
在这里插入图片描述

然而,事情总没有想象的顺利,经过LZ亲测socks5的代理无法下载符号文件。如果你的是socks代理,可以用脚本下载,具体参见下一小节。

0x04 写脚本手动下载pdb文件

脚本run.py源码

#!/usr/bin/env python
import requests
from urllib.parse import urljoin
import os
import logging
LOG_LEVEL = logging.DEBUG
def download_file_by_curl(url, outdir, filename):
    newpath =  os.path.join('./downloads/',os.path.dirname(outdir))
    logging.info(newpath)
    os.system('mkdir -p %s;'%newpath)
    os.system('cd %s;curl -OL %s'%(newpath,url))
def main():
    filename = "windbg.log"
    outdir = './downloads/'
    main_url = 'https://msdl.microsoft.com/'
    with open(filename, 'r') as fp:
        content = fp.readlines()
        for rline in content:
            line = rline.strip()
            if line.startswith('SYMSRV:  HTTPGET:'):
                m = line.split(': ')
                url =urljoin(main_url, m[2])
                pdb_name = m[2][len('/download/symbols/'):]
                logging.info("{} {}".format(url, pdb_name))
                download_file_by_curl(url, pdb_name, filename)
if __name__ == '__main__':
    logging.basicConfig(format='%(asctime)s\tFile \"%(filename)s\",line %(lineno)s\t%(levelname)s: %(message)s', level=LOG_LEVEL)
    main()

使用说明

  1. 把windbg的报错日志保存为windbg.log
  2. mkdir downloads
  3. python3 run.py
  4. 把downloads下的文件转移到win10下的符号目录即可

展示下战果
在这里插入图片描述

0x05 参考文献

https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/index
https://programlife.net/2020/02/23/windows-debugging-symbols-proxy-rules/
https://bbs.pediy.com/thread-256863.htm

  • 7
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值