微软开源了操作系统,注释中藏着一个大秘密!

深入解析Windows中EXE可执行文件的运行原理与生命周期 简单来说,就是把文件的一部分“挂”到虚拟地址空间上,形成一个“视图”(View)。当你访问这个地址时,CPU触发缺页异常,操作系统才真正从磁盘读取对应页面。这就叫按需分页(Demand Paging),也叫懒加载(Lazy Loading)。一切准备就绪,加载器最后一项任务就是:跳转到 AddressOfEntryPoint!但这不是直接跳到main,而是先进入CRT启动代码:// 初始化堆_ioinit();// 初始化stdio。 阅读详情

前些天,微软开源了DOS4.0,这其实算不上什么大新闻,因为:

1. 这是个非常古老的,没人用的操作系统;

2. 这不是DOS第一次开源了,1.25版,2.0版在6年前已经开源了

8392017a11a3ba4631a48256c9f32694.png

有意思的是,网友发现,开源以后,一个叫做mzbik的人心急火燎地修改了其中一行代码的注释:

b52e02306db15f1859217ca60cb0463e.png

627f3d1d70995f699afb2822aef8ec07.png

这个注释的意思是:“脑子有问题的Tim Patterson......”

mzbik把Tim Patterson改成了缩写TP,其他保持不变。

这就有意思了。

Tim Patterson是谁?为啥脑子有问题?

mzbik又是谁?他为啥要这么做?

1

上世纪七十年代末,八十年代初,正是个人电脑开始爆发的前夜。

美国华盛顿州的西雅图,有个叫西雅图计算机产品(简称SCP)公司决定采用Intel的8086来组装个人电脑,但是却没有合适的操作系统可用。

于是公司的蒂姆·帕特森 (Tim Paterson)写了一个操作系统,名称叫做QDOS,意思是Quick and Dirty Disk Operating System,Quick and Dirty,这名称,公司竟然叫得出口。

70ef2d68778c677adfba0faa108c960e.png

QDOS是仿照流行的PC操作系统CP/M编写的,二者非常相似,这样CP/M上的软件就可以轻松移植到QDOS。

1980年7月,0.1版本完成。

28cd709f1a840f24c31ef87a016703bd.png

如果QDOS就这样发展下去的话,应该也不会差。

但是它的命运却被微软和盖茨彻底改变了。

a795fa5fcbc3e3d971f46efae0373403.jpeg

1981年,盖茨抓住了一个千载难逢的机会:为蓝色巨人IBM的PC提供操作系统。

这时候的盖茨绝对是空手套白狼,他连操作系统都没有,就敢和IBM签合同。

微软和同在西雅图的SCP公司之前有业务往来,这时候盖茨就发现了QDOS,他非常果断,立刻用5万美元买断QDOS,并且把作者蒂姆·帕特森也挖了过来,让他把QDOS移植到配有8088 CPU的IBM PC上。

当然,不能叫QDOS这么难听的名字了,新名字叫MS-DOS。

ca21997cb62aaf56d592775f669297a0.png

商业天才盖茨认为将来肯定有其他厂商去模仿IBM PC,一定会用他的MS-DOS, 所以坚决禁止IBM买断DOS,一定要保留权利将MS-DOS授权给其他计算机厂商。

这可能是微软历史上最有影响力的决定,盖茨抓住了个人电脑爆发的风口。

随后,在每一台PC兼容机上,MS-DOS几乎是唯一的操作系统,微软帝国成型了。

MS-DOS的作者Tim Paterson自然功不可没,不过Tim有点不“安分”,曾经三进宫微软,第一次是1981年5月到1982年四月,开发出第一版的MS-DOS后就离开创业了。

他离开后,Mark Zbikowski成为DOS的开发主管,接手了DOS的开发工作,从DOS2.0一直干到DOS4.0。

74d88bd0a7ae6929b5c3368b5b01e9f4.png

Mark Zbikowski在微软也是一个传奇程序员,他给DOS贡献了分层目录结构,和可安装设备驱动(后来成了即插即用),后来参与了Windows NT的开发,是文件系统架构师和开发经理。

就像PK把自己的名字雕刻在Zip文件格式中一样,Mark Zbikowski 也把自己的名字刻在了DOS可执行文件里,这种文件的Magic Number是:4D 5A ,即MZ。

a495eae54fb2325fd94622f869f3db7a.png

Mark Zbikowski 是“从一而终”的典范, 这位哈佛的高材生被鲍尔默招募后,一口气在微软工作了25年,成为继比尔·盖茨和史蒂夫·鲍尔默之后,第三位达成这个成就的人。

2

眼尖的同学可能已经发现,Mark Zbikowski 就是GitHub上的mzbik !

很明显,mzbik对40多年前的这条注释印象极为深刻,弄不好就是他自己写的 :-)

所以DOS4.0一开源,他立刻就想起了这件事,心急火燎地把它改掉了。

9a75b070d88b0c145f843f25313608cf.png

如果不是有个叫OwnedByWuigi用户手快,fork了最早发布的DOS4.0代码仓库,我们可能永远都不知道有这回事儿。

https://github.com/OwnedByWuigi/DOS/blob/ffd70f8b4fb77e2e6affbf1fad2fd8c349f0369f/v4.0/src/DOS/STRIN.ASM#L70 

程序员经常在代码注释中看到脏话,比如:

d18c83272f413eea0a2ff634bad54636.png

之前我还写过一篇文章《脏话越多,代码越好》

但这些脏话一般是骂代码烂,不会骂人,在DOS源码中这么指名道姓地骂Tim Patterson,说人家脑子有问题就太过分了。

Mark Zbikowski 也是,把Tim Patterson改成TP,这不是欲盖弥彰,更加引发大家的好奇吗?难道Mark就是为了吸引大家的注意力?

Tim Patterson被骂的原因,恐怕只有当事人才能说清楚了。

3

微软开源了DOS,但它们是最不重要的几个版本,最流行的3.x、5.x、6.x版本却没有开源。

另外,国外网友Bryan Lunduke(前微软员工)特别指出,微软这次开源DOS4.0,很多科技媒体争相报道,但是它其实根本无法编译!你根本无法构建一个可以工作的MS-DOS 4.0。

这样的开源相当于把自家不用的,破旧的老古董拿出来晒了晒,这样的开源又有什么意义上呢?

22b39a98a3467c3a1522ec64a1613faa.png

微软号称拥抱了开源,拥抱了Linux,自家也确实有不少产品开源,最著名的就是VS Code,但是在自家操作系统的开源上,它是非常保守的。

de2eaf1ae7b375346db08d53ad4cd7c0.png

我的新书《码农翻身2》近期正式出版,这本书开启了5折优惠,全彩印刷,用故事给技术加点料,原价118元,现在仅需59元。

《码农翻身》1和2 是我一二十年经验的总结,现在只要花几十块就可以买到一二十年积累的精华,很划算啊!2fb94692d02931fc743a3efb2f997d9c.png

这本书有两大特色:

1. 用故事讲解技术,好玩有趣

从封面的两幅漫画就能看出来,一幅是Java派人到Python王国进行渗透,被抓起来了。一幅是一队JavaScript士兵,张牙舞爪地对后端王国进攻。

书中每一篇都是一个独立的小故事,读起来毫无负担,可以放在床头,当做睡前故事,不知不觉间就把技术给掌握了。

2. 直击最重要的技术本质,酣畅淋漓。

不用担心被软件的琐碎细节给绊住,每一个故事都会给主人公设置难题,不断地挑战他,等他解决一个,就再设置一个,这样一层层剥下去,最后就把软件的本质给暴露出来。

读完以后让你有种“原来如此”的快感,非常过瘾。

如果没有看过码农翻身1的话,强烈建议半价入手1+2套装,都是半价!

HA.PEiD及其他查看壳工具深度解析 本文还有配套的精品资源,点击获取 简介:查看壳工具是用于检测和分析程序是否加壳的工具,有助于保护软件免遭反编译或逆向工程。HA.PEiD作为一款辅助IDA的工具,能够快速检查PE文件外壳,分析程序结构,发现加壳保护。173软件网站提供的资源包括各种查看壳工具下载信息和绿色软件下载链接,便于用户获取和使用相关工具。学习和应用这些工具能提高软件安全性评估和分析能力。 ... 阅读详情

相关推荐

《码农翻身》第二章 Java帝国.emmx

你最爱的Java 搞懂了这几点,你就学会了Web编程 Spring本质系列(1) -- 依赖注入 Spring本质系列(2) -- AOP 三层架构和MVC那点事儿 Java帝国之拨云见日识回调 小张的Duck Typing JDBC的诞生 JDBC后传 一个不安分的JDBC驱动 Java帝国之 Java Bean(上) Java帝国之 Java Bean(下) Java帝国之 函数式编程(上) Java帝国之 函数式编程 (下) 关于Java初学者需要知道的10件事 Junit你不知道的那些事儿 Java EE的历史 Java EE读书指南 给小白的Java

万众期待,催更5年,《码农翻身2》强势来袭!!!

再比如,对于“编程语言的巅峰”这一节,如果你对基本的数组、条件分支、函数都不了解,就无法领略汇编语言的厉害之处。现在《码农翻身2》终于来了,之所以拖了这么长的时间,主要是因为中间“插播”了另外一本书——《半小时漫画计算机》,该书使用纯漫画的方式来讲解计算机基础知识,这对我来说是一个全新的尝试,花费了我不少的时间和精力。所以,我在写文章的时候也有意把枯燥乏味的技术包装一下,变成好玩有趣的故事,在故事中让主人公不断遇到问题,不断制造悬念,吸引大家看下去,不知不觉就把技术掌握了。

博文视点(北京)官方博客 1942

2022李宏毅作业hw1—新冠阳性人员数量预测。

从非常基础的内容开始,主要是我的水平也很基础。

YI_SHU_JIA的博客 1万+

2.2 PE结构:文件头详细解析

PE结构是`Windows`系统下最常用的可执行文件格式,理解PE文件格式不仅可以理解操作系统的加载流程,还可以更好的理解操作系统对进程和内存相关的管理知识,DOS头是PE文件开头的一个固定长度的结构体,这个结构体的大小为64字节(0x40)。DOS头包含了很多有用的信息,该信息可以让Windows操作系统使用正确的方式加载可执行文件。从DOS文件头`IMAGE_DOS_HEADER`的`e_lfanew`字段向下偏移`003CH`的位置,就是真正的PE文件头的位置,该文件头是由`IMAGE_NT_HEAD

微软技术分享 1万+

2025年度工业级3D全景相机技术解析选型参考:国产品牌的技术突围与市场格局

本文分析了工业级3D相机在智慧城市和建筑数字化中的应用。通过对比国内外主流设备的技术参数和应用场景,发现国产品牌如众趣科技在性价比和本地化服务方面具有优势,尤其适合大型空间扫描项目;而国际品牌如Faro、Leica则在精度和可靠性上保持领先。建议根据项目需求(如测距范围、精度要求、预算)进行设备选型,综合考虑扫描效率、数据处理能力和系统兼容性。国产品牌已在国内大型基建项目中展现出竞争力,国际品牌则更适合高精度逆向工程和国际化项目。

gxdtgsy的博客 1073

Appsflyer Web2App实战指南:OneLink与Web SDK深度对比

本文深入对比了Appsflyer实现Web2App的两大核心工具:OneLink智能链接与Web SDK。OneLink提供开箱即用的智能跳转,部署快捷,适合快速推广;Web SDK则支持高度自定义的用户行为追踪,适合深度分析与精细化运营。文章提供了详细的配置指南、场景化选型建议及实战避坑技巧,帮助营销与开发团队根据自身需求选择最佳方案,有效提升从网页到应用的转化率与归因精度。

weixin_29213655的博客 458

PE文件头两个字节MZ的含义

PE文件有一个共同特点:前两个字节为4D 5A(MZ)。 幻数(魔数)是一些文件格式规范所要求的特殊标签值,它表示文件符合这种规范。有时候,人们在选择幻数时加入了幽默的因素。例如,MS-DOS的可执行文件头中的MZ标签是MS-DOS原架构师Mark Zbikowski姓名的首字母缩写。 众所周知,Java的.class文件的幻数为十六进制数Oxcafebabe,选择它作为幻数,仅仅是因为它是一个容易记忆的十六进制数字符串。 ...

qq_43470425的博客 3452

win2016 php mysql_Windows Server 2016 IIS10.0+PHP(FastCGI)+MySQL环境搭建教程 | 系统运维...

准备篇一、环境说明:操作系统:Windows Server 2016PHP版本:php 7.1.0MySQL版本:MySQL 5.7.17.0二、相关软件下载:1、PHP下载地址:2、MySQL下载地址:3、Microsoft Visual C++ 2010 可再发行组件包(安装MySQL需要此插件)4、Visual C++ Redistributable for Visual Studio 20...

weixin_34794420的博客 1377

PE结构详解

1 基本概念 下表描述了贯穿于本文中的一些概念: 名称 描述 地址 是“虚拟地址”而不是“物理地址”。为什么不是“物理地址”呢?因为数据在内存的位置经常在变,这样可以节省内存开支、避开错误的内存位置等的优势。同时用户并不需要知道具体的“真实地址”,因为系统自己会为程序准备好内存空间的(只要内存足够大) 镜像文件 包含以EXE文件为代表的“可执行文件”、以D

比尔丁子 3万+

使用Qt Creator自带的Qt Designer构造UI界面流程总结

在本文中,我们将总结使用Qt Creator自带的Qt Designer构造UI界面的流程。在对话框中,您可以选择一个控件的信号,然后将其连接到另一个控件的槽。例如,您可以将按钮的点击信号连接到一个槽函数,以响应按钮的点击事件。右键单击窗口设计器中的空白区域,选择适当的布局管理器,如水平布局、垂直布局或网格布局。在Qt Designer中,您可以使用各种预定义的UI控件来设计应用程序的界面。现在,您可以在应用程序的源代码中使用生成的UI界面。在您的源文件中,包含相应的头文件,然后创建一个UI界面的实例。

cl6789的博客 1394

flash均衡磨损--实时保存设备数据

【代码】flash均衡磨损--实时保存设备数据。

Car12 480

DOS MZ可执行文件(英語:)格式是DOS中的.EXE可执行文件格式。

(英語:)格式是中的.EXE格式。该文件在用字符串“MZ”(:4D 5A)标识。“MZ”是MS-DOS开发者之一的(Mark Zbikowski)的姓名首字母缩写。DOS MZ可执行文件比格式更晚出现,并与其有一定差别。DOS可执行文件头部包含了重定位信息,使得多个段能被载入到任意内存地址中,并且支持大于64KB的可执行文件;然而该格式仍然要求相对低的内存限制。这些限制后来通过使用DOS扩展器得以绕过。DOS EXE程序的执行环境可以在其程序段前缀中找到。

weixin_40191861的博客 833

Muse Spark:功能、性能测试及使用方法

对于一个仅用九个月时间从零开始重建的团队来说,这样的健康状况和多模态测试结果无疑是迈出了坚实的第一步,并且经受住了独立测试的考验。Muse Spark 为每个产品确定了最重要的主题(A 产品的发布策略、B 产品的定价策略、C 产品的规模化策略),并提出了切实可行的具体行动方案。抽象视觉推理也遵循同样的模式:Muse Spark 的 ARC-AGI-2 得分为 42.5,而 GPT-5.4 和 Gemini 的得分都在 70 分左右。他的离职是由于组织结构的变化限制了他的角色,以及团队转向闭源开发。

xiaoshun007的专栏 123

逆向工程入门学习(FreeBuf)

*PE(Portable Executable)文件是Windows操作系统下使用的可执行文件格式。它是微软在UNIX平台的COFF(通用对象文件格式)基础上制作而成。最初设计用来提高程序在不同操作系统上的移植性,但实际上这种文件格式仅用在Windows系列操作系统下。**PE文件是指32位可执行文件,也称为PE32。64位的可执行文件称为PE+或PE32+,是PE(PE32)的一种扩展形式(请注意不是PE64)。PE文件结构一般如上图所示。

jennycisp的博客 1817

STM32实战开发(110):基于STM32的智能地震监测系统开发

地震监测系统是自然灾害预警体系中至关重要的一部分。随着地震灾害的频发和对自然灾害预测精度要求的提高,智能地震监测系统逐渐成为研究的热点。STM32作为一款高性能的微控制器,凭借其强大的处理能力和丰富的外设接口,在地震监测领域中得到了广泛应用。本篇文章将详细介绍如何使用STM32实现一个智能地震监测系统的开发过程,涵盖硬件设计、软件编程、系统实现及相关代码。通过集成加速度传感器、地震数据采集、实时数据处理和无线数据传输功能,我们可以设计一个高效、稳定的智能地震监测系统。

2201_76125393的博客 710

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

PE 学习之路 —— DOS 头、NT 头

1. 前述 可执行文件的格式是操作系统本身执行机制的反映,理解它有助于对操作系统的深刻理解,掌握可执行文件的数据结构及其一些机理,是研究软件安全的必修课。`PE(Portable Executable File Format)`是目前 windows 平台上的主流可执行文件格式。PE 文件衍生于早期的 COFF 文件格式,描述 PE 格式及 COFF 文件的主要地方在 winnt.h 这个头文件...

weixin_30326515的博客 505

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

码农翻身之大话编程篇:2我是一个Java Class

                                                    第一回    陌生警察        我出生在C盘下面一个很深层次的目录下,也不知道是谁把我放在这里的。我一直在睡觉,外边的日出日落,风雨雷电和我一点关系都没有。        直到有一天,有个家伙咣咣咣砸我房门把我叫醒。这个家伙穿着像警察的制服,左手拿着一个对讲机,右手递过来他的工作证:“你好...

希望变强的小菜鸟的博客 932

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

码农翻身 各章节链接

码农翻身 各章节链接

mhHao的博客 588

码农翻身讲网络2:TCP协议

TCP/IP 之 大明王朝邮差 TCP/IP之大明内阁 TCP/IP之蓟辽督师 大明王朝天启四年, 清晨。 天色刚蒙蒙亮,我就赶着装满货物的马车来到了南城门, 这里是集中处理货物的地方 , 一队一队的马车都来到这里, 城头的士兵带着头盔,身披盔甲, 手持长枪, 虎视眈眈的注视这下面的动静。 城门口的大棚里乱哄哄的,是一群人围在一起赌钱, 这些家伙都穿着同样的衣服, 前胸和后背写着三个大字 “TC...

mhHao的博客 485

《码农翻身》第二章 Java帝国 思维导图

小伙伴们大家好,我把曾经做的《码农翻身》第二章 Java帝国 思维导图放上来了。 使用软件是MindMaster,这个软件的好处是, 非RMB用户可以插入图片(另一款思维导图软件XMind,要成为会员之后才可以插入图片), 文件链接已经放上来啦 emmx格式的: 链接:https://pan.baidu.com/s/1YXQfKj0qaZt7pO97QF03wA 提取码:prta 复制这段内容后打开百度网盘手机App,操作更方便哦 ——————————————————————————————————————

weixin_44857476的博客 1043

码农翻身讲操作系统2:进程,线程与操作系统那些事

我听说我的祖先们生活在专用计算机里, 一生只帮助人类做一件事情,比说微积分运算 了、人口统计了 、生成密码、甚至通过织布机印花 ! 如果你想在这些专用“计算机”上干点别的事儿,例如安装个游戏玩玩, 那是绝对不可能的, 除非你把它拆掉, 然后建一个全新的机器。 而我这些祖先们勉强可以称为“程序”。 后来有个叫冯诺依曼的人, 非常了不起, 他提出了“存储程序”的思想, 并且把计算机分为五大部...

Java技术江湖 2036

码农翻身讲网络2:TCP协议与可靠传输

前言:本文主要想说一下TCP的知识, 比喻有不恰当之处,敬请包涵。 大明王朝天启四年, 清晨。 天色刚蒙蒙亮,我就赶着装满货物的马车来到了南城门, 这里是集中处理货物的地方 , 一队一队的马车都来到这里, 城头的士兵带着头盔,身披盔甲, 手持长枪, 虎视眈眈的注视这下面的动静。 城门口的大棚里乱哄哄的,是一群人围在一起赌钱, 这些家伙都穿着同样的衣服, 前胸和后背写着三个大字 “TCP...

Java技术江湖 2253

微软开源MS-DOS操作系统源码,冲到GitHub第一了!

大家好,我是厂长。这两天逛GitHub的时候,突然发现一个叫 MS-DOS的项目冲到Trending榜首了!定睛一看,微软官方啊,搜了一下才知道,原来前两天,微软把MS-DOS 4.0系统开源了!关于这个系统,估计现在很多程序员都不知道了,或者只在古老的教科书上看过这玩意儿。MS-DOS,全称为Microsoft Disk Operating System,是一款由微软开发的操作系统。它主要用于个...

tanqingbo的博客 498

DOS开源版本月底发布 经典操作系统再出江湖

7月4日消息,据国外媒体报道,MS-DOS的开源版本FreeDOS在月底即将发布1.0版。FreeDOS的发起人Jim Hall坦言项目的进展略显迟缓,但远未到放弃的地步。之前曾有传闻这项工程一度夭折。   FreeDOS项目始自1994年,时逢微软公司发布Windows 95并停止支持MS-DOS。Jim Hall于那时开始投入这项开源操作系统的工作。FreeDOS基于GNU GPL协议,因此程

服务大众 746

windows系统开源的操作系统

一、什么是开源操作系统开源操作系统是指其源代码对公众开放的操作系统,这意味着任何人都可以查看、修改并重新分发该软件。对于希望摆脱商业许可限制或是追求更高安全性和隐私保护的用户来说,开源操作系统是一个很好的选择。如果我们将目光投向这方面的话,“Windows系统开源的操作系统”提供了一种既经济又灵活的方式来替代传统的Windows平台。通过对上述内容的学习,相信读者们应该能够更好地理解这类系统的特色所在,并且掌握了如何正确地安装和使用它们的方法。二、为什么选择Windows风格的开源操作系统。

2401_84162761的博客 1861

微软开源 windows-drivers-rs,用 Rust 开发 Windows 驱动程序

在 windows-drivers-rs 的开发过程中,该公司将把 GitHub 讨论区作为与社区互动的主要形式。目前,windows-drivers-rs 项目已得到了微软开发人员 Melvin Wang 的支持。该项目可帮助开发人员使用 Rust 开发 Windows 驱动程序,旨在支持 WDM (Windows Driver Model) 和 WDF (Windows Driver Framework) 驱动程序开发模型。具体示例可查看 Windows-rust-driver-samples。

u014389734的博客 1975
上一篇: 世界上最厉害的编程神器 ,被大多数人抛弃了......
下一篇: 键盘上这三个键,被这两个大厂彻底玩坏了!
码农翻身
码农翻身 《码农翻身》作者 《码农翻身》作者
博客等级 码龄8年 3万+粉丝 1084原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值