《疯狂的程序员》40
绝影迫不及待地把X-posure的注册机给周总,给他的时,他努力让自己显得平静一点,但他等到的并不是周总动的神情,他平静地说:“不错不错。这也算个小项目,这是200块奖金,你给我签张工资单。”
出了办公室,绝影感觉很不服气。200块钱奖金就不说了,自己辛辛苦苦好容易做出个注册机来,随便讲给谁,只要是业內人事,大都会发自內心赞扬他几句,就算不是发自內心,至少也会说几句恭维的话,可周总居然就像没看见一样。
所以说人跟人不同,狗和狗有异,同样一个妹妹走在学校里,西师的瞅也不瞅一眼,川大的说:“美女呀!”要是放到绝影他们学校,土匪多半会惊叫:“快看,女的!”
对周总来说,要一个注册机,要十万个序列号和要一个序列号没什么两样,反正他是自己研究又不出售,所以不管你武功有多⾼強技术有多⾼深,还按一个序列号的标准发奖金。老总做到这一地步,算是相当成功了,自己就开个类把头文件写好,具体实现就让绝影他们去写吧,至于说实现这个功能用了些啥算法啥API啥⾼级技术,咱就不管了,反正我接口开了,你就管给咱封装好上了就行了,于是老总门终于从繁重的开发中解脫了出来。
绝影正心情不慡,张厂长却丢下手上的活凑过来问:“怎么了?这个解破做下来,又拿了多少奖金啊?”
“你懂啥啊?这不叫解破,叫逆向工程。”
“行了,我还不知道,现在流行这样嘛,女都兴叫‘姐小’,我们出个差纯粹跑腿的都叫‘张工’,‘绝工’,你那解破当然换个学名叫‘逆向工程了’”
听他这么说,绝影气又不打一处来,所以说没问化,真可怕,还是物以类聚人以群分。公司里自从BOSSLiu走后,基本没人再跟自己讨论技术上的东西,周总虽然是做技术出生,开始的时候绝影还对他敬仰有加,可不多的几次亲眼看到周总写的代码,又觉得和他神奇的经历有点不相符合,又想大概是真人不露像,露像不真人吧。再等,还是一直没见周总出什么大成果。
好在自己还有个汇编群,把这逆向工程的成果往上面一发,果然起強烈反响,有互相讨论技术的,有向他请教的,几个小弟当场就冰天雪地**跪求:“绝影大哥,收我做徒弟吧!”
下面的人一奉承,绝影便真觉得自己是个大哥,想当初在学校的时候多多少少有同学来找他帮忙写程序,做课程设计,学校就是和公司不一样,进了公司特别是资本家的公司,你就不要指望能花一顿饭一桌酒来请谁帮你做CASE,这样的人老早就被BOSS开了,于是绝影的一⾝武功就给废了大半,再加上如今周总又对他的CASE不感趣兴,⾼处不胜寒啊,还是在群里总算能找到一点感觉。
自从做出个注册机来,先到群里宣传一通,又给BOSSLiu打个电话,然后管他认识的还是不认识的,都把看雪坛论那精华贴的地址发过去,其实包括BOSSLiu在內大部分人都还是看不懂的,即时能看懂,既然都懂了,还去看它⼲啥。不过出于礼貌,大家都还是或多或少说些让绝影觉得好听的话。
于是绝影觉得自己牛B起来。
于是在群里,他就理所当然摆出一副大哥模样,别人正在探讨什么什么,他凑过去说:“你这个,错误太明显了,应该如此如此,这般这般。”其实到底是不是如此这般,他多半也不知道,要是以前,他会说“可能是如此如此,这般这般”现在便成了“应该”
所以人啊就是这样,明明你摸遍全⾝就一块二⽑钱,但是你可以穿得周五正王,说话大大咧咧,举手投⾜一副一切尽在我掌握中的样,开口闭口就是中石化中石油国航移动连通的合同定下来了,接个电话就若无其事地平静地说:“没啥,我账上又多了两亿。”
你这么做,别人就真把你当大款了。说现在到处都是谁谁谁冒充什么大老板骗了多少多少工程款,骗了多少多少订金,说谁谁谁冒充富商骗了多少多少美女,这不是因为骗子有多聪明,是因为上当的人实在太笨。所以说世上是本没有大款的,忽悠得多了,也便成了大款;程序员本没什么⾼手的,吹捧的人多了,也便成了⾼手。
绝影也是如此,在群里被公认成牛人了,于是找他帮忙的,指点的人多了起来,成了公众人物,反而又有了庒力,本来技术就有限,吹牛吹到了无限,一次两次你跟别人说自己忙没时间,但这个借口破绽太大,总不可能永远都没时间,再说了,上群里吹牛的时间都有还不能菗出一点来帮别人解决实际问题?以前在学校的时候虽然也有人来找自己帮忙,但那时候毕竟自己还是有点真本事,解决那帮同学的问题还算游刃有余。现在群里的毕竟还有些是专业人士,你就不要指望自己还能忽悠住他们。
实在没办法,只好把做DAP的时间拿出来研究问题。
X-posure的注册机做出来,周总没再给绝影布置什么新任务,那意思就是继续做DAP。这也正戳到绝影的软肋上。做吧,进展起来难度实在太大,程序写得越多,代码越,今天写了,明天又找不着北;不做吧,公司和自己还没这个先例,一个CASE,居然做了几个月才说做不出来。再说了,比起逆向工程,这正向的开发能难到哪去,不存在什么解决不了的技术难题。
正如周总说的:DAP啊,是个长期的项目,慢慢来吧。倒是周总沉不住气了,有几次忍不住问:“怎么样啊?DAP进展如何了?预计还要多长时间啊?”
这个时候,绝影只有打着哈哈说:“嗯,一切都在计划中,但是估计还需要点时间,主要是人手不够啊。”
反正这DAP又不赶时间,正好拿它打个幌子做些自己的事情。
所以人活着累,自己技术菜,首先是被同行、老板看不起,挣的钱不多,还被老婆同学看不起。几个同行走到一起别人都兴⾼采烈讨论inlinehook,你揷一句:SSDT用什么函数获取?你自己都不好意思。
混了几年,好不容易技术⾼了点,也就是比上不⾜比下有余吧,顶级⾼手又不屑你,正如美女都不在街上逛一样,⾼手本不混群。美女去哪里了?多半在私家车上。⾼手去哪里了?多半在写程序。即使这样,菜鸟也有有求于你的时候,菜鸟毕竟是菜鸟,出招都不按常理,有些问题问得你自己都吃紧,但是没办法,谁叫你是程序员呢?谁叫你技术比人家⾼点呢?你就得想办法帮别人解决。
再混几年,终于到顶级⾼手的地步了,突然发现群里没法混了。你想一个资格的大学教授可能去幼儿园教小朋友吗?即使你给他8000块钱一个月,人家还不一定愿意去教,好钢得用在刀刃上啊。于是自己来研究问题。先前那两个阶段,都还有很多东西可以参考,群上啊,网上啊,什么问题都能找到点资料。现在自己到了这个阶段,啥事都只能靠自己,费尽心机研究点成果出来又不敢独自偷偷享用。谁叫你是⾼手呢,你总得经常发表点研究成果吧。这是什么精神?这就是新时代的雷锋精神。
在公司⼲私活还是相当冒险的,得眼、耳、手、脑并用。眼睛要盯住显示器,耳朵要听周总的动静,手要敲键盘,脑袋还得想问题。做逆向和写程序又不一样,写程序一般就开个VC,再把工程的Release目录打开以便运行,做逆向至少得开个SoftICE;一个或多个记事本,随时记录断点或者数据位置;一个目标exe目录,方便观察;一个W32DAS方便反汇编顺便计算RVA;一个UltraEdit查看文件十六进制;一个Exescope分析目标文件的资源和导⼊表。
在这种情况下,如果周总突然出现那是相当危险的。好在从周总办公室出来到绝影电脑上的视线并不好,于是再把VC打开,装⼊DAP的Workspace,随便找个比较大的cpp文件,定位到一个复杂的函数中,一有情况,力马切换。
在这种艰苦的条件下,绝影还是帮群里的人解决了一几个问题,最著名的要算浩方多开补丁。以前做PVT的解破,用CODEFS做的文件补丁,但觉得这样不慡,你给别人发布出去还得加上一个几M的exe文件,尽管现在硬盘做得越来越大,价格越来越便宜,但是绝影他们这些用汇编的还是常常比谁的文件生成得小,谁的程序效率⾼。
于是在摸索一下,琢磨着还是內存补丁好。反正罗云彬的书上都有现成的內存补丁的例子,不过就是几个调试API调用一下。要换成BOSSLiu肯定觉得这调试API难得不得了,其实不是它难,是他不用他,不管什么技术,只要你必须去用它,学起来也就不难了。
做逆向和写程序不一样,还有一点就是写程序你也能知道大概的进度,这个CASE有多大,要多久能做完,心中也有个眉目,就算最后忙了几个月没做出来,至少也写了一大堆代码,多多少少算是给后人做了点贡献,留了笔财富。逆向工程不一样,运气好了,灵感来了,断点位置对了,十分钟搞定。断点找不出来,任你雨打风吹在那做个十年八年什么也没有,成果为0。
星期一的例会,周总终于对绝影的进度有点不満意,他说:“小绝啊,这DAP都做了这么久了,还没个像样的东西拿出来。本来我计划在十月份做完,十一月我们还有个比较大的CASE要出差,你说说现在怎么办吧?”
绝影听了头上直冒汗,明显庒力就来了,幸好周总还不知道自己在公司做私活,要是知道,肯定比BOSSLiu的结果要惨。尽管BOSSLiu后来也觉得他现在的公司不错,比绝影他们公司好得多,但是人就是这样啊,呆在公司就好比跟妹妹谈恋爱,最后实在谈不下去了,但你对她说分手和她对你收分手却有本质的区别。分了收,尽管你后来又有了更好的妹妹,总之比她好,可是当初分手却是她说出来的,让人憋得慌。
于是他战战兢兢地说:“嗯。这次主要责任还是在我,在开始前对项目缺少正题的把握,错误地估计了形势,设计也没做好,做到现在确实是进退两难。”
说完,他等待着周总的严厉批评。等了几十秒,周总突然开口说:“算了,这也不能完全怪你。只要你能够面对失误有勇气承担责任,不错了。其实我也有一定责任,你经验还不⾜就放你一个人去负责。这事我们现在就不说了,先放一放,说下我们十一月的CASE,等今年完了,我们重新计划一下DAP的事情。”
绝影本来已经做好死的准备,没想到又没死成,这感觉就像临上刑场突然包大人的捕头策马奔来,⾼呼:“刀下留人!皇上有旨,刀下留人!”想起当初BOSSLiu离开公司,其实现在看来他犯的错误也并不严重,计算旷工半天也绝不至于到解雇的地步,问题就在他当初给自己旷工找了个借口。所以说,人还是要老实啊,至少自己的责任就要自己来承担。这么想,他忙顺着周总说:“周总说得对。往后还要周总不论在设计上和实施上都多给些意见。”
周总耸了耸鼻子缓缓说:“我们还是来说下十一月的CASE吧。其实也就是个KIPACS的安装。为什么说比较大呢,因为这次KIPACS是装在体检车上,这是第一次,所以这次我会亲自去。而且这次地方比较远,在南京。这次CASE参与的单位比较多,有汽车改装厂、DR硬件生产商、医院还有我们。时间也会比较长,预计会有一两周。我们这次去两到三个人,具体小绝和小张谁去,或者两个一起去我暂时还在考虑,我想问你们都有问题吗?”
张厂长赶忙说:“当然没问题。”
绝影考虑了一下说:“嗯。应该没问题。”
绝影这样说,其实是有问题的。今年KIPACS完成了十几家医院的安装,因为装得多了,周总也便不再亲自去现场,原则上说只需要一个售后过去安装培训了就行,可是绝影还是每次都得去,因为有好几次医院都临时需要调整软件界面,周总又匆匆忙忙把绝影调过去,算是吃了些苦头,所以后来每次都让绝影一起去,以备不测。
这一年CASE跑下来,绝影已经疲惫不堪,关键是他觉得一个程序员,就应该埋头在公司里面写代码,什么销售啊、安装啊、维护啊,那应该派其它的人去,程序员,不能掉价啊。
周总看了绝影一眼,仿佛看出了他的心事,他关切地问:“小绝,你有难处吗?”