暗香微漾
●接口設(shè)計(jì)。由于互操作性,逆向工程被用來找出系統(tǒng)之間的協(xié)作協(xié)議?!褴娛禄蛏虡I(yè)機(jī)密。竊取敵人或競爭對(duì)手的最新研究或產(chǎn)品原型。●改善文檔。當(dāng)原有的文檔有不充分處,又當(dāng)系統(tǒng)被更新而原設(shè)計(jì)人員不在時(shí),逆向工程被用來獲取所需數(shù)據(jù),以補(bǔ)充說明或了解系統(tǒng)的最新狀態(tài)?!褴浖?jí)或更新。出于功能、合規(guī)、安全等需求更改,逆向工程被用來了解現(xiàn)有或遺留軟件系統(tǒng),以評(píng)估更新或移植系統(tǒng)所需的工作。
美食界女王
你好,不知道你現(xiàn)在從事哪一塊,之前我做項(xiàng)目的時(shí)候,我有用的逆向。你想這款的話,只是偶爾可以用一下。如果你要把它用到正當(dāng)?shù)牡胤?。有時(shí)間的話,有意向的話,可以再深入了解。
Pocky小豆丁
“搞定了嗎?”,這可能是在Immunity公司出現(xiàn)頻率最高的一句話了。你也許會(huì)在類似以下的場(chǎng)景中聽到這樣的發(fā)問:“我正要給Immunity Debugger開發(fā)一個(gè)新的ELF加載器”,片刻停頓之后,“搞定了嗎?”或者,“我剛發(fā)現(xiàn)了IE瀏覽器的一個(gè)Bug!”又一片刻的沉寂之后,“那個(gè)漏洞利用程序搞定了嗎?”在日常的安全項(xiàng)目中我們幾乎無時(shí)無刻地須要?jiǎng)?chuàng)建或者改寫自己的安全工具,并在這些頻繁的活動(dòng)中始終保持高速的開發(fā)節(jié)奏,這使得Python逐漸成為了這個(gè)舞臺(tái)上的明星。你可以在下一個(gè)安全項(xiàng)目中選擇Python作為自己的開發(fā)工具,也許你將會(huì)用它來創(chuàng)建一個(gè)特殊的反編譯器或者開發(fā)一個(gè)完整的調(diào)試器。當(dāng)我走進(jìn)位于南邁阿密海灘的Ace Hardware(美國的一家連鎖五金店),沿著擺放著螺絲刀的通道走過時(shí),常常會(huì)感到目眩。你會(huì)看到接近50多種不同規(guī)格的螺絲刀以整齊的順序陳列在貨架上。每一種規(guī)格的螺絲刀都與緊鄰的螺絲刀有著微小卻又十分重要的區(qū)別。我不是一個(gè)合格的修理能手,因此無法準(zhǔn)確地說出每一種螺絲刀最為理想的使用場(chǎng)合,但是我很確信類似的情況同樣適用于我們的安全工具軟件。尤其是當(dāng)你在對(duì)Web類型或者其他類型的高度定制化的應(yīng)用程序進(jìn)行安全審計(jì)時(shí),你會(huì)發(fā)現(xiàn)每一次的審計(jì)任務(wù)都會(huì)需要一把特殊的“螺絲刀”來解決問題。要知道能夠及時(shí)地拼湊出一些類似SQL API函數(shù)鉤子之類的安全小工具已經(jīng)不止一次地拯救了Immunity的工作團(tuán)隊(duì)。當(dāng)然這些工具并不僅僅適用于安全審計(jì)任務(wù),一旦你能夠使用鉤子函數(shù)對(duì)SQL API進(jìn)行攔截,你就可以輕易地編寫出一個(gè)工具用于實(shí)時(shí)檢測(cè)可疑的異常SQL查詢,并及時(shí)向你的客戶公司提供修復(fù)方案,以抵御那些來自頑固黑客們的攻擊。眾所周知,要讓你的每一個(gè)安全研究人員真正成為團(tuán)隊(duì)的一部分是一件棘手的事情。很多安全研究人員無論在面對(duì)何種類型的問題時(shí),都懷揣著白手起家式的過度熱情,企圖將需要借助的工具庫完全重寫。比如說Immunity發(fā)現(xiàn)了某個(gè)SSL Daemon的一個(gè)安全漏洞,接下來很有可能發(fā)生的一件事就是,你突然發(fā)現(xiàn)你的某個(gè)安全研究人員居然正在試圖從頭開始編寫一個(gè)SSL客戶端。而他們對(duì)此通常給出的解釋是“我能找到的SSL庫都丑陋不堪”。你需要盡力避免這種情況發(fā)生。事實(shí)情況并不是現(xiàn)有的SSL庫丑陋不堪——它只是沒有按照某個(gè)安全研究人員的特別偏好風(fēng)格來設(shè)計(jì)而已。而我們真正需要做的是能夠深入分析大量的現(xiàn)有代碼,快速地發(fā)現(xiàn)問題所在,并對(duì)其進(jìn)行修改以適應(yīng)自身所需,這才是及時(shí)地搭建出一個(gè)可用的SSL庫,并用其開發(fā)出一個(gè)尚處于保鮮期內(nèi)的漏洞利用程序的關(guān)鍵。而要做到這一點(diǎn),你需要使你的安全研究員們能夠像一個(gè)真正的團(tuán)隊(duì)一樣去工作。一個(gè)熟練掌握了Python的安全研究人員就有了一個(gè)強(qiáng)大的武器,也許就像那些掌握了Ruby的安全研究人員一樣。然而Python真正的與眾不同之處顯現(xiàn)在那些Python狂熱分子們協(xié)同工作時(shí),他們將猶如一個(gè)高速運(yùn)轉(zhuǎn)的超個(gè)體①一樣戰(zhàn)斗力驚人。正如你家廚房中的螞蟻大軍一樣,當(dāng)它們的數(shù)量足夠組成一只大烏賊時(shí),要?dú)⑺浪鼈儗⒈葰⑺酪恢粸踬\棘手得多。而這正是本書極力告訴你的一個(gè)事實(shí)。你也許已經(jīng)為自己想做的事找到了一些工具。你也許會(huì)問:“我已經(jīng)有了一套Visual Studio,里面附帶了一個(gè)調(diào)試器,為什么還要去編寫一個(gè)供自己專用的調(diào)試器?!被蛘摺癢inDbg不是有一個(gè)插件接口了嗎?”答案是肯定的。WinDbg的確提供了插件接口,你可以通過那些API慢慢地拼湊出一些有用的東西。直到某一天你很可能又會(huì)說:“Heck,如果我能和5000個(gè)WinDbg使用者互聯(lián)該有多好啊,這樣我們就可以互通各自的調(diào)試結(jié)果了”。如果你從一開始就選擇了Python,你只要寫 100 行左右的代碼就可以構(gòu)建一個(gè)XML-RPC客戶端與服務(wù)端,接下來整個(gè)團(tuán)隊(duì)可以同步地進(jìn)行工作并使每個(gè)人及時(shí)地享有他人的成果和信息。黑客絕不等同于逆向工程——你的目標(biāo)并不是還原出整個(gè)應(yīng)用程序的源碼。你的目標(biāo)是對(duì)軟件系統(tǒng)獲得比系統(tǒng)開發(fā)者自身更加深入的理解。一旦你能做到這一點(diǎn),無論目標(biāo)以何種形式出現(xiàn),你將最終成功地滲透它,獲得炙手可熱的漏洞利用(exploit)。這也意味著你需要成為可視化、遠(yuǎn)程同步、圖論、線性方程求解、靜態(tài)分析技術(shù)以及其他很多方面的專家。因此,Immunity決定將這些都標(biāo)準(zhǔn)化實(shí)現(xiàn)在Python平臺(tái)上,這樣一旦我們編寫了一個(gè)圖論算法,這個(gè)算法將在我們所有的工具中通用。在第6章中,Justin向你演示了如何使用一個(gè)鉤子竊取Firefox瀏覽器中輸入的用戶名與密碼。這正是一個(gè)惡意軟件作者所做的事——從之前的一些相關(guān)報(bào)道中可以看出,惡意軟件作者通常使用一些更為高級(jí)語言來編寫此類程序。然而你同樣可以使用Python在15分鐘內(nèi)編寫出一個(gè)樣例程序,用于向你的開發(fā)人員演示,讓他們明白他們對(duì)自己的產(chǎn)品所做的安全假設(shè)并不成立?,F(xiàn)在的一些軟件公司出于他們所聲稱的安全考慮,在保護(hù)軟件內(nèi)部數(shù)據(jù)方面的投資花費(fèi)不菲。而實(shí)際上他們所做的往往只是實(shí)現(xiàn)了一些版權(quán)保護(hù)和數(shù)字版權(quán)管理機(jī)制而已。這正是本書試圖教你的東西:快速創(chuàng)建安全工具的能力。你應(yīng)當(dāng)能夠借助這種能力為你個(gè)人或者整個(gè)團(tuán)隊(duì)帶來成功。而這也是安全工具開發(fā)的未來:快速實(shí)現(xiàn)、快速修改,以及快速互聯(lián)。我想,最后你唯一剩下的問題也許就是:“搞定了嗎?”Immunity Ine的創(chuàng)始人兼CTO Dave Aitel2009年2月于美國佛羅里達(dá)州,邁阿密海灘致 謝我想借此機(jī)會(huì)感謝我的家人,對(duì)于他們?cè)谧珜懕緯^程中所表現(xiàn)出來的理解和支持。感謝我的四個(gè)可愛的孩子:Emily、Carter、Cohen和Brady,是你們給了爸爸完成此書的理由,我為擁有你們而感到無比幸福。我還要為我的姐姐和兄弟們?cè)谶@個(gè)過程中所給予的鼓勵(lì)說一聲謝謝,你們自己都曾經(jīng)歷過著書立作的嚴(yán)苛和艱辛,擁有你們這些對(duì)技術(shù)作品出版感同身受的人真是受益匪淺——我愛你們。我還想對(duì)我的爸爸說,你的幽默感幫助我度過了那些難以執(zhí)筆為繼的日子——我愛你,老爸,不要停止讓你周圍的人發(fā)出笑聲。多虧了一路上眾多優(yōu)秀的安全研究人員的幫助才使得本書得以羽翼漸豐,他們是:Jared DeMott、Pedram Amini、Cody Pierce、Thomas Heller(傳說中的無敵Python男)以及Charlie Miller——我欠你們大伙一個(gè)大大的感謝。至于Immunity團(tuán)隊(duì),毫無疑問,你們一直以來大度地支持著我來撰寫此書,正是得益于你們的幫助,我不僅僅成長為一個(gè)Python小子,同時(shí)更成為了一名真正的開發(fā)人員和安全技術(shù)研究者。Nico和Dami,抽出了額外的時(shí)間來幫助我解決問題,對(duì)此表示不勝感激。Dave Aitel,我的技術(shù)編輯,始終驅(qū)使著本書的進(jìn)度直至完成,并確保本書的邏輯性與可讀性,在此致以莫大的感謝。對(duì)于另一個(gè)Dave, Dave Falloon,非常感謝你為我校閱此書,對(duì)于那些讓我自己都哭笑不得的錯(cuò)誤,對(duì)于你在CanSecWest大會(huì)上拯救了本人的筆記本電腦的英雄行徑,以及你巫師一般神奇的網(wǎng)絡(luò)知識(shí),都令我印象深刻。最后,是那些總是被放在最后感謝的家伙們——No Starch出版團(tuán)隊(duì)。Tyler與我經(jīng)歷了本書的整個(gè)出版過程(相信我,Tyler將是你遇到的最有耐心的家伙),Bill將鼓勵(lì)聲連同那個(gè)可愛的印有Perl小抄的咖啡杯贈(zèng)予了我。Megan在本書創(chuàng)作的尾聲階段為我減輕了眾多的麻煩,還有其他為出版本書而工作在幕后的團(tuán)隊(duì)成員——謝謝你們!。我對(duì)你們?yōu)槲宜龅拿恳患鲁錆M感激?,F(xiàn)在這篇致謝詞的篇幅快要跟格萊美的獲獎(jiǎng)感言有一拼了,最后再次說一聲感謝給所有那些幫助過我,卻可能被我忘記提及的朋友們——你們清楚自己之于本書的意義。Justin Seitz
優(yōu)質(zhì)工程師考試問答知識(shí)庫