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