栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > .Net

dnSpy反编译工具调试netcore项目

.Net 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

dnSpy反编译工具调试netcore项目

dnSpy使用步骤
  • 前言
  • 一、环境
  • 二、使用步骤
  • 三、解决问题


前言

dnSpy反编译工具读取dll文件内容并且在dnspy里面调试dll文件。
在说反编译工具之前,先说一下我为什么会用到反编译工具。
前因:这是一个后端管理网站,因为客户那面在正式网址里面出现,同一个值,两个页面取出来的值不一样。测试网址取出来的值是一致的,所以需要在客户正式服务器上进行排查问题。
思考:既然是取得同一个值,两个页面取出来的数据却不一样,很明显,其中一个页面的取值有问题。
解决:这就用到了dnSpy反编译工具,把正式服务器上发布的dll程序集进行反编译,并且调试反编译出来的代码。

其实很多刚接触net的可能对dll、反编译的概念比较模糊。这里稍微说下我的理解:在vs里面我使用汇编语言c#进行代码的编写,在我写好c#语言代码后,这时候在电脑上运行代码需要通过CLR(公共语音运行时,net里面的核心机制)把c#语言转换成电脑机器可以识别的语言,通过CRL转换之后你的c#代码就会变成一个个dll程序集(基本一个类库一个程序集),虽然这些dll程序集你看不懂,但是电脑机器可以读懂。这个dll文件你用其他软件是打不开的,就算打开也是一堆乱码,这样做也有好处,就是可以保护程序的安全性。但是你想看里面的一些东西也会看不到,那怎么办,我有时候没有源码,或者源码发生更改了,需要看dll里面的东西,这时候可以使用反编译工具(有很多工具这里使用的dnSpy)解析里面的内容,反编译工具的作用就是可以看到dll里面的源码。能看到源码如果还找不到问题点,那么就可以使用dnSpy进行dll源码调试。

一、环境

先附上dnSpy(6.1.8版本)网盘连接:
链接:https://pan.baidu.com/s/1EVB89FwXIPrjirEeCfr-Ow
提取码:4os2
调试项目为net5.0框架,发布到iis上之后,通过对发布文件里面dll(程序集)文件反编译,并且实现断点调试。

二、使用步骤

1:添加系统环境变量,COMPLUS_ZapDisable = 1
2:如果需要调试IIS进程,可进入C:WindowsSystem32inetsrv目录执行appcmd list wp 查看对应的应用程序池进程ID
3:打开dnspy,调试–>附加到进程–>选择相应的进程ID–>附加
4:调试–>窗口–>模块–>搜索要调试的程序集–>双击
5:在程序集资源管理器找到要调试的类打开,打断点即可

附上步骤图片:
添加环境变量

查看对应的应用程序池进程ID,其实如果进程里面只有一个w3wp.exe进程根本不需要进程ID进行区分,不过方法还是要写出来。
cd c:windowssystem32inetsrv
appcmd list wp

发现报错 message:WAS 服务不可用 - 请先尝试启动该服务。
解决办法:管理员方式运行 cmd(命令提示符)


打开dnspy,附加进程进行调试

这个时候就可以调试了,下面是我调试的时候遇到的几个问题。

三、解决问题

1:不能把dll文件直接拖到dnSpy里面,直接复制或者拖拽进来的dll无法命中断点。需要按照步骤:点【调试】-【附加到进程】-选择【w3wp.exe】进程,进程ID就是命令提示符里面获取到的那个(我这里是25560,每个不一样)。
选择完进程,在【模块】里面就可以看到当前进程下面的dll文件了,我需要调试web.dll,所以就双击web.dll就可以在右侧看到这个dll文件了。

2:按照上面的步骤进去发现附加到进程里面没有w3wp.exe进程,原因是没有使用管理员运行dnSpy工具。检查网站已经打开运行、使用管理员模式运行dnSpy,这两步做好进程就不会出现这个问题了。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/983305.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号