博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
搞死ILDASM
阅读量:6223 次
发布时间:2019-06-21

本文共 475 字,大约阅读时间需要 1 分钟。

复制下面的代码:

.assembly a {}

.module a.dll

.field static int32[-268435455...268435456] f_m268435455

保存为a.il。打开Visual Studio的命令行窗口,执行下面的命令,将这段代码编译为a.dll:

ilasm /dll a.il

然后执行下面的命令,尝试用ILDASM打开生成的dll文件:

ildasm a.dll

好了,ILDASM死了:

这是ILASM在处理下标为负数的数组时存在的问题,但也不排除ILDASM自己的问题。

今天先抛出这个问题,改天再撰文分析数组的元数据签名,以及ILASM在这方面的BUG。

注:

1. 上述程序可放心试验,只会影响ildasm.exe一个进程,不用怕机器整个挂掉。

2. 该程序针对.net 2.0~3.5,4.0没有试过,不知道改进了没有。

3. 经仔细思考后发现,这个故障并不仅因为下标为负数,还因为数组的长度过长;如果将上标268435456改小一些,就会发现ILDASM不死了,但得到的下标值是错误的。

转载地址:http://vnrja.baihongyu.com/

你可能感兴趣的文章
ogg概叙、架构、进程
查看>>
建造者模式的使用场景
查看>>
java基本类型
查看>>
iReport报表生成html,pdf,xls,word工具类
查看>>
转一篇关于部署的文章
查看>>
cvc-complex-type.2.4.c 如何解决
查看>>
如何优化VMWare虚拟机的运行速度(转)
查看>>
UVALive2362 POJ1004 HDU1064 ZOJ1048 Financial Management【数学计算】
查看>>
UITableView解析
查看>>
[sas]Missing Value
查看>>
每日一博 | 用 Ionic2 创建 App 启动页滑动欢迎界面
查看>>
Android自动在线升级
查看>>
windows 系统安装git的方法
查看>>
java多线程简单demo
查看>>
2.第一个MVC程序
查看>>
堆排序的Python实现
查看>>
第四回 基类中的修饰符,应该根据你对架构的理解去定义它们,没有绝对的
查看>>
跨域实现IFRAME自适应高度~续(终级)
查看>>
Flask-SQLAlchemy基本操作
查看>>
ASP.NET页面刷新的实现方法
查看>>