绝顶技术:断点+内存映射组合的CLR超强BUG?
💡
原文中文,约5700字,阅读约需14分钟。
📝
内容提要
本文介绍了CLR虚拟机的一个BUG,通过断点和内存映射会导致内存赋值失败并引发异常。文章分析了问题的原因和解决方法,并通过代码验证。VS调试C#源代码时为什么不会报这个异常是一个疑问。
🎯
关键要点
- 文章介绍了CLR虚拟机的一个BUG,涉及断点和内存映射导致内存赋值失败。
- 问题描述:在特定地址下断点后,程序抛出异常,field1的值为0。
- field1的赋值通过Windows API的内存映射函数实现。
- 在Addr1处下断点会导致field1为空,进而引发异常。
- 如果在Addr1附近下断点,field1会变为0,导致异常。
- 在内存映射范围内下断点会干扰内存赋值。
- 通过代码验证了BUG的存在,确认断点和内存映射的关系。
- 该BUG可能是微软Windows内核的一个问题。
- VS调试C#源代码时未报异常,存在疑问。
➡️