dnSpy反编译工具调试netcore项目


一、环境

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

二、使用步骤

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

附上步骤图片:
添加环境变量
在这里插入图片描述
查看对应的应用程序池进程ID,其实如果进程里面只有一个w3wp.exe进程根本不需要进程ID进行区分,不过方法还是要写出来。
cd c:\windows\system32\inetsrv
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,这两步做好进程就不会出现这个问题了。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_37213281/article/details/120058386