Microsoft OLE 奇怪的操作...
Johnsons 2020-6-17原创 NOIP蒟蒻的//专栏

1 引言

大概在一小段时间以前,我在这样一个组卷网站下下载了份试卷:www.jyeoo.com。但是呢,下载下来之后,却发现所有的公式(它使用的是DesignScience的Mathtype),打开了都是这样:

image.png

双击公式:

image.png


我:?????

这...什么操作啊?

然而word文档里却显示的好好的哦?


2 探究原因

其实直到现在,我才发现,这只是使用了word文档的特殊结构而已。在Office2007开始,doc变成了docx。这里docx的x是指xml的意思。偶然,我用WinRAR打开了docx文件,可见就是一个zip文件:

image.png

现在我们打开word文件夹:

image.png

其中,document.xml是文档内容,而我们需要的打开是embeddings这个文件夹:

image.png

这里有一堆bin文件。我们看到这个3~4K左右大小的,这就是Mathtype的文件。这里还有另一个文件:

image.png

image.png

可见就一个3K左右的mathtype文件。由此确定,就是这些文件存储了Mathtype里面的数学式。

那么,为什么显示又是正常的呢?我们来说一下word的一个运行原理:word一般除非文件内容有变化,否则在像Mathtype这类OLE程序退出的时候,除了保存一个bin文件以供下次编辑,还会保存一个图片文件到docx文件中,下次打开如果只是查看,就不会使用那个bin文件,而是直接显示这个图片。那么这个图片在哪里呢?

image.png

打开word文件夹中的media,可见一个wmf(Windows Metafile,可以保存矢量图形)文件。这个文件就是保存出来的图片文件。那么我们只要这个文件不变,把bin文件替换掉,这样下次打开word的时候,就直接显示的是原来图片的内容,而双击打开的则是我们替换过的bin文件啊!!!!!这不就实现了吗?


3 实现

我们来试试看:

先创建一个word文档,打开mathtype插入一个公式,输入:你可修改不了这个公式哦!:

image.png

然后,关闭word之后,用WinRAR打开docx文件:

image.png

把里面这个bin复制出来:

image.png

粘贴进一个word文件,替换掉

替换之后word打开:

image.png

双击公式:

哈哈哈哈哈哈哈哈~~~~

image.png

然后...本文完。


附上修改之后的文件:

attachment icon Hello.docx 13.86KB DOCX 15次下载


来自:聊天生活广场 / 科创茶话
2020-6-17 13:18:47
1楼

那么,需要一个批量的工具来执行这个骚操作。。

评论(1)折叠评论
加载评论中,请稍候...
折叠评论
2020-6-17 14:31:26
2楼

其实用c#也很方便。

折叠评论
加载评论中,请稍候...
折叠评论

想参与大家的讨论?现在就 登录 或者 注册

Johnsons
进士 机友 笔友
文章
34
回复
216
学术分
0
2018/01/06注册,11 小时前活动

蒟蒻oier

%7B%22isDisplay%22%3Atrue%7D
插入资源
全部
图片
视频
音频
附件
全部
未使用
已使用
正在上传
空空如也~
上传中..{{f.progress}}%
处理中..
上传失败,点击重试
{{f.name}}
空空如也~
(视频){{r.oname}}
{{selectedResourcesId.indexOf(r.rid) + 1}}
插入表情
我的表情
共享表情
Emoji
上传
注意事项
最大尺寸100px,超过会被压缩。为保证效果,建议上传前自行处理。
建议上传自己DIY的表情,严禁上传侵权内容。
点击重试等待上传{{s.progress}}%处理中...已上传
空空如也~
草稿箱
加载中...
此处只插入正文,如果要使用草稿中的其余内容,请点击继续创作。
{{fromNow(d.toc)}}
{{getDraftInfo(d)}}
标题:{{d.t}}
内容:{{d.c}}
继续创作
删除插入插入
{{forum.displayName}}
{{forum.countThreads}}
篇文章,
{{forum.countPosts}}
条回复
{{forum.description || "暂无简介"}}
ID: {{user.uid}}
学术分隐藏
{{submitted?"":"投诉"}}
请选择违规类型:
{{reason.description}}
支持的图片格式:jpg, jpeg, png