- x86匯編與逆向工程:軟件破解與防護的藝術
- (美)斯蒂芬妮·多馬斯 (美)克里斯托弗·多馬斯
- 3062字
- 2025-02-10 16:05:36
前言
軟件逆向工程和破解是歷史悠久且內容豐富的技術領域。幾十年來,軟件開發者一直努力在其應用程序中構筑防御措施,以保護知識產權,避免對程序代碼的未授權修改。幾乎從逆向工程師開始為了興趣或盈利而研究和改動代碼的那一刻起,軟件破解的技藝就存在了。
在詳細探討逆向工程的工作原理之前,理解這些技術的背景非常重要。下面將介紹你能從本書中獲得什么,同時深入講解軟件逆向工程和破解的歷史背景及法律相關的考量。
本書目標讀者
本書是給所有想探索、理解并修改封閉源代碼軟件的人準備的,無論是安全領域的專業人員還是充滿熱情的業余愛好者。本書將引領好奇的讀者深入軟件破解和計算機的核心,探索其運作機制。深入學習x86計算機的運行原理,不僅對軟件逆向工程和破解來說至關重要,還能幫助讀者在代碼優化、效率提高、調試、編譯器設置調整以及芯片選擇等方面成為更出色的開發者。書中還將詳細介紹軟件破解的過程,讓讀者了解真實世界中破解者所使用的工具和技術,并通過實際動手破解真實應用程序的實驗來驗證學到的知識。此外,書中也會涉及防御策略,幫助讀者理解如何對抗軟件破解攻擊。
通過掌握攻擊與防御技術,讀者可以成為出色的軟件破解專家或軟件防護專家。
本書值得期待的內容
本書主要基于逆向工程的三大核心原則:
? 沒有破解不了的軟件。
? 以提高速度為進攻目標。
? 以放慢速度為防守目標。
基于這種理念,人們可以針對任何軟件實施逆向工程,以揭示其秘密,繞過其保護機制。問題只在于時間的長短。
就像網絡安全的其他領域一樣,攻擊方向和防御方向的逆向工程師都能從一套類似的技能中受益。本書將介紹以下三種相互關聯的技能:
? 逆向工程:一種拆解軟件并解析其運作方式的過程。
? 破解:在逆向工程的基礎上,通過操控程序的內部機制讓其執行原本不打算執行的操作。
? 防御:盡管所有的軟件都可以被破解,但防御措施可以讓破解程序的過程變得更加困難和耗時。
不理解逆向工程和破解,防御者就無法制定有效的保護措施。另外,如果攻擊者能夠理解程序的運作方式并進行操作,他們就能更有效地繞過并戰勝這些保護措施。
本書結構
本書是根據這三種核心技能來組織的。結構如下:

(續)

實踐經驗和實驗
學習逆向工程和軟件破解最好的方式就是進行實踐。因此,本書將包含幾個動手實驗,以演示描述的概念。
本書的目標不是教授一套特定的工具和技術。雖然我們的重點是運行在Windows上的x86軟件,但很多方法和技術也可以應用到其他平臺上。我們會盡量展示多種工具,包括開源軟件、免費軟件、共享軟件,以及商業解決方案。理解哪些工具可用,以及它們的優勢和劣勢之后,就能更有效地選擇適合任務的工具。
我們的動手實驗和練習將針對不同目標進行逆向工程與破解,這些目標包括:
? 真實軟件:一些練習會使用精選的真實軟件,以避免侵犯版權。
? 專為本書編寫的軟件:為了闡述用現實世界的例子難以展示的概念而專門為本書編寫的軟件。
? 破解練習程序(crackme):這是由破解者開發的軟件,用于闡述概念或挑戰他人。
隨書文件下載
本書提到了一些額外的文件,如實驗或工具對應的文件。這些文件可以從https://github.com/DazzleCatDuo/X86-SOFTWARE-REVERSE-ENGINEERING-CRACKING-AND-COUNTER-MEASURES下載。
歷史
在深入了解破解和逆向工程的細節之前,了解其歷史是非常有用的。軟件保護措施以及用來克服它們的技術和方法已經演變了幾十年。
第一個軟件保護措施
第一個軟件版權保護措施出現在20世紀70年代。這個領域的一些早期行動者如下:
? AppleⅡ:AppleⅡ引入了專有的磁盤驅動器,這類磁盤驅動器可以在半軌道進行寫入,允許寫入額外的環,也允許錯開并重疊扇區。這樣做的目的是讓非Apple機器和不會讀寫這些奇特偏移位置的軟件無法使用這些磁盤。
? Atari 800:Atari 800系統會有意在其磁盤中包含壞的扇區,并嘗試加載這些扇區。如果這些加載操作不返回“壞扇區”錯誤,那么軟件就知道這不是一個有效的磁盤,并會停止執行。
? Commodore 64:正版的Commodore 64軟件僅通過只讀磁盤進行分發。這種軟件會嘗試覆蓋磁盤,如果成功了,它就知道這張磁盤是假冒的。
所有這些保護措施都依賴于軟件的異常行為,比如使用無效的內存或試圖覆蓋程序自己的代碼。要打破這些保護措施,就需要理解軟件的工作原理。
破解和逆向工程的崛起
破解和逆向工程興起于20世紀80年代。然而,早期的破解者并不是為了錢。破解是一場比賽,比的是誰可以最快找出并繞過軟件的保護措施。
在接下來的幾十年中,逆向工程和破解領域不斷發展。以下是逆向工程歷史上的一些關鍵日期。
1987年 Fairlight的成立可追溯到1987年,由Bacchus創建,它是最早的運營團隊之一。21世紀初,在美國聯邦調查局(FBI)的打擊下,Fairlight逐漸嶄露頭角。若想了解更多歷史詳情,請訪問www.fairlight.to和csdb.dk網站。
1990年 Elliot J. Chikofsky和James H. Cross II定義了逆向工程:“逆向工程是分析目標系統,識別出系統的各個組成部分及各部分之間的相互關系,并以其他形式或更高層次的抽象來表示該系統的過程。”[1]
1997年 Old Red Cracker(網絡昵稱+ORC)創立了基于互聯網的高級破解大學(+HCU),使每個人都可以學習破解知識。+ORC在網上發布了“如何破解”的教程,并撰寫了學術論文。+HCU的學生都使用以+開頭的網絡昵稱。
1997—2009年 “破解圈”(warez scene)嶄露頭角,各團體競相搶先發布受版權保護的材料。內部人士(也被稱為“供應者”)為他們的團體提供早期訪問權限,“破解者”(cracker)會打破這些保護措施,而“傳遞者”(courier)將破解軟件分發到FTP站點。2003年—2009年,大約有3164個活躍團體在“圈內”競爭,他們主要是為了榮譽和吹噓,而非金錢。
2004年 美國聯邦調查局等開始對“破解圈”進行突襲。其中,“霹靂行動”(Operation Fastlink, 2004)導致60名破解圈成員被定罪,“關閉網站行動”(Operation Site Down, 2005)成功打擊了25個破解團體。
軟件保護措施和破解者之間的競賽在持續進行,而逆向工程技能是雙方都無法或缺的技能。破解者需要理解程序的運作方式,以便更好地操縱它并繞過防御措施。而在防守方面,理解最新的破解技術至關重要,這有助于我們開發能夠保護知識產權和其他敏感數據的防御措施。
法律
“實踐是最好的學習的方式”,這就是為什么本書包含了一些真實軟件、專為本書編寫的軟件和破解練習程序方面的實驗和實踐。我們不是律師,如果有人有版權疑慮,請咨詢律師。我們推薦電子前沿基金會(Electronic Frontier Foundation,網址為www.eff.org)。在第15章中,我們將討論有關法律的話題,因為我們覺得每個人都需要理解影響這個領域的美國法律。主要有兩部法律需要關注:《版權法》(Copyright Act)和《數字千年版權法》(Digital Millennium Copyright Act, DMCA)。
《版權法》的“合理使用”條款(Fair Use Clause)規定,當逆向工程用于“批評、評論、新聞報道、教學(包括課堂使用的多份復印件)、學術或研究……”目的時,屬于“合理使用”。這一例外情況需要平衡“對版權作品潛在市場或價值的影響”。本質上,如果不分享或銷售破解軟件,那么用于教育目的的逆向工程就是合法的。
2016年10月,DMCA還增加了一條關于善意安全研究的例外規定。該規定指出:“僅為了善意測試而訪問計算機程序……這樣的活動應在設計好的控制環境中進行,以避免對個人或公眾造成傷害……并且不能用于版權侵權的目的。”
本書中檢視并用于練習的軟件都是精心挑選的,可在不違反“合理使用”條款和DMCA免責條款下使用。如果你打算對軟件進行逆向工程和破解,對于除自我學習以外的其他目的,應該先咨詢一下律師。逆向工程的法律考量也將在后面的章節中進行更詳細的探討。
軟件逆向工程和破解有著豐富的歷史,這些技能既能用于攻擊也能用于防御。然而,理解這些學科相關的法律并確保活動落在善意測試和“合理使用”免責條款范圍內是很重要的。
本書的目的是為讀者提供一套強大的軟件逆向工程與破解的技能和工具。本書將從基礎內容開始,逐步深入軟件逆向工程和破解的各個環節,一直到一些高級攻防技術。
[1] “Reverse Engineering and Design Recovery:A Taxonomy.”IEEE Software, Vol. 7, Issue 1, Jan 1990.