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 29次下载


来自:科创广场 / 科创茶话
LED
8个月15天前
1楼

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

回复
评论(1)
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
大仙
8个月15天前
2楼

其实用c#也很方便。

回复
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论

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

所属专业
上级专业
同级专业
Johnsons
进士 机友 笔友
文章
39
回复
233
学术分
0
2018/01/06注册,12 天前活动

蒟蒻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
插入公式
分享回复:{{shareId}}
加载中...
加载中...
详情
详情
推送到专栏从专栏移除
设为匿名取消匿名
查看作者
回复
只看作者
加入收藏取消收藏
加入关注取消关注
折叠回复
置顶取消置顶
评学术分
鼓励
设为精选取消精选
建议修改
编辑
通过审核
退修或删除
历史版本
违规记录
投诉或举报
加入黑名单移除黑名单
查看IP
{{format('YYYY/MM/DD HH:mm:ss', toc)}}
下载资料
{{fileName}}
大小:{{size}}
下载当前附件将花费 {{costMessage}}
你当前剩余 {{holdMessage}}
{{fileName}}
大小:{{size}}
当前附件免费。
你已购买过此附件,下载当前附件不需要花费积分。
加载中...
{{errorInfo}}
附件已丢失
当前账号的附件下载数量限制如下:
时段 个数
{{f.startingTime}}点 - {{f.endTime}}点 {{f.fileCount}}