好文,轉(zhuǎn)了
逆向工程不是炫耀者用來裝B的工具
By Azy
逆向工程不是炫耀者用來裝B的工具,因?yàn)槟嫦蚬こ虖膩砭褪莻€(gè)腦力活加體力活,同時(shí)也是對(duì)逆向者身心的極大摧殘和對(duì)意志力的嚴(yán)峻考驗(yàn)。它需要時(shí)間,更需要毅力,任何半途而廢的舉動(dòng)都會(huì)導(dǎo)致前功盡棄的結(jié)果。而這些成本我相信都是那些想要炫耀一時(shí)的浮躁者所不肯付出的。
如果說反匯編只是功力不足的浮躁者或者是對(duì)解剖對(duì)象的不屑者走馬觀花式的分析舉動(dòng),那么逆向工程就是長期浸淫于此的心靜者和對(duì)二進(jìn)制強(qiáng)烈好奇的探險(xiǎn)者令人景仰的還原行為。而對(duì)于逆向者本人來講,這更像是一次艱苦的旅行,但途中卻不乏美麗的風(fēng)景。它是一種大部分時(shí)間讓人處于崩潰的邊緣,但偶爾會(huì)讓你迸發(fā)出發(fā)現(xiàn)新大陸的興奮而能有資本和動(dòng)力繼續(xù)崩潰下去的這樣一個(gè)東西。
真正的逆向者知道,僅僅靠激情是不能過活的。只有激情,遠(yuǎn)遠(yuǎn)不夠,因?yàn)樗淦淞恐皇且粋€(gè)必要而非充分條件。
人們對(duì)于研究人員和科學(xué)家的最最基本的尊崇應(yīng)該源自他們工作的腦力復(fù)雜度與社會(huì)價(jià)值性。即首先,他們做的這件事不是誰都可以做,需要有一定的知識(shí)積累和智力基礎(chǔ);其次,他們的工作應(yīng)該是有價(jià)值,有意義的,而不是將“認(rèn)識(shí)世界的目的在于改造世界”的理論拋在腦后。當(dāng)scz將自己逆向還原出來的ntdll中有關(guān)堆函數(shù)的資料公開時(shí),得到了無數(shù)人的頂禮膜拜。因?yàn)檫@件工作一有技術(shù)含量二有實(shí)際價(jià)值,技術(shù)含量在于windows堆管理機(jī)制系統(tǒng)與算法上的復(fù)雜,實(shí)際價(jià)值在于為漏洞研究人員提供了絕佳的堆溢出理論指導(dǎo)與技術(shù)支持。
但是現(xiàn)在,我卻發(fā)現(xiàn)真正有意義的逆向越來越少。我無法評(píng)論那些工作于地下的低調(diào)逆向者,或許他們所做的工作極有技術(shù)含量與價(jià)值,我所能看到的是充斥在周圍的一些不明就里的逆向,我不知道這到底有什么意義。
我并不反對(duì)逆向與反匯編,確實(shí)也需要有人來公開軟件內(nèi)部的機(jī)制,尤其是在病毒研究領(lǐng)域,反匯編和逆向工程更是安全人員的飯碗與家常便飯,因?yàn)檫@是他們的工作。
但對(duì)目前將安全技術(shù)當(dāng)作業(yè)余愛好并有意朝此方向發(fā)展的人來講,是不是應(yīng)該思考追求一種更加有價(jià)值的逆向,而不是簡單粗糙的涂改一下IDB就自信滿滿地將其上傳并期待高倍的頁面訪問與別人的贊美之詞。
或許有很多初學(xué)者或是已經(jīng)入門了的人都沒有想過:為什么要反匯編,為什么要逆向。他們?yōu)榱四嫦蚨鴴仐壛艘恍└旧系臇|西。究其原因,或者稱做我個(gè)人主觀上的猥鎖猜測:逆向讓他們處于一種虛幻的"編碼安全感"之中。他們可以意淫地說:源代碼指定是我的了,只是逆不逆的問題。因?yàn)橐粋€(gè)bin就放在那兒,所有的數(shù)據(jù)結(jié)構(gòu)和算法流程都已經(jīng)組織好,所要做的就是去讀懂它,根本不用考慮在編程過程中的一切細(xì)節(jié),也不用去擔(dān)憂任何項(xiàng)目進(jìn)度,而實(shí)際上這是一種心理上可怕的自我欺騙。
所以,被腦力與體力勞動(dòng)以及高技術(shù)含量等光環(huán)所縈繞的逆向工程對(duì)于初學(xué)者而言有時(shí)更像一劑毒藥,吞噬與消化了他們的創(chuàng)造力與想象力,它讓人變懶,讓人產(chǎn)生隋性,讓人產(chǎn)生依賴。在強(qiáng)烈地滿足了受害人的好奇心與獵奇欲的同時(shí)也將他們無形地匡入一個(gè)巨大的方框之中。而這個(gè)框的巨大危害就在于它使人們明白這祥一個(gè)事實(shí):原來高手是這樣寫的,只有這樣做才是正確的流程,我也要這樣做。
學(xué)習(xí)是一個(gè)過程,但當(dāng)這個(gè)過程通過一些所謂的捷徑跨越了數(shù)個(gè)階段而最終到達(dá)目的地的時(shí)候我不知道會(huì)不會(huì)生成畸形的產(chǎn)物,也許處于這個(gè)過程的人根本就走錯(cuò)了路,迷失了自己,忘了自己原來要做什么而只是在盲目的跟風(fēng),研究別人的東西而丟了自己的核心競爭力,并且天真的認(rèn)為這些逆出來的產(chǎn)物只是對(duì)自己才是透明的,殊不知它的創(chuàng)造者只是不忍心揭穿你給你留一點(diǎn)面子罷了。也許在那些受益于你成果的人面前你是一個(gè)或許還比較偉大的"解密者",但在原始作者看來你只是一個(gè)猥鎖的"偷窺者"。他把你往好了想會(huì)定位為一種公開與共享的行為,往壞了想那就是你隨時(shí)準(zhǔn)備PQ他的代碼。
無知并不可怕,可怕的是我們丟掉了想象力和創(chuàng)造力并虔誠地跪拜于一個(gè)死板的知識(shí)框架內(nèi)高呼“萬歲”。我們應(yīng)該意識(shí)到:思想比技術(shù)更加重要。
所以,對(duì)于初學(xué)者來說,停掉那些無意義的反匯編與逆向吧,或者讓它再上一個(gè)層次。創(chuàng)新比重復(fù)更有意義。逆向做為一種借鑒更加合適而不必成為學(xué)習(xí)或創(chuàng)新的必須手段。
如果可以將反匯編與逆向工程上升到發(fā)掘漏洞的高度,那么你就不會(huì)僅僅滿足于了解程序的內(nèi)部工作機(jī)制。因?yàn)槟阌辛烁叩哪繕?biāo):subversion。即使發(fā)現(xiàn)不了什么0day,你也會(huì)發(fā)現(xiàn)原來的那份一發(fā)現(xiàn)冰山一角就迫不及待地想將其公開發(fā)表的浮躁情緒已蕩然無存。
如果將反匯編與逆向工程上升到把它當(dāng)作自己產(chǎn)品級(jí)工程的一次借鑒,并且你試圖有所改進(jìn)與創(chuàng)新的話,那么可以高興地說:創(chuàng)新的靈感即將光顧你的大腦。
當(dāng)逆向者完完本本地將幾十K甚至上百K的二進(jìn)制還原成形象化的高級(jí)代碼并編譯通過時(shí),他可以在松一口氣的同時(shí)大呼過癮,因?yàn)樗瓿闪艘淮涡逕挘αΦ玫搅颂嵘踔料蚨U宗的境界又近了一步。但是他更多思考的是可以汲取到什么,下一步該做什么,如何寫出更加高效和優(yōu)美的代碼,如何創(chuàng)新,而不是將逆出來的代碼原封不動(dòng)地安在自己的bin里,抑或是整天被別人寫的bin淹沒在無盡的逆向之中。如果是這樣的話,那么他或許只能算一個(gè)廉價(jià)的二次體力勞動(dòng)者,而這個(gè)工人卻有被F5代替的趨勢。
從某種程度講,浮躁者炫耀者或者是初學(xué)者都應(yīng)該遠(yuǎn)離逆向工程,因?yàn)樗蛟S只會(huì)讓你體驗(yàn)到一時(shí)的自我成就與滿足感,但卻會(huì)養(yǎng)成一種依賴性的思維方式,腦子里產(chǎn)生一種“別人有bin我就逆”的懶惰思想。但是不久你就會(huì)發(fā)現(xiàn),往日的激情早已不在,始終跟在別人的后面跑卻距離別人越來越遠(yuǎn),因?yàn)椴蛔⒅鼗A(chǔ)積累和知識(shí)體系建立而盲目追求奇技淫巧的你已經(jīng)到達(dá)進(jìn)步的頂點(diǎn)。
逆向技術(shù)不是炫耀者用來裝B的工具,這或許對(duì)初學(xué)者也是一個(gè)提醒:打好根基,動(dòng)手實(shí)踐與思考積累必不可少,但創(chuàng)新才是你與別人區(qū)別脫穎而出的策略。逆向技術(shù)不是萬金油,也不是進(jìn)步的籌碼。
以上所寫僅僅是本人的一面之詞。如果很多觀點(diǎn)你都不贊同,那就權(quán)當(dāng)我在扯淡,在意淫,在裝B,在自娛自樂了。
posted on 2008-05-10 12:52
ViskerWong 閱讀(468)
評(píng)論(1) 編輯 收藏 引用