日志日期 · 周日
ILSpy 11.0 Preview 1:跨平台界面、新语法支持与解析器加固
ILSpy 11.0 预览版移植到 Avalonia、支持更多新语法,并加固了对畸形输入的解析。
当天发生了什么
2026-07-19 14:18(UTC),ILSpy 在 GitHub 发布 11.0 Preview 1。发布说明显示:界面移植到 Avalonia 12 并移除了 WPF 界面,CI 开始在 Linux 和 macOS 上构建、测试和打包,运行需要 .NET 10;macOS 版应用未签名也未公证。反编译方面,新增对 dynamic 上的 await、内联数组上的 foreach 的处理,并且无需单独的 C# 15 设置即可反编译 runtime async。另有多项针对构造输入的加固,涉及 Xamarin 压缩文件头、WebCil 段访问、BAML 读取器、.rsrc 资源树和单文件 bundle 签名位置。发布页还提醒,项目并不拥有 ilspy.org 域名,应只从 GitHub Releases 下载。
对 .NET 应用保护的含义
这份说明对 .NET 开发者有三点提示。其一,反编译器跟进新语言特性的速度很快,「用了新语法所以难以还原」不是可靠假设。其二,Xamarin 压缩程序集、WebCil 和单文件 bundle 等打包格式都在主流反编译器的处理范围内,打包方式改变的是文件形态,并不等于加密。其三,针对畸形输入的加固意味着依赖「让分析工具崩溃」的手段会随版本失效,而且这类手段可能影响自身的兼容性与可维护性。较稳妥的做法是假设 IL 层面可被阅读,把真正需要保护的逻辑放到服务端或经过评估的原生实现中。
可以做的检查
第一,用你团队实际使用的反编译工具查看自己发布的程序集与资源(包括 BAML、Avalonia 资源和嵌入文件),确认其中没有连接字符串、许可证校验密钥或内部接口。第二,若使用了单文件发布、裁剪或 Native AOT,在每次 .NET 或工具链升级后重新确认最终产物里实际包含了哪些托管代码与元数据。第三,团队内部使用的分析工具也属于供应链,只从官方发布页获取并核对来源;对外描述保护效果时,避免使用「无法反编译」这类表述。
行动清单
- 用常用反编译器检查自家程序集与资源中的敏感数据
- 每次 .NET 升级后复核单文件/裁剪/AOT 产物的实际内容
- 内部分析工具只从官方发布页获取
原始资料
- GitHub: icsharpcode/ILSpy release ILSpy 11.0 Preview 1 · 资料日期 2026-07-19 · 核对于 2026-10-12