使用dnSpy修改EXE后运行无变化,DotPeek可见修改求解决
解决Desktop Goose修改后不生效的方案
- 确认dnSpy保存操作没翻车:改完IL后必须点
文件→保存模块,覆盖原EXE时留意有没有被杀毒软件拦截——很多杀软会把修改后的EXE当恶意文件偷偷还原,建议临时关掉实时防护再保存。 - 清掉.NET相关缓存:
- 删掉程序目录里的
obj、bin文件夹(有的话) - 开命令提示符跑
dotnet clean(如果是.NET Core/5+的程序),或者手动删C:\Users\[你的用户名]\AppData\Local\Temp里的.NET临时文件
- 删掉程序目录里的
- 确认改对了执行路径的代码:有些程序有多分支逻辑,比如Debug/Release判断、运行环境检测,你改的代码可能根本没被执行到。可以在dnSpy里给修改的地方加断点,跑程序看会不会触发,确认代码在执行流程里。
- 禁用.NET影子复制:Desktop Goose可能用了影子复制,运行时加载的是缓存副本不是你改的原文件。如果有
DesktopGoose.exe.config配置文件,加这段代码进去:
没有配置文件就新建一个同名的放程序目录里。<configuration> <runtime> <shadowCopyVerifyByTimestamp enabled="false"/> <disableShadowCopying enabled="true"/> </runtime> </configuration> - 重新验证修改后的EXE:用dnSpy再打开改好的EXE,确认修改的IL确实保存上了——有时候权限不够,看着保存成功但实际原文件没动。
- 换个方式替换程序集:直接改原EXE不行的话,在dnSpy里把修改后的程序集导出成新EXE,完全关掉Desktop Goose后替换原文件,确保原文件没被后台进程锁定。
内容的提问来源于stack exchange,提问作者Coder Guy
相关产品推荐
相关产品推荐

