2024-07-27

「微软蓝屏事件」与「信创」

图片来自网络

「微软蓝屏事件」也已经过去一个多星期了。各方信息差不多到位了,讨论得也相对充分,应该不需要我再来分析或者补充什么了。

不过,这个事件发生之后,我遇到一种有意思的想法,可以与大家分享一下。

蓝屏幕席卷全球的时候,我正在旅游。连日记都只能在手机上简单记录一下要点的我,完美错过了这个事件的波峰。等我有空来了解的时候,整个事件基本已经有了结论,甚至都快平息了。我不知道这算我的幸运还是不幸。

当然,余波还是在的。等我周一回到公司,有同事就向我表示,「信创」的事情,可能要因此而加速。理由是这次中国在此次全球性事件中基本幸存,有赖于「脱钩」,那么接下来这个过程应该会更加地紧锣密鼓。

这自然是他自己的理解,不过也很有可能会是一个「正确」的预测。我们都知道所谓的「上头」其实也只是一届「草台班子」而已(实际上谁不是呢?)。他们的见识不见得比普通人高出多少。所以,按照常识,他们很可能也会这样去想,去思考,也就会真的这样去做。

问题是:中国这次的「幸存」,真的是因为「脱钩」吗?

跟许多人的理解可能不太一样,这次微软所谓的蓝屏事件,实际上跟微软没有什么关系。在我看来,这事就是一个装机量巨大的杀毒软件出了一个Bug。由于在企业用户中装机量巨大,企业服务的客户也被影响到,于是闹出了这么大一个事端。微软还真是可怜,其实是它被别的软件给「搞」了。

可能现在活跃在网上的人都太年轻,也或者互联网真的是没记忆了。但我可是都还记得的。
我曾经写过一篇Blog《突发的c000021a蓝屏故障》。2007年,距今有一些年头,15年有,但还不到20年。在我看来,那次的事件比起这一次,其实还更为严重一些。这次只是内核驱动层面出了问题而已。驱动嘛,开个安全模式就进去了。然后把文件夹改个名,让它正常启动时加载不了,就恢复了。2007年那次可是把系统DLL文件直接给干掉了,相当于把操作系统删掉了一部分,安全模式都没用。单机只有哭。

我并不是太清楚现今的CrowdStrike与当年的Symantec哪个更牛逼。反正我现在不用什么杀毒软件或安全防护软件。「自己的安全自己负责」,很多年前我就学会了自己解决问题。普通人肯定没法照搬我的情况,这也是为什么360这种东西至今也还能大行其道的原因。
那么,说到这里,我的另一个大问题就要抛出来了:你为什么就能确定,360之流不会闹出同样的问题呢?

在我看来,作为一个拿到了ring0权限的软件,要把系统搞蓝屏,那简直是举手之劳。能把你Windows搞蓝屏的内核驱动,我要不了几分钟就能写上一个。像CrowdStrike那样的情况,我们一般称之为「逻辑炸弹」,也不是什么多难的事情。无怪有很多人对此事归结于阴谋论。
我觉得这种逻辑炸弹恐怕还有很多,最好不要被什么歹人给拿到。但对此你无法打包票,所以还得要有自己的能力,以及要有备援才行。我上面说的那句话的扩大版,此时应该强调一下:自己的事情,只有自己来操心才靠谱,靠别人都是靠不住的。

况且,国内的软件企业就很靠谱吗?
这次很多人觉得很不可思议的一点是:CrowdStrike既不好好测试,也不做灰度更新,直接全球推送,非常大胆,非常的不专业。有人发现,CrowdStrike的创始人之一,之前在McAfee也闹出过类似的问题。这一点还真是,我也不知道如何吐槽。
CrowdStrike是草台班子,这一点可能没错。但国内的软件企业,我可是更加不放心。

我曾经有个同事,脑子算是聪明。别人上大学的时候,他当兵去了。复员后也没受过什么系统性的专业训练,「怎么写代码」这件事情,都是自己琢磨的。其实从这一点就能看出来,人的确是挺聪明的。但他路子也挺野。若让他去研究技术问题,我认为或许会是一把好手,但不应该去做工程师。他写出来的代码,Bug不少。
他有一种自创的加密文件格式,其中的加密算法基本上就是异或,关键是密钥是他自己的硬编码。这个东西用在了他当时给公司开发的产品中。后来他离职了,代码就交接给了我。「Bug多」的印象,也就是这个时候留下的。
听别人说他去了某大城市发展。再后来,可能四五年后了,我在研究360的一款产品的时候,发现它们的漏洞库文件的HEX密文看上去很眼熟。于是我用那位同事留下的代码去试了一下,没想到真的一下子就解密成功了。
这……

所以,「脱钩」并不能保证不受影响。相反,闭门造车,低水平造轮子,还加上不用接受市场检验,由政府背书和「保送」,使得出现这种问题的机会,其实是增加了。
要问什么才是真正有效的手段,窃以为,增加多样性,增加市场竞争,算是一个。
所谓「信创」,不管背后的内容是什么,重点应该放在「创」字上。如果还是现在这种搞法,把重点放在「不被卡脖子」上,不可能解决这个问题,反而会恶化。

如果能创造出更多样的生态,有了更多的选择,就不会吊死在一棵树上。最理想的情况,每个软件都是不一样的,就不会因为一个弱点而全球瘫痪。
就像生物世界一样,每个人的DNA都是不一样的,没有什么病毒可以杀死100%的人类,总有人能幸存下来,然后把抗病毒的基因传播下去。

说到底,科学技术范畴的事情,就要遵循科学技术的发展规律,而不要想着去为自己的政权安全服务。出发点如果就「心术不正」,最后是结不出什么好果子的。

2024-07-22

我的手机史(十一)——iPhone SE

2016年,准确地说应该是3月26日,我在清明节回重庆之前,去AppleStore买了一个当年三月份新上市的iPhone SE,把我之前在用的Samsung Galaxy Note 3手机替换了下来。Note3带回去给了我爸去用,老人可能更需要大屏幕一些。而我,其实更喜欢小屏幕的手机。

我的手并不算大。或者说,我的手掌可能比较大,但手指不长。我的手指和手掌的长度比例,不像有些人是3:2或4:3,甚至都不是1:1,而是有点夸张的3:5。这使得我用手指去「够」屏幕远端的触控内容时,单手操作有些费劲。还因为这个原因摔过几次手机。

所以,体验过大屏幕手机之后,这次我又回归到了小手机上。
这部iPhone SE有着5S的尺寸大小,外观几乎一模一样,但内部的系统,甚至略微高过6S,或者说起码是同一个级别的。速度自不必说,除了电池略差,其它都是当时iPhone最高的档次。64GB,总之是够我用了。

这回是本尊无误了

当时的我,觉得买的很值。别人以为我这个是5S,特别是我套了手机壳以后。但我也不在乎,自己用着爽就行。

没过多久,下半年吧,苹果出了iPhone 7。有了防水功能,也因此把耳机插孔砍掉了。我的SE在耳机插头方面变成了绝唱。
再后来,苹果爆出了「电池门」事件。为了平息众怒,答应给所有符合条件的手机免费换原装电池,即使是不符合条件的,也可以打折换电池。
太太当时在用的iPhone 6 Plus,就在苹果商店免费换了电池。刚好岳父说没手机用,于是我去买了一台iPhone 8 Plus,把SE也拿去掏钱换了一次电池,然后就给岳父用了。当时电池峰值容量还有89%,Apple的店员一直劝我考虑考虑。

岳父也是狠人,后来这部小SE,他一直用到去年,才被替换下来,算算大概服役了6年多。电池肯定又不行了,峰值容量剩73%,Home键也不太好使,屏幕边缘也开始发黄,总之是一副行将就木的样子。
不过其它功能说来还算正常。iOS版本一直支持到15,目前还算是能用的机型。现在它被我放在公司当测试机,毕竟5寸屏幕的小手机如今不太好找了。

2024-07-05

Dbgview与小狼毫输入法冲突

今天在调试一段代码的时候,偷懒用了OutputDebugString,于是想打开Dbgview看输出。双击了没反应,试了试dbgview64,还是没反应。有点奇怪,心说是不是旧版本不能用了,看看SysInternals有没有新版本可以下载,点开Chrome,发现Chrome启动也没反应了。心里有点慌,想开任务管理器看看到底怎么回事,结果任务管理器也打不开,这才真的有点发慌了。

一番折腾没有效果,包括找了别的电脑RDP远程桌面过来,也进不了桌面,还把主机卡在登录界面进不去了。还好右下角的重启按钮还是有反应,而且没让我等多久。
重启完以后,第一时间去开任务管理器,然后重来了一遍。之前以为是偶然现象,确实很久没重启了,但发现这次Dbgview还是卡住,还是只能重启。反复折腾了几次,都是如此。上网一搜,还真有人遇到类似问题,一看「对方」——小狼毫。

这和我的情况对上号了,我也在用这个小狼毫作为输入法。于是我把这个输入法的主进程WeaselServer.exe杀掉以后再去开Dbgview,工作得非常正常。于是案子算是破了。
接下来我好好调查了一番这个事情。除了原Github贴子反馈的事情,我还发现了一些情况:

如果先有WeaselServer.exe,再去启动Dbgview.exe,Dbgview就会卡住,界面出不来。如果事先开着任务管理器,就会看到Dbgview.exe进程出现,并未「无响应」,CPU占用率也不高。此时如果杀掉了WeaselServer.exe,系统会立刻恢复正常。杀掉Dbgview.exe也行,但系统恢复要慢上一点,似乎在等待着什么。

如果是先有Dbgview.exe,再去启动WeaselServer.exe,则会在Dbgview上看到大约100条左右的日志出现。多也没有很多,而且后续并没有更多的日志出现。
诡异而关键的一点来了:此时DbgView也能在界面上通过鼠标正常操作,只是不能碰键盘。如果一动键盘,哪怕仅仅单独碰了一下Ctrl或Shift键,都会导致DbgView无响应。

而只要Dbgview.exe开始卡住,接下来Windows里面就会无法新建进程。在别的已经启动的进程里面,也不能去碰键盘,一碰就卡。包括任务管理器,我前几次被迫重启,就是栽在这里——我实在是太喜欢用快捷键了。

在测试时,有碰到过一次Process Explorer能够「例外」,也就是说操作键盘不会被卡住。但接下来我想要再重现,发现它的「防护结界」失效了。所以目前还算是没找到规律。

这问题看上去是Dbgview.exe和WeaselServer.exe这两个进程在键盘消息的处理方面有所冲突。原Github贴主提到的「过滤掉“.cc:”相关日志」的临时解决方案,并不能解决我遇到的问题。我试过,即使让DebugView停止Capture也不行。不过,只要注意启动顺序,并能忍住不要去用键盘,就还暂时可以让它们俩一起工作,相安无事。

我不知道作者会不会去修正这个问题,以及什么时候修正。有点担心,恐怕他缺乏足够的动力和精力去做这种事情。现在真的没什么好输入法可以用了么?

2024-07-04

两个关于「日本人」的小故事

最近,苏州的日本校车刺杀事件作为一个新闻热点,随着胡友平女士的离世,慢慢进入平复期。
相关的讨论已经很多了,我也无意再去发表一些观点和看法。今天只是简单地分享一下两件跟「日本人」有关,对我感触比较深的事情。两个小故事,也不代表和说明什么,随便看看吧。

没来由的恨意

许多年以前,当时我还在厦门工作。公司里有位女同事,我们都叫她小王。
小王是一个比较朴实的人,心直口快,没什么城府。她有一次跟我们聊天,说起她上一份工作时,特别提到同事里面有一位是日本人,跟她关系很要好。

『他后来回国了,临别的时候,还送了我一套茶具呢!』

小王说这话的时候,是颇有一些骄傲自豪的情绪在里面的。
然而,紧接着她又说:

『但是我一直告诉他,我很恨日本人。跟你个人无关,我就是恨日本人。』
『他临走的时候还哭了,问这是为什么。』
『我告诉他说,我也不知道,但是就是恨。我这一辈子都不会喜欢日本人。』

我们也有点纳闷,问她是不是祖上有什么前辈,在二战日军侵华的时候死在日本人手上?她说并没有,而且强调说她真的不知道为什么。
说到这里,她眼里应该有迷惘,但我并没有看到。我看到的,还是骄傲自豪。

再后来,小王肚子大了,辞职回家生孩子去了。我们后来再也没见到她,只是偶尔在看见路边的大肚婆时,不约而同地猛然互相问起「小王生了男孩还是女孩」这档子事来。

你们为什么叫我「日本人」?

大学时候,有一位同学,成都本地人,姓李,住我斜对面寝室。大家平时都叫他「日本人」。叫得顺了口,俨然已经成了他的绰号。最开始这样叫的,大概率是他同寝室的同学,估计从来没有人问过为什么。

有一天中午,我在寝室边吃饭边玩游戏。他寝室的同学估计都不在,自己大概也忘了带钥匙,开不了门,于是跑来我这边「串门」,很随意地逛逛。

我也用他的「日本人」绰号称呼他,跟他打招呼。
然而那一天不知道是不是他过得不太顺心。总之不知道怎么回事,他一下子就爆发了:

『我不知道你们为什么都要叫我「日本人」,我又没得罪你们,你们为什么要这样子对我?』

这话的语气,我可能不一定能准确形容。总之用「抱怨」可能是有点避重就轻了。他的火气很明显,看起来完全不是在调侃或开玩笑。这个情绪一定在他心里被压抑了很久。我心中一「咯噔」,完了,今天要在我这里「爆炸」了?

我心中闪过了无数个念头。
要说他像不像日本人?身高应该有超过一米八,也算仪表堂堂,家世应该也不错。有一次他女朋友跑来学校找他,闯到教室来打听。挺不错的女孩儿,配得上他,后来他还被我们集体起哄。
要说他哪里像日本人?如果鼻子下面留上一撮希特勒小胡子,戴上黑色圆形小眼镜,再配上他那标志性的「狞笑」,倒是真的有点像抗日神剧里面的日本军官。
不过……
表面上我是不动声色,捏鼠标的手也没动过,只是白了他一眼,然后缓缓说道:

『谁让你成天嘴上都是「说的是呢」、「说的是呢」?』

我觉得我肯定是抓住了我那无数个念头中,最好的那一个。这个短语也的确是他的口头禅。我甚至觉得我真的Get到了第一个称他「日本人」的那个人心中的Point。

估计我和他都是「恍然大悟」。他接下来的表情,我只能想到四个字:「回嗔作喜」。

『说的是呢,原来是这个原因啊。』他嬉皮笑脸地坐到我旁边来,『哎,你说这个日语也真是有意思哈。你看,「说的是呢」,这几个字换成中文也是这个意思。你说这日语是不是就是当年学的中国话……』

我附和着他后面的喋喋不休,心想着这次危机应该算是解除了吧。

2024-07-03

从KuaiCheDao搬迁至Nube.sh

之前为了让太太看Netflix,经人介绍在KuaiCheDao上买了一个SJC的VPS。价格不算非常便宜,但也还好,而且「质量」的确不错。带宽和速度都不错,当时说是家宽,用下来感觉跟其它VPS提供商的东西的确有些不一样。自己的VPS,IP地址比较爱惜,后续很多时候都派上了不小的用场,包括AI。

前些天,收到了邮件,说这个VPS即将关闭,在7月后就没法续费了。替代方案是迁移去Nube.sh。
说起Nube.sh,我知道是同一个老板折腾出来的东西,想从VPS变成Cloud,也就是向Vultr之类看齐,貌似费了不少劲。之前他一直没弄好Nube.sh的SJC地域,我也就没去关注。现在要强制迁移KuaiCheDao上的客户,想必是已经搞定了。于是周末我就去尝试把VPS迁移了。

先说说这个Nube.sh本身吧。
打开页面,就直接提示我用Google账号登录。我懒得注册,直接允许了,确实比较省事。
控制台比较简单,功能或许尚算够用。地域的选择位于页面上方中部,感觉属于框架的部分。我一开始没看到,疑惑了半天结果还是下错了单。而且一旦下单就立即开始部署,说起来也算是太过「流畅」,但这种既没有「确认」界面,而且页面下方还有用户没明确选择的项目也没给提示的UI设计,结果就是我稀里糊涂$0.02一键就出去了。这个必须吐槽一下。

老板给了$0.2的授信额度,可以用于摸索和测试,包括测试IP和网络的情况。基本上这个额度够用了。
最小的实例一小时才$0.0027,月租不到$2,额外的IP和存储费用还不到$0.3。流量每G只要$0.0009,按原来KuaiCheDao的额度2TB计算相当于$1.8。而且Nube.sh这边算Outgoing不算Incoming,反正比阿里云便宜多了。
当然,现阶段价格有折扣。恢复正常以后,按照KuaiCheDao我原来的VPS规格算下来大约是一个月$5不到。相比起来,费用方面还是会更便宜一些。不过可想而知,老板肯定能更方便地超售。

IPv6用起来貌似没遇到太多问题,目前能正常用。KuaiCheDao那边曾经遇到过问题,而且修好以后还有过反复,后来我索性把IPv6给禁用掉了。
拿到的IPv4地址也看了一下。type也是hosting,不是isp,有些遗憾。虽然VPS肯定是在SJC,但IP是香港的Cogant,不过用ipinfo去看确实是在SJC没错。
我KuaiCheDao的VPS地址印象以前中是isp,现在发现也变hosting了。用起来倒是还没什么感觉,反正太太现在更多的都是看我下载到本地的片子,而不是在线看Netflix了。试了一下ChatGPT可以用,那就还算OK。

测试完成后,用银联卡充了$10。VPS部署完先放了起来,等我KuaiCheDao到期后就把线路切换过去。
只希望这个Nube.sh不要像KuaiCheDao那样被人攻击。

2024-07-01

微软更新弄丢了我的VS2013窗口布局

早上来公司,打开电脑显示屏,发现似乎有些不一样。周五下班时挂着在运行抓Dump的一个程序,不见了。

心中一喜,还以为抓住Dump了。再一看,Visual Studio不对劲。心一沉,去Windows日志里面一看,果然今天早上1点多的时候,机器被重启了。再去看Windows更新日志,果然,今天凌晨安装了KB5039299,然后就被微软自动重启了。

微软还挺贼,重启完了以后,还把我的应用程序都给「恢复原状」。包括像Chrome和Visual Studio。可里面的工作状态终究是没法真的恢复,而且把虚拟机也给我关了,简直气死我了。我已经想尽了办法阻止它自动重启,而且也禁止了Windows在登录时重启应用,可这货在这一点上简直比中国AI还蠢,横竖不听,我行我素。

别的我就忍了,大不了当作周末断过电。可微软还干了一件出格的事情:它把我的VS2013的窗口布局给重置掉 了。我一共开了6个VS2013,其中5个都被重置过了。我小心翼翼地最后关闭那个看上去没被重置的VS2013窗口,然而没用,新打开的都是那种资源管理器在右边的布局形态。

记得以前也处理过类似的事情,后来发现有捷径。在网上搜了一阵子,总算捡回了记忆。

工具 -> 导入和导出设置
从「工具」菜单中选择「导入和导出设置」,然后选择「导入选定的环境设置」,再接下来选择「否,仅导入新设置,覆盖我的当前设置」。
最近没有备份过,但我对工作环境并没有什么特别的定制,所以重新选Visual C++就好。如果对于习惯的开发环境特别在意,平时还是注意导出并备份吧。保存路径在自己动手的过程中就可以看到。

还是更习惯VC++的传统窗口布局
我还是更习惯传统的资源管理器在左边的那种VC++的窗口布局方式,可能也有一些老筒子跟我是一样的习惯吧?

每个周一都很忙,真希望微软不要再添乱了。