工具癖系列之 Doskey

按:这是 Doskey 兄去年八月发来的稿子,迟迟未发,歉甚。今天有读者来信询问工具癖系列的下落,是以为覆。—— 编者

我叫 Doskey,认识我的人都叫我 Dos。武汉人,目前在北京。1980 年代生人,电脑爱好者,也喜欢游戏和摄影。1992 年拥有第一台 PC,于是和电脑结下不解之缘。

1994 年开始自学编程,开头是我的爱好,现在成为工作。1996 年开始上网,算是国内 80 后中比较早的网民。从最早使用的 MS-DOS 3.30 到现在的 Windows 7,我以为自己永远都会是 M$ 支持者。直到拥有了第一台 Mac 后,我的观点彻底改变了。

硬件

1992 年底,老爸给我买了第一台 PC,配置是 AMD 80386 DX-40,4 MB 内存,210 MB 硬盘,512 KB 显存的 Trident 9000c 显卡(8900 阉割版),和一台杂牌 14 寸 .39 彩显。那时用的操作系统是 MS-DOS 3.30 – 5.0。1994 年,老爸给我买了第一台 2x 光驱和一块准 16 位声卡,系统升到了 MS-DOS 6.0 和 Windows 3.2 中文版。随后,1996 年,我的电脑升级到 Cyrix 686-166 (133 Mhz),32 MB 内存,4x 索尼光驱,和 Windows 95。接着是 1999 年升级 Intel Pentium MMX 233,并且买了一块 8.4 GB 的硬盘,系统还是 Windows 95。2002 年读大学后,自己赚钱买的第一台机器是 Pentium 4 1.7G 512 MB 内存,40 GB 硬盘,使用 Windows 98、2000和后来的 XP 与 2003。2004 年得到了第一份工作,公司给我配了一台华硕笔记本(不是自己的,型号不记得了),这也是我的第一台笔记本。那时开始,我用的软硬件基本都是主流的了。2007 年 1 月第一次跳槽,自己买了联想 ThinkPad X60 高配,这是自购的第一台笔记本。然后就是今年 7 月买了新的 MacBook Pro。

现在,奔腾四 1.7GHz 这台我老妈在用,每天都在网上 QQ 游戏和 PPStream。X60 的电池坏了,屏幕灯管也坏了,修过后我老爸在用。我自己在用 MacBook Pro,老婆在用索尼 TX16C。(准备给她换 MacBook Air 了。:))

心路历程

小时候家里条件不好,除了第一台电脑,用的基本上都是过时的硬件。老爸带我入门,之后所有的电脑知识都是自学的。以前父母一直在身后支持我。现在又多了一个老婆支持。:)

小学开始学 C、BASIC。初一过等级考试二级 C,后自学了 PASCAL。高中自学 C++、汇编,被学校评为电脑方面的重点培养对象,随后爱上了软件破解。对逆向分析(二进制 -> 源码)一往情深。大学时一直在做破解、逆向分析方面的工作赚钱,后来和朋友一起开发网游外挂。大学还差半年毕业就出来工作了。也是一直从事逆向分析方面的工作。

2004 年开始做 Windows 驱动开发,之后一直致力于Windows 下的主动防御、防火墙和磁盘级安全产品设计与开发。曾为奇虎开发了 360 保险箱,为 COMODO 开发了 DiskShield 等产品。目前仍然效力于 COMODO 中国研发中心,带领一个十几人团队开发一款 Windows 下的重量级磁盘安全产品。顺便透露一个内部消息,听 COMODO 的行政总裁 Mr. Melih 说,目前 COMODO 已经在路线图上计划了 Mac OS X 上的互联网安全产品。我们拭目以待吧 :)。

PC 篇

DOS 年代

就像自我介绍中说的。我是从 MS-DOS 3.30 开始使用的。MS-DOS 3.30 的分区大小限制是 32 MB,210 MB 的硬盘得要分好多个分区,这个印象最深了。那个时候还很小,只知道打游戏。最喜欢的当然是大富翁 2,我玩的第一个中文游戏。后来有了光驱,可以去买 25 RMB 一张的 D 盘。都是那种游戏大杂烩。慢慢的,我也学会如何改游戏。最早用 GB4、Debug+GameTools 3.0。后用来用 Game Wizard 2.0,这可是当时改游戏的神器。后来出现了 FPE,它彻底改变了游戏修改的规则。:D 当然,除了这些修改工具,我还会使用 PC Tools 5.0,这个是静态修改利器。不管是否用来改游戏,当年人手一份的吧。常用的软件很多,什么都尝试过,记得比较清楚的有这些:诺顿的 DOS 工具箱,NDD、NC 等。看图利器 QPEG、SEA 2.0 等。中文系统,某神人用 debug 写的 2.13i、希望的 UCDOS、微软的 PDOS。编程工具:QBASIC、TC20、TC30、BC31。调试器:TD、S-ICE 2.8、国产的 TR(作者后来是我的老板)。那个时候我不太爱用 Windows,比较习惯命令行。但是 Windows 还是有装,开始是用 3.1,后来的 3.2 简体中文版。里面都有安装 Word 4.0、Excel 4.0。这个是我老爸主要用到的。

Windows 9x 年代

我也进入了 Windows 9x 年代。那个时候,我那些过时的硬件实在跑不起 Windows 95 这个庞然大物。我当时有两块 200 MB 左右的硬盘。最后在第一块硬盘上用 DoubleSpace 压缩过,然后勉强装下这个庞然大物,每次启动都要有很好的耐心等待它启动完毕。我也不记得当时 Windows 95 用什么吸引了我,大概是为了 Delphi 、VC 和互联网吧。一次偶然的机会体验了一下 Delphi 2.0,然后就深深爱上这种 RAD 模式的开发,可惜当时不太懂这些。因为 Delphi 2.0,我后来自学了 Pascal、Obj-Pascal,Delphi 从 2.0 用到 7.0。最后 Delphi 彻底被 Borland 玩完了。学 VC、MFC 是后来有了大硬盘之后的事情了。

说到互联网。96 年的时候,老爸给我买了一块内置的 modem,33.6 k 的。记得很清楚是,内置 modem 占用 IRQ,会导致声卡和其他硬件无法使用,但它是我仅有的一个 modem。 那时候的浏览器是 Win95 中的 IE 3.51 和后来出的 IE 4.0,也有尝试过 Windows 3.1 下的网景浏览器。不说网景,因为那时候对它不熟悉,只知道它是一个浏览器、邮件客户端、HTML 编辑器三合一的奇怪客户端。IE 4.0 真是个庞然大物,40 多 M。我用 3 KB/s 的速度从微软网站下载回来。然后我的机器跑不动,只好删除。最后还是使用 IE 3.51,用它用了很久很久。要知道,当时上网是 15 RMB 一小时,加上一小时电话费可就更贵了。还好我家里的电话是包月的。后来换了 Windows 97(Windows 95 支持 FAT32 的版本)和 Windows 98。WinMe 跟我不合拍,从来没装上过。

当时使用的软件,记得的有这些。

邮件客户端用的 TheBat。下载用网络吸血鬼、和后来国产的网络蚂蚁。FlashGet 算是很长寿的软件了,也是那个年代出来的。当时还很喜欢上电话拨号的 BBS,因为家里的电话是包月的,武汉某 BBS 的双线 BBS 上总是有一个我挂在上面,也不记得当时在下载些什么。当然,上 BBS,蓝波快件是必不可少的。虽然我不太爱读那些信件。

那时候可以访问的网站真的很少。当时的网络还分为 Internet 和 Chintnet,也就是所谓的 163 和 169。169 是无法访问国外网站的。我家里用的 163。记得去办理电话上网后,电信会给一张小卡片。上面密密麻麻写了一些网址,还有好多 IP 地址。网址有 Chintnet 的,如武汉热线等。也有国外网站如白宫网站、NBA 等等等。IP 地址基本上都是国内网站,它们都还没有域名呢。

搜索引擎一直用 Yahoo!,那时候还没听说过 Google。网易 163,免费邮箱在国内是第一家了,当然,它也是学的 Hotmail。当时每出一个新的免费邮箱,我和我老爸都会去注册一个。当时爱访问的网站有:瀛海威、中华人民共和国外经贸部(囧),个人网站有:华军软件园、高春辉的下载站等几个,去下载一些小软件之类的。

那时候比较热门的网络应用是 IRC 和 ICQ。IRC 客户端用 Win95 中自带的 Chat 2.0,多数中国人都去微软服务器的 #china、#chinese、#侃大山等几个频道,里面也有很多外国人凑热闹。ICQ 也是很热门的应用,认识的网友都加到 ICQ 里面,方便交流。它是我使用的第一个 IM 软件。后来出来 QICQ 这个仿制品,我和我的网友们都不希去用它(现在用它也是迫于无奈,身边的人都在用)。

当年我老爸特别想开一个类似现在阿里巴巴的网站,可是最终没有做起来。

我没怎么经历中国的互联网泡沫时期。那是我的低迷期,家里环境每况愈下,再供不起我上网了。我离开了网络。好好读书,脚踏实地的学各种技术。

学习破解是一个偶然,当时在一张 D 盘中发现了台湾的煜男煌和软体蛀虫的破解教程(这两个名字估计已经没人记得了吧)。随后一发不可收拾。 Debug、S-ICE、TR 等软件,太熟悉了,整天深深沉迷在里面。后来我自学了汇编,专门用来破解和修改游戏。用 S-ICE 直接改游戏代码,比改数据来得有趣多了。

后来的 Windows 98 真的用了很久,在 98 上做破解太方便了。万能断点、TRW2000(TR 的作者做的 Windows 版)、诸多自动脱壳机都只能在 98 上用。

那时候常用的软件调试器:S-ICE、TRW2000。

反汇编:W32DASM、IDAPro。

辅助工具太多了,就不在这里列出来了。我总是跟朋友说 S-ICE 和 IDAPro 就是我的左膀右臂,05 年 4 月,S-ICE 不更新了,等于断我左臂。呵呵。

XP 年代

Windows XP 出了稳定的破解版后我就开始用了。当时只有 512 MB 内存,跑 XP 还是有点吃力的。但是 XP 的界面确实比 9x、2000 讨喜。XP 一直用到 09 年。现在除了我在用 Mac OS X,我的家人都还在用 XP。

接下来我来说说我常用的软件。网络软件:Firefox,我最喜欢的浏览器装,装了一堆插件,插件稍后介绍。Thunderbird,Mozllia 的邮件客户端。输入法,搜狗拼音,很多人说,你那个年代不都用五笔么?我告诉他们,如果你也跟我一样,每天在电脑前面 12 小时以上,持续这么多年,你肯定和我一样,也是提笔忘字。字都不会写了,还谈什么五笔不五笔?囧。播放器用完美解码。看图工具 Picasa。下载工具用迅雷自制特别版。照片处理用 Lightroom。IM 的话,迫不得已只能用 QQ,工作要用 MSN。本地常用的就这些吧。

开发工具我用 VS6、VS2005、VS2008,都只用 VC,WDK。还有 MASM32。内核级调试工具用 Windbg 替代了 S-ICE。用户模式调试用 Ollydbg。破解的话,右臂 IDAPro 还是在的,5.4 还没拿到,不过也快拿到公家版的了。辅助工具一堆。

网络应用太多,只写写常用的吧。

Twitter 每天必备,以前玩过饭否。后来不玩了,因为那时候不太喜欢被人 follow。现在不喜欢 follow 别人,只 follow 认识的人。

Google 的所有产品我都比较喜欢,如 Google Reader、Gmail、Google Docs、Notebook,这些都是常用的。

相册有用 Google Picasa、Flickr,虽然他们常年被封。

Mac 篇

今年七月,我拥有了自己的第一台 Mac,一台新款的 MacBook Pro。从此,我开始了我的 Mac Life。:D 很早的时候就听说过 Mac 很好,当时我确实是买不起。

买机器的时候,没有让水货商人帮我装任何软件。系统预装的 Mac OS X 10.5.7。iLife ’09、iWork ’09。其他的软件都是自己慢慢摸索着安装的。因为以前没有接触过 Linux 和 Unix。刚刚开始还真不习惯。两周过去,已经好了很多。

Safari 实在不太习惯。我还是使用 Firefox,并且装了如下插件:

Adblock Plus - 广告过滤,几乎是 Firefox 用户必装的软件吧。

AutoProxy - 翻墙专用。

DownThemAll - 因为 Mac 下没有找到很好的下载工具,就先用它代替了。体积小,功能全。

Easy DragToGo - 一个中国 MM 打造的迷你超级拖拽工具。超级好用。

FxIF - 查看图片的 EXIF 信息,如果你也是摄影爱好者,这个插件应该你也会喜欢。

Google Toolbar for FireFox - 众多功能集于一身的好用工具条。

Greasemonkey - 油猴,好用的自定义脚本工具。目前我只开了两个常用的脚本:Greased Lightbox(以 Lightbox 方式显示网页图片),Show btchina(让 Firefox也 可以显示 btchina)

Personas for Firefox - Firefox 换皮肤工具。Mozilla 产品。

Tab Mix Lite CE - 标签控制。太好用了。不用形容。

其实,如果 Safari 如果拥有 Adblock、DragToGo 和 Tab Mix 这几个功能的话,我愿意完全转向 Safari 的。

邮件客户端使用系统自带的 Mail,很好用,很强大。和 iCal、地址簿完美结合。其他软件都尽量使用 Mac 自带的。基本上都很好用。挑不出缺点。

Twitter 客户端使用 Tweetie 和 Twhirl。相比起来,我还是比较喜欢 Tweetie,全内置。如果可以隐藏 Dock 图标就更好了。

视频播放使用 QuickTime、Real Player 和 VLC。BT 客户端使用 uTorrent。文本编辑器装了个 TextMate。IM 安装了 MSN、QQ 和 Skype。系统整理装了 OnyX,照片处理还是用 Lightroom。

我还安装了 iStat menu 和 iStat Pro。我很喜欢它的界面和功能。开发工具也是必装的,Xcode、IDAPro for mac、反汇编工具 otx

特别篇

其实本来不太想写这些,希望你不要觉得 Mac 的使用者中又多了一个蛀虫。 但是我想这也是一种分享吧。

本周开始研究 Mac OS X 的程序破解。算是小有进展。首先,Mac OS X 程序基本上都很少有保护,不像 Windows 下的软件。其次,Mac OS X 上的程序,用 Xcode 自带的 gdb 可以很完整的进行调试。IDA 的 mac_server 可以轻易的远程调试任何 Mac 程序。

Mac OS X 上的 Math-O 格式,可以用 IDA 轻易反汇编。Math-O 里面包含了所有的类名、过程/属性名,这些符号信息对 cracker 来说是很好的礼物。otx 也可以反汇编 Math-O 格式,可以直接给出接近源码的注释。配合一点点逆向分析的技巧,再稍微加工一下既可得到源码。和逆到和原作者的代码一模一样。

另外,Interface Builder 的 nib 文件,可以直接编辑,无论是否编译过的版本。利用它可以轻易定位到任何按钮绑定的过程和控件绑定的属性。

这导致 Mac 下的破解几乎没有难度。任何一个 Windows 下的 cracker,花两小时入个门,啥都挡不住他了。

这几天对几个知名软件的分析,也尝试着制作了这几个软件的 Keygen。写 Keygen 的同时还顺便学习了一些 Objective-C。现在看着汇编写 Objective-C 的源码基本上是没有问题了。折腾几天下来算是小有成就感。

当然,这仅仅是一个开始。还有更多东西要学,毕竟我才刚刚接触 Mac。将来如果有机会,可能会写一篇 Mac OS X 的逆向分析教程。从编译后二进制文件的角度详细阐述一下 Math-O 和 Objective C 的内部原理。这些基本上都理解得差不多了。

结束语

我热爱我的工作。我也为我的兴趣爱好而骄傲。我的一家人:老婆、爸爸妈妈,外加两只猫都很支持我。我别无所求。我很快乐。 :) (完)