事情是怎么开始的?
老规矩,先说我为啥要折腾这个“低语”的重置版。很简单,就是被恶心到了。
前阵子我需要处理一批十几年前的教学音频,量很大,光靠手打字幕肯定疯掉。我就想起来那个现在很火的“低语”转录工具。网上搜了一圈,找到一个看起来最“官方”的安装包,下载,安装,然后我的噩梦就开始了。
好家伙,这哪是软件,这是套皮的流氓推广包。它悄悄给我装了三个我压根不知道是干啥的后台服务,启动界面要等半分钟,弹窗广告层出不穷,点一下运行,电脑风扇直接起飞,比我玩3A大作声音还大。我这人对电脑运行环境有洁癖,看到这种一团糟的软件就忍不住手痒。
我当时就琢磨,这个工具的核心功能明明就是跑几个算法模型,占用资源是必然的,但也没必要搞得这么像个黑心作坊的产品?我决定自己动手,把那些没用的垃圾全部剥离,搞出一个干净、纯粹、双击就能跑的绿色版本。
第一次动手,找准目标
我第一步做的,是先把它彻底卸载了,然后清注册表,清残留文件,把系统搞干净。我重新下载了它的核心安装包,但这回我没直接运行,而是用解压工具把它强行打开了。我发现,安装程序里大部分体积大的文件,压根不是算法模型,而是各种奇怪的“更新服务”和“用户行为分析模块”。
我仔细分析了它运行所需的最小文件集。我发现这东西的启动逻辑非常复杂,主程序运行前,得先去加载一个巨大的资源文件,而这个资源文件里,夹带了太多的私货。这就像你买了一辆车,结果油箱里有一半是泥巴。
我用了一个叫“依赖扫描器”的小工具,一点点往里挖,看看它到底启动的时候依赖哪些动态链接库(DLL),哪些是必须的,哪些是可有可无的。
- 我把所有的“用户反馈”和“错误报告”模块文件直接删了。
- 那些用来做“界面美化”和“皮肤切换”的资源包,全砍掉。
- 最关键的,我找到了那个偷偷在后台运行,定时检查更新并尝试联网的执行文件,直接把它重命名成了废文件,让主程序找不到它。
抽丝剥茧,实现真正的“重置版”
清理过程是真费劲。我发现他们把很多功能都做了强耦合,删了一个小的,主程序就崩溃了。我只能采取迂回战术,不能直接删文件,而是去修改配置文件,把它导向一个空路径。
最难搞的是“权限系统”。这软件启动后总要申请一大堆莫名其妙的读写权限,我判断这可能是为了后续的推广做准备。我尝试用沙盒环境去运行它,发现它一旦检测到在沙盒里,性能就极速下降。没办法,我只能在虚拟机里,手动修改了它的系统注册表项,欺骗它,让它以为自己已经获得了最高权限,从而跳过那个冗长的权限检查过程。
我花了三天时间,基本上把它的“脊梁骨”都拆了一遍。最终我得到了一个文件夹,里面只剩下核心的转录引擎、必要的模型文件,以及一个经过我修改配置的启动器。我把整个文件夹打了个包,压缩出来只有原始安装包的三分之一大。
测试结果让人满意:双击主程序,不到三秒,界面就弹出来了,没有弹窗,没有后台服务,CPU占用直接降了一半。这才是我想要的,一个专注于干活的工具。
最终效果和分享的由来
这个重置版我自己用了快一个月了,非常舒服。我一个朋友看了我的操作,说你这搞法,跟搞定了一个黑盒炸弹似的,费这么大力气干嘛直接用网页版不就好了。
我当时就笑了,我折腾这个,图的不是省时间,图的是一个“自由”。我受够了这些商业软件为了追求营收,把最核心的用户体验给牺牲掉。咱们用工具,是让工具服务咱们,不是让咱们去伺候工具。
说起来,为了搞这个,我上次差点跟我家孩子闹矛盾。当时是周末,我正在修改一个启动脚本,孩子非要让我带他去楼下踢球。我当时正处于一个关键的修改节点,实在脱不开身,就吼了他几句。孩子当时就哭了,他妈把他抱走了。我心里挺愧疚的,但那会儿脑子嗡嗡的,就想着赶紧把这个无捆绑的绿色版弄出来,好给所有跟我有一样“洁癖”的朋友分享。
下午我把代码搞定后,赶紧买了孩子最喜欢的冰淇淋,去哄他。我给他解释,爸爸在做一件很厉害的事情,让大家以后用电脑能更痛快。他似懂非懂地点点头。我看着这个文件夹,心里踏实多了。我把这个记录写下来,就是想告诉大家,如果你觉得一个工具不好用,别骂,自己动手,搞定它。