一個(gè)少年電腦病毒作者的獨(dú)白
一個(gè)少年電腦病毒作者的獨(dú)白
90年代你的電腦經(jīng)常崩潰嗎?是的,很抱歉。下面是學(xué)習(xí)啦小編收集整理的一個(gè)少年電腦病毒作者的獨(dú)白,希望對大家有幫助~~
一個(gè)少年電腦病毒作者的獨(dú)白
我完成的兩個(gè)病毒Leprosy 和 Leprosy-B是針對MS-DOS電腦的。它們和因特網(wǎng)沒有關(guān)系,因?yàn)槟菚r(shí)還沒有?,F(xiàn)在它們就像天花一樣絕跡了。
我想寫出這些搞壞別人電腦的東西出來的原因有很多。首先,像我所說的,我那時(shí)才17歲。除了擺弄電腦,我的愛好還包括用煙花炸電話亭。可寫計(jì)算機(jī)病毒都是比較不錯(cuò)的選擇了。
但是最主要的原因是我當(dāng)時(shí)有些自大,在計(jì)算機(jī)地下組織,我更有存在感。我就是想要證明給其他用電腦的人看,即使是不懂怎么編程的笨蛋也能寫個(gè)病毒出來。
最佳時(shí)期
那是25年前,1990年,地下計(jì)算機(jī)世界還依賴于電子布告欄系統(tǒng)(BBSs)。那是一種社交聊天服務(wù),你需要通過調(diào)制解調(diào)器撥號登錄它。那時(shí)基本上各家各戶都是這樣。這意味著同一時(shí)間系統(tǒng)只能允許一個(gè)人登錄;只有付更多的錢才能增加電話線。
那時(shí)的計(jì)算機(jī)地下組織在很多方面都有所涉獵,而軟件盜版最吸引我。17歲的青年沒有什么錢買軟件。那時(shí)出現(xiàn)過一些偷接電話線的人,他們喜歡找法子打免費(fèi)的長途電話,有的人是為了通過電話交接毒品的事。隨后就出現(xiàn)了掛病毒的人。
寫個(gè)計(jì)算機(jī)病毒出來能有多難?這就是一小段真實(shí)的Leprosy源代碼
許多計(jì)算機(jī)地下組織擾煩我,因?yàn)樗坪跛麄儽憩F(xiàn)得就像你已經(jīng)做了什么顯得自己很與眾不同的事一樣。那時(shí)周圍都是“Leet”或“1337”,即“精英”,這樣的詞語出現(xiàn)。但是掛病毒的人最困擾我,因?yàn)樗麄兿矚g留著他們的小把戲和秘密比如他們自己發(fā)明了Rosetta Stone但計(jì)劃讓人們只能看看而已。
我的看法是,如果你從草稿一點(diǎn)一點(diǎn)完成了整個(gè)電子表格系統(tǒng),我會覺得這非常了不起。但是這些人都能做到的是寫程序來實(shí)現(xiàn)類似向人們窗口扔石頭這樣的事。如果每個(gè)人都能做到,我想我也能。
所以我這樣做了。
捉弄搞惡作劇的人
當(dāng)我遇到一個(gè)叫做AIDS的病毒(真夠粗魯)時(shí)我再也沒法忍受了。它的工作方式是找到你磁盤上的 .COM 文件(可執(zhí)行程序)并覆蓋它們,這樣下一次你試圖運(yùn)行它們時(shí)其實(shí)就再次運(yùn)行了病毒程序,以此類推。最終,你的整個(gè)系統(tǒng)都會因此崩潰。而且每次病毒騙你運(yùn)行它時(shí)就會打印出來一條消息來嘲笑你是多么愚蠢。
這就是它的所做所為!隱形地藏在那里并且當(dāng)你想要刪除它時(shí)重新安裝自己。它散布在你磁盤的各個(gè)角落等著你錯(cuò)誤地運(yùn)行它。
對我來說,這程序就像放屁坐墊一樣。最糟的是,這是用Borland的Turbo Pascal編寫的,所以它有14KB大。開始時(shí)它們沒這么大,但是當(dāng)它執(zhí)行后就變成14KB大了,這使得這些病毒很容易被發(fā)現(xiàn)。
而且是誰寫成嘲笑所有人是傻子的效果啊!
于是這就變成了我的工作。我想從頭開始重寫AIDS,只有我能做到。我用C語言寫,我會保持它在666字節(jié)以內(nèi)——一系列高明的選擇,因?yàn)槲沂莻€(gè)少年天才。
我決定給我的病毒起名叫做 Leprosy,這樣顯得酷一些,起碼比不經(jīng)大腦的 AIDS強(qiáng)。而且我腦海里還有另一個(gè)目標(biāo)。
不像有些寫病毒的人,他們總想讓人嫉妒他們已經(jīng)發(fā)明了車輪——在我看來這沒什么特別——我的病毒將會成為開源的軟件。所有人都有,包括源代碼的全部。
對不起,彼得諾頓
我的第一個(gè)問題是如何去構(gòu)造這個(gè)東西。那個(gè)時(shí)候我的電腦是一臺有著10MHz 的8088CPU和640KB RAM的IBM PC XT。不是一個(gè)偉大的機(jī)器,但更重要的是,我真的不知道如何編程。
我曾通過書籍和電腦雜志自學(xué)過C語言,但它是一種通用的,高層次的方式。我真的不是很了解PC或MS-DOS。以前我是一個(gè)蘋果迷。我們沒有C,我們甚至沒有中斷。
雖然如此,但是我有一個(gè)秘密武器,這是一本書,叫《彼得諾頓IBM PC程序員指南》。沒錯(cuò),“那本像粉紅色T恤一樣的書。”它告訴我我需要知道寫一個(gè)如同艾滋一樣的沉默但是惱人的病毒。
但我有一個(gè)額外的挑戰(zhàn)。我想這個(gè)程序是很小的,只有666個(gè)字節(jié)。我的C編譯器,當(dāng)時(shí)Borland Turbo C,雖然它允許你編寫各種存儲模型的程序,即使是最小的可執(zhí)行文件,有一定的開銷,因?yàn)閱哟a。當(dāng)他們開始時(shí),他們會分析命令行參數(shù)并做一些其他的任務(wù)。為了我的目的,我真的不需要這些功能。
信不信由你,在那些日子里,你可以經(jīng)常發(fā)現(xiàn)一個(gè)病毒,只是通過搜索它打印出來的文字。我解決了那個(gè)問題。
對我的問題的答案,就像在那些日子里的許多答案一樣,是以計(jì)算機(jī)雜志的形式出現(xiàn)的。具體而言,1989年12月26日那期PC雜志,它打印的匯編語言源代碼來啟動程序,可以讓你的程序的大小降到最低可能的最小值(第297頁)。我并沒有真正理解它,但它解決了我的問題,所以我用它。
我通過使用一堆內(nèi)聯(lián)匯編語言完成我的代碼,同樣可以使得可執(zhí)行程序變小。但這一切都很簡單,就像我想的一樣。并且我要把每一行代碼都添加上注釋,這樣新手程序員就可以知道我在做什么。
并且我在其中添加了一些功能使得麻風(fēng)比艾滋更牛逼(兄弟,這句話寫出來真奇怪)我使用了一個(gè)簡單的加密所有的文本字符串,使得它們很難通過文本編輯器分析。也不是嘲笑你,當(dāng)你運(yùn)行它,它拋出了一個(gè)貌似合法的系統(tǒng)錯(cuò)誤消息,在讓你再次嘗試運(yùn)行它的希望。它會感染一次超過一個(gè)文件。它知道如何在你的磁盤上跳轉(zhuǎn)目錄,一旦它用完了未受感染的文件。
如果你想知道我25年前的這一切,真的我不記得了,記得我曾提到過,這是一個(gè)公共領(lǐng)域的病毒?我多么希望“1337”病毒區(qū)的人可以嘲笑我,然后把這個(gè)軟件給所有人,所有像我一樣的小孩能夠去學(xué)習(xí)。每當(dāng)我寫完代碼,我在哪個(gè)概念的基礎(chǔ)上把代碼翻一番。
我寫了一個(gè)手冊:
爆發(fā)
懺悔時(shí)間:我從來沒有做過任何用麻風(fēng)病毒來做壞事。我曾經(jīng)感染過的唯一的人是我自己。因?yàn)楫吘?我必須運(yùn)行它,看看它是否工作,我沒有?所以我首先想到的是,“是的,它的工作!”我的想法是:“一分鐘后,我需要在和我的編譯器和我的所有工具同一目錄下運(yùn)行它。”
教訓(xùn)。有的時(shí)候他們來的太艱難。
但我不相信,當(dāng)我寫的時(shí)候我從來沒有任何惡意的意圖,。對我來說它已經(jīng)成為你的基本編程項(xiàng)目。我只是想看看我能不能把它拉下來。我沒有任何敵人,或我想傷害的人。我沒有任何理由把它強(qiáng)加給任何人。
所以我把它給了那些做過的人。
太多的Iron Maiden:由于某些原因,我的病毒只需要666的字節(jié)就能運(yùn)行,這對我來說很重要
長話短說,我給了一個(gè)家伙,我稱之為論壇上的人,他并不認(rèn)同我在“1337”社區(qū)中公認(rèn)高貴的概念。他認(rèn)為,麻風(fēng)是偉大的,事實(shí)上,沒有人讓它更好。他認(rèn)為他有一個(gè)0day病毒在他的手中,他認(rèn)為這意味著他有吹牛的權(quán)利。他所做的第一件事就是把一個(gè)受感染的文件上傳到一個(gè)論壇上。
傀儡
短期里,他得到了他想要的效果。那個(gè)論壇的管理者被他的上傳嚇壞了,尖叫著,喊著,揮舞著所有的旗幟。有一段時(shí)間我不知道誰更興奮,不知是那個(gè)上傳我病毒的人還是那個(gè)我從未聽過但是感染了我病毒的人。他們倆似乎都認(rèn)為他們很有名。
長期的,當(dāng)然,這意味著,在不到24小時(shí)的時(shí)間里世界上的每一個(gè)防病毒供應(yīng)商有一個(gè)簽名的麻風(fēng)病毒。因此,它是沒有用的。幾乎是在到達(dá)時(shí)死亡。源代碼和手冊都在那里供人閱讀和學(xué)習(xí),但是運(yùn)氣好的話可以通過它感染任何人。
所以我做了一個(gè)有責(zé)任感的人應(yīng)該做的事:寫了另外一個(gè)病毒程序。
執(zhí)行B計(jì)劃
自從我寫了原始的Leprosy之后我一直在學(xué)習(xí),并且我開始變得更加有野心。所以出現(xiàn)了Leprosy Strain B,我打算這樣命名它,這次沒用C語言編寫而是選擇了100%的匯編語言。這會給予我更多的控制權(quán),而且更容易控制在666節(jié)的大小之內(nèi)(666個(gè)字節(jié)對我來說仍然很重要)。
腦海中首先浮現(xiàn)的想法是原Leprosy可以被立即檢測到,因?yàn)樗鼘τ谒腥硕伎梢?。怎么辦呢?畢竟我不能不停地寫入這些東西。
我決定給病毒自身加密,即便是用比較簡單的方法。方法是產(chǎn)生一個(gè)隨機(jī)數(shù),并用它來XOR自己的值——一個(gè)可逆二進(jìn)制運(yùn)算,這將使得病毒難以識別,因?yàn)槊總€(gè)拷貝都有所不同了。
誠實(shí)地說,這個(gè)改變可能確實(shí)不算什么。但是,我想象即便是解密了代碼的一部分,其余的部分仍然能夠給反病毒程序帶來巨大的謎團(tuán)使得破解它變得困難。這是我作為一個(gè)嶄露頭角的程序員的一項(xiàng)很大的挑戰(zhàn),而且我因加入了這個(gè)功能而對自己信心倍增。
我需要一個(gè)愛好,所以我自學(xué)了8086匯編語言。也許我需要一個(gè)更好的愛好
我給這個(gè)功能起名叫“Cybernetic Mutation Technology?”,主要是為了鄙視一個(gè)叫Omen Technology的公司,這是一個(gè)使通信軟件變得重要的、同時(shí)也是一個(gè)愛好注冊商標(biāo)的公司。就像我說的,那段時(shí)間我有些太過自負(fù)了。
所以我寫了Leprosy-B,我發(fā)布了它,故事到這里變得有些詭異,因?yàn)榫褪窃谀菚r(shí)我對整個(gè)事情失去了興趣。誰知道什么分散了我編寫計(jì)算機(jī)病毒的注意力??植榔?工作?還是女孩?我輸給了時(shí)間,從那之后就沒做出什么了。
幾乎成名
從那以后我都沒留意過相關(guān)的消息,直到幾年之后,當(dāng)我的朋友Thad去讀大學(xué)了,他上網(wǎng)發(fā)現(xiàn)了一本關(guān)于計(jì)算機(jī)病毒的電子雜志叫做40HEX。
這本自稱為“墮落與骯臟的電子雜志”發(fā)行的目的在于發(fā)布計(jì)算機(jī)病毒的源代碼,這樣人們就能更加了解病毒了。簡而言之,這就是當(dāng)我剛開始寫Leprosy時(shí)希望病毒社區(qū)中發(fā)生的事。而你不會知道,第一個(gè)發(fā)布的源代碼就是Leprosy-B.的,也許是我啟發(fā)了他們,誰知道呢?
40HEX的編輯這樣寫道:“雖然這種病毒稱不上什么神奇的發(fā)明,但是這種簡單的加密方法被之后所有的病毒所使用。”
這句話讓我愣了兩三分鐘,這是真的嗎?我不知道其他的病毒用什么方法,因?yàn)槲耶?dāng)時(shí)沒辦法看看一個(gè)病毒的源代碼。至于 Leprosy-B,我只是夢想著通過使它每次看起來稍有不同讓我的病毒難以被發(fā)現(xiàn)。
雖然這其實(shí)沒什么必要。畢竟我的是開源的病毒。我已經(jīng)發(fā)布了源代碼。而且可以肯定的是,世界各地的黑客已經(jīng)由它發(fā)展出了幾十個(gè)甚至幾百個(gè)變種。
其中的一些添加了新的功能,一些甚至對個(gè)人計(jì)算機(jī)做了比我想象過的更為過分的事。一些則是改變了文本字符串,這樣病毒就能給女朋友,或者類似女朋友的人進(jìn)行留言,我想這還挺浪漫的。
虛度的青春
40HEX稱我的病毒是“不偉大的奇跡”并且它真的不是,并且從來也沒有打算是。已經(jīng)有病毒的時(shí)候,它會終止并駐留,感染硬盤的引導(dǎo)扇區(qū),當(dāng)你的列目錄是,它會通過其他各種隱身的把戲來偽裝自己。不過,我仍然認(rèn)為,它無法和那些寫出實(shí)際有用來幫助人們完成他們的工作、組織他們的生活的程序員們相提并論。
當(dāng)我在1990年寫病毒的時(shí)候,我從來沒有聽說過Richard Stallman,自由軟件基金會或者GNU通用公共許可(GPL)。我大概在我離開BBS并且全職上網(wǎng)的時(shí)候才了解到。
但幾年后,我的leprosy-b發(fā)布,與此同時(shí)這家芬蘭的家伙叫Linus Torvalds向互聯(lián)網(wǎng)上發(fā)布了Linux內(nèi)核0.12版本,它在GPL許可下,這意味著它是免費(fèi)軟件。GNU項(xiàng)目已經(jīng)有大量的免費(fèi)工具,沿著這個(gè)內(nèi)核,使之成為一個(gè)完整的UNIX操作系統(tǒng),這樣你可以免費(fèi)。在那之后,世界開始變的很快。
我錯(cuò)過了我的機(jī)會可以成為世界一個(gè)好的和有用的一部分在短短幾年中。相反,我是一個(gè)網(wǎng)絡(luò)破壞者。但諷刺的是,當(dāng)我開始做了一個(gè)讓人不知道的公共領(lǐng)域病毒,在那里,代碼將是免費(fèi)的,可以提供給任何想要它的人,我有一個(gè)正確的想法。
那么,一個(gè)人如何浪費(fèi)了他的少年歲月并向其他人的電腦中扔石頭占據(jù)了他的成年生活的時(shí)間?我想這是顯而易見的。他為The Register寫下了上面這些文字。
我完成的兩個(gè)病毒Leprosy 和 Leprosy-B是針對MS-DOS電腦的。它們和因特網(wǎng)沒有關(guān)系,因?yàn)槟菚r(shí)還沒有。現(xiàn)在它們就像天花一樣絕跡了。
電腦病毒相關(guān)文章:
4.電腦病毒知識