逆向分析,計算機世界中的九陰真經

2021-01-06 36kr

逆向工程

你玩遊戲麼?單機遊戲,你是否使用過遊戲補丁、修改器?

逆向工程,又稱逆向技術,是一種產品設計技術再現過程,即對一項目標產品進行逆向分析及研究,從而演繹並得出該產品的處理流程、組織結構、功能特性及技術規格等設計要素,以製作出功能相近,但又不完全一樣的產品。逆向工程源於商業及軍事領域中的硬體分析。其主要目的是在不能輕易獲得必要的生產信息的情況下,直接從成品分析,推導出產品的設計原理。

而軟體逆向工程,隨著計算機技術在各個領域的廣泛應用,特別是軟體開發技術的迅猛發展,基於某個軟體,以反彙編閱讀源碼的方式去推斷其數據結構、體系結構和程序設計信息成為軟體逆向工程技術關注的主要對象。軟體逆向技術的目的是用來研究和學習先進的技術,特別是當手裡沒有合適的文檔資料,而你又很需要實現某個軟體的功能的時候。也正因為這樣,很多軟體為了壟斷技術,在軟體安裝之前,要求用戶同意不去逆向研究。

而,這是重點:逆向工程的實施過程是多領域、多學科的協同過程。

我們拿它來講解

首先,我聲明一點,本文一切僅為技術探討,並不包含任何攻擊性、負面性侵犯。我酷愛俄羅斯方塊,而其中火拼俄羅斯更為火爆。記得當年不日不夜的練習俄羅斯方塊,試圖在3V3競技中一展宏圖。卻沒有料到高手甚多,秒我乃拈花摘葉,隨手即來。

此刻,如何是好?

假如,我有一個,傳說中的神兵,是不是可以逆轉這樣狼狽的局面呢?嗯,有趣,甚是有趣。那麼,我們就開始造兵器——打造一款,傳說中火拼俄羅斯方塊輔助如何?

首先,要打造一個輔助,你必須介入程序,怎麼介入?

遠程注入DLL!

DLL的遠程注入技術是目前Win32病毒廣泛使用的一種技術。使用這種技術的病毒體通常位於一個DLL中,在系統啟動的時候,一個EXE程序會將這個DLL加載至某些系統進程(如Explorer.exe)中運行。

這樣一來,普通的進程管理器就很難發現這種病毒了,而且即使發現了也很難清除,因為只要病毒寄生的進程不終止運行,那麼這個DLL就不會在內存中卸載。

用戶也就無法在資源管理器中刪除這個DLL文件,真可謂一箭雙鵰哉。記得2003年QQ尾巴病毒肆虐的時候,就已經有些尾巴病毒的變種在使用這種技術了。你需要了解以下幾個API函數:

OpenProcess - 用於打開要寄生的目標進程。VirtualAllocEx/VirtualFreeEx - 用於在目標進程中分配/釋放內存空間WriteProcessMemory - 用於在目標進程中寫入要加載的DLL名稱。CreateRemoteThread - 遠程加載DLL的核心內容,用於控制目標進程調用API函數。LoadLibrary - 目標進程通過調用此函數來加載病毒DLL。

在此我只給出了簡要的函數說明,關於函數的詳細功能和介紹請參閱MSDN。還有,至於代碼,本文不貼代碼,只講技術,有興趣可以自行谷歌。

如此以來,就可以將自己寫的DLL,注入到火拼俄羅斯方塊這個程序裡,並且讓他運行起來。

DLL裡實現什麼?

DLL裡需要實現的就是一套基於人工智慧的玩火拼俄羅斯的機器人。我們假設已經有一款超高智能的LIB已經被我們引入。那麼,DLL還需要就是實現模擬控制的一些方法。還需要什麼?還需要當前方塊的樣子,下一個方塊的樣子,當前自己擺放的樣子,甚至還可能需要知道對手擺放的樣子,自己獲得了哪些道具。

這些數據,怎麼來?

圖像識別,將當前窗口截圖,然後開始根據X Y的坐標進行分析,通過圖像識別的方法,獲得當前方塊樣子,自己擺放的樣子,對手的樣子。

這樣做好麼?

這是比較直觀的方案,但是每次都要掃描,進行圖像比較,然後獲得數據,你會直觀的覺得,那會快麼?效率高麼?假定有了這些數據,你還要做什麼?當然就是操作了,移動方塊,變形方塊,下落方塊和使用道具了。這又如何做呢?簡單,模擬滑鼠鍵盤按鍵,然後操作就好了。

聽起來,這一套,似乎是不錯的方案,不是麼?NO,這樣做出來,頂多算一個兵器,要稱之為神兵,估計還是有一點點距離的!那麼,神兵的話,我們該如何打造?

分析內存,從內從中找到當前方塊,自己擺放的樣子,對手的樣子。分析程序,獲得開發者實現操作函數,並且調用這些函數。於是?聽起來很深奧的樣子,能辦到麼?

逆向工具

在這裡,我只為大家普及工具,就不一一演示,我只做簡單的介紹和說明。

靜態分析工具 IDA,交互式反彙編器專業版(Interactive Disassembler Professional),人們常稱其為IDA Pro,或簡稱為IDA,是總部位於比利時列日市(Liège)的Hex-Rayd公司的一款產品。開發IDA的是一位編程天才,名叫Ilfak Guilfanov。十年前誕生時,IDA還是一個基於控制臺的MS-DOS應用程式,這一點很重要,因為它有助於我們理解IDA用戶界面的本質。除其他內容外,IDA的非Windows和非GUI版本仍然繼續採用源於最初DOS版本的控制臺形式的界面。

動態調試工具有OD(OllyDBG)和windbg。 調試應用層程序兩個調試器都可以,OD因為主要面向逆向,窗口布局更為合理直觀且插件眾多,所以一般情況下都首選OD,windbg沒那麼方便,大部分操作通過命令來進行,但它也有它的優勢,各種命令(內置命令、元命令和擴展命令)提供了強大的控制和分析能力,所以windbg有時也會用到。如果要調試內核程序或模塊那OD就無能為力了,windbg可以說是唯一的選擇,以前還有個 softice,但 softice已經停止更新和支持,現在已經沒什麼了用了。

偵殼工具 PEid,但實際結果還是工具加上自己的分析。脫殼,儘量手動。二進位編輯工具UltraEdit、Hex Workshop以及WinHex,比較工具 Beyond Compare。網絡包抓包分析工具Wireshark和Iris。文件和註冊表監視工具Process Monitor。最後,虛擬機,VM不二。

開始逆向

有了工具,我們就可以開始對火拼俄羅斯進行逆向分析了,逆向是一個複雜而繁瑣的過程。會經歷無數的嘗試,代碼分析,邏輯分析。如果是分析遊戲,如果您是遊戲開發者,或許思路更為廣泛,可以明白一些開發者的正常思維。
那麼,這個遊戲,我們入手點在那?

用OD附加俄羅斯方塊,找到一個關鍵點,這個關鍵點就是,遊戲初始化。

從正常的開發角度來想,在初始化的時候,一般都會清空數據。無論是從網絡還是本地,都會分配方塊的樣式。然後從這裡入手,我就很快的找到了幾個內存地址。從這些地址中,可以得到當前方塊的樣式,並且可以預知下一個方塊的樣式,並且得到了當前擺放的遊戲池中的樣式。然後,緊接著,就找尋控制移動的地方。很快,就從按鍵得到一些信息,找到了。

其中,所有下落後的方塊,我們可以在OD中看到他的內存樣式,其中表示紅色的,就是被改變的數據。什麼數據被改變呢?就是確定下落後的方塊,數字代表了方塊的顏色,也可以說是方塊的樣式。內存中的分布如圖可見。

然後,通過注入DLL到進程,做出了一個插件。圖片中演示了插件工作的樣式。

其中,已經預知了下幾個方塊的樣式,並且得到了遊戲棋盤的數據,AUTO就是自動開始遊戲。測試了效果還不錯。

結束了嗎?

其實逆向的還有很多很多高深的奧秘。我也只是一個初級者。現在大多數的程序,都加入了一些反調。並且為自己的程序加入了一些殼。簡單說說,世界比較知名的高強度殼就是VMProtect,Themida ,SE(Safengine)等等。其中,TW(Themida Winlicense)當時搞得我頭大,他的反調很是有趣。而,對於遊戲來說,很多遊戲都加入了驅動級的保護,比如騰訊的TP(TenProtect),韓國公司的HS(HackShield),還有NEXON的NGS(Nexon Game Security) ,完美的PP等等等。

現在安全越來越被大家重視,而公司安全逆向組一般都會做一些病毒樣本分析,也會做一些公司產品的防護。而這是一個博大精深的世界,裡面非常的有趣,也富有挑戰。所以,一文的簡單介紹,希望能把你吸引進入,這個神奇的界域。

本文作者:Garfield,一個逆向領域的初學者,現任職於點融技術Social團隊。

本文首發於點融黑幫(微信號:DianrongMafia),這是一個網際網路技術類微信號,匯集了各路創業大牛。

相關焦點

  • 《射鵰英雄傳》中,郭靖學了《九陰真經》,為何不練九陰白骨爪?
    郭靖、黃蓉、東邪、西毒、南帝、北丐、中神通、楊康等人,不管是人物形象還是愛恨情仇等,都是非常到位。裡面的一些武動,貫穿了好多書和電視劇,比如降龍十八掌、打狗棒法、九陰真經等。尤其是九陰真經,可以說是最為高深且內外兼修的武動,貫穿整個射鵰英雄傳。
  • 除了九陰白骨爪之外,九陰真經中還有什麼武功?備受武林高手追捧
    各位武林人士好,在金庸武俠作品之中,很少有武功能被成為天下第一,如天龍八部中的降龍十八掌,則被公認為天下第一的絕學,而今天筆者要跟大家介紹的這門武功,也曾是天下第一,備受武林群雄的追捧,它便是由黃裳所創的《九陰真經》,為何說「九陰真經」是第一武學呢?
  • 九陰真經攜手英偉達?(NVIDIA?)打造唯美武俠網遊盛宴
    自2012年開放內測以來,無數玩家加入夢想已久的真武俠世界。值8月8日全球華語公測,全球範圍內將有更多的玩家通過中國服、全球華人服登錄《九陰真經》,體驗唯美真實的武俠世界。  秉承"真武俠,最江湖,還原真實武俠世界"的理念,《九陰真經》自立項以來就將傳播中國武俠文化作為首要目標。為了傳承武俠文化這一使命,遊戲蝸牛一直在行動。
  • 此人是《九陰真經》和《九陽真經》的原作者,太逆天,被金庸刪了
    《九陰真經》貫穿了整個《射鵰三部曲》,而《九陽真經》則開闢了武當和峨眉,同時也讓少林重新輝煌了起來。然而,關於這兩部經典,金庸先生也是煞費苦心,為了讓他們更為經典,更經得住推敲,金庸先生在數次修訂中,都對《九陰真經》和《九陽真經》的創作者包括內容進行了修訂。從連載版到新修版,金庸就修訂了三次,甚至連作者都被改了好幾次。我們先來看看《九陰真經》。
  • 九陰真經厲害,還是九陽神功厲害?
    九陰真經和九陽神功相比,九陰真經優於九陽神功。 如射鵰中,江南七怪韓小瑩的越女劍法,是歷史上的第一流劍法,曾經是以無敵存在。在韓小瑩手中,沒有發揮多士的威力。若是韓小瑩習得越女劍的精髓,在射鵰中就是超一流的高手。任何武功都凝聚前人的心血,有價值,才得以流傳。
  • 九陰真經重製計劃再爆料 視頻編輯器即將到來
    【17173專稿,轉載請註明出處】2016年,《九陰真經》迎來開測五周年慶典,同時也是《九陰真經》品牌十周年。如今,2017年已經來臨。在新的一年裡,《九陰真經》的江湖世界又會有怎樣的驚喜在等待著各位呢?
  • 射鵰衍生劇之《九陰真經》、《南帝北丐》與《中神通王重陽》
    金庸先生就是武俠世界的定海神針,地位無人能撼,依靠其名氣和作品養活了很多人。在武俠小說風靡的時代,他的名字就是一塊最閃亮的招牌,許多文人依靠其名氣撰寫了不少武俠小說賺錢,並把筆名起得魚目混珠,比如:全庸、金康、金庸新、金庸巨等,相信很多小夥伴們都接觸過他們的作品。
  • 九陰真經 VS 九陽神功,一陰一陽哪個更強?
    金庸武俠小說中,有很多厲害的武功,這些武功大多各具特色。大家就很好奇,究竟哪一種武功更厲害,今天小編就來講一下,金庸武俠世界中,九陽神功和九陰真經到底哪個更勝一籌?在《射鵰英雄傳》中,《九陰真經》可以說風靡江湖,享譽整個武林。
  • 西域也有神功,歐陽鋒為何一直惦記著《九陰真經》?原因很無奈!
    《射鵰英雄傳》中,天下英雄為了爭奪武學寶典《九陰真經》死傷無數,最後五大高手相約於華山之巔比武論劍,事先約定,誰的武功天下第一,誰便獲得經書,最終全真教掌教真人王重陽技高一籌,力壓其餘四人奪魁,獲得了《九陰真經》。「西毒」歐陽鋒是個武痴,一心想要奪得《九陰真經》,奈何技不如人,輸給了王重陽,與真經無緣。
  • 《九陰真經》大屏版官網今日上線 雙人同屏闖禁地
    在OBOX亮相美國CES大展期間,官方線上同步開啟了OBOX中國行動玩家招募活動,目前正在火熱進行中,玩家線上報名即可有機會贏取蝸牛OBOX遊戲主機並得到九陰真經大屏版搶鮮測試資格。  4K真武俠網遊:點擊進入
  • 24K純金 《九陰真經》撲克牌亮相CJ
    而蝸牛旗下主打遊戲之一的《九陰真經》,作為一款面世四年且已然衍生出自身周邊文化的產品,在歷來CJ上的周邊總會帶給玩家各種各樣的驚喜,今年自然也不例外。據稱今年的CJ上,九陰真經將會推出24K純金的九陰撲克牌!且隨小編一同來看!
  • 半部九陰真經,竟而重挫黃藥師,一代宗師又怒又恨
    當初為了這本九陰真經,王重陽等五個哥們在華山之巔打了七天七夜,最終王重陽一舉奪魁,不僅獲得天下第一的稱號,還將九陰真經收歸囊中。另外四個哥們中北丐洪七公和南帝段智興都感嘆技不如人,回家老老實實的練武去了。唯獨東邪黃藥師和西毒歐陽鋒二人對九陰真經依舊不死心,心中有著各種鬼主意。
  • 王重陽自己不練九陰真經,為何連門徒,都不讓修煉?
    第一次華山爭劍,王重陽就獲得了「天下第一」的稱號和《九陰真經》的歸屬權,然而,出乎人們意料的是,王重陽為了表明他並沒有私心奪經書,傳明門全真弟子不能在武術中練習「九陰真經」,王重陽的這一做法,讓全真武術派錯失了進一步升華的機會,也讓全真武術派在未來走向衰落。
  • 梅超風的九陰白骨爪與九陰真經有什麼區別,哪個更厲害?
    最害怕的片段是梅超風在大漠修煉九陰白骨爪,嚇得躲進被子裡,現在想起來也是蠻有意思的那梅超風所練的九陰白骨爪和九陰真經有什麼區別呢?射鵰英雄傳中,九陰真經可以說是貫穿全劇,大部分江湖爭鬥都是因九陰真經而起。最著名的華山論劍,在東邪西毒南帝北丐中神通五大高手爭奪戰中,王重陽獲勝取得了九陰真經九陰真經共分上、下兩卷(兩本),上本為內功心法,下本為具體招式。
  • 九陰真經現最強生活玩家
    《九陰真經(微博)》生活職業種類繁多,10月開啟的區域性激活碼測試中便開放了15種不同的生活職業供玩家體驗。對於塵世紛爭無所興趣的玩家就可以通過九陰龐大的生活系統體驗悠閒的江湖生活。在區域性激活碼測試第五區域【潛龍閣】中,一位遊戲內ID名稱為「郭逆天」的玩家將琴師、獵戶、廚師三種生活全部修滿,引起了不小的轟動。在與其交流過程中得知「郭逆天」在蘇州一家國企工作,白天工作較忙,晚上和周末會利用閒暇時間體驗《九陰真經》,並享受帶來的悠然(微博)自得的休閒式江湖生活。
  • 九陰真經手遊金寶物玄鑰墨玉璜獲取方法及屬性一覽
    九陰真經手遊玄鑰墨玉璜怎麼獲得?屬性怎麼樣?寶物系統在九陰真經手遊中能夠提供十分不錯的屬性加成,一共分為玉、金、銀、銅四個等階,這裡小編就介紹下九陰真經手遊金寶物中的玄鑰墨玉璜的屬性資料,所屬寶物套裝為玄鑰套裝,希望能夠幫到你。更多九陰真經手遊遊戲資料,搜索 18183九陰真經手遊。
  • 為什麼那麼多人去搶九陰真經不搶九陽神功?
    同樣都是很厲害的武功,為什麼那麼多人去搶九陰真經而無人搶九陽神功呢? 九陰真經之所以有那麼多人去搶,主要是因為一,九陰真經的作者黃裳名頭太大。
  • 同樣是練《九陰真經》,為何梅超風要用活人練功,別人卻不用?
    有朋友問,《射鵰英雄傳》中,同樣是練《九陰真經》,為何陳玄風和梅超風要用活人練功,而郭靖卻不用?《九陰真經》號稱「武學中的百科全書」,是金庸先生筆下最頂級的武功之一,經書中所記載的武功,已然是武學的最高境界。
  • 九陰真經生活職業如何選擇 怎麼樣賺錢?
    導語:九陰真經生活職業的選擇,如何才賺錢,生活職業詳細的分析。   相比很多新人來分析,剛步入九陰這個世界總是感覺有點迷茫的,生活職業錯亂複雜,許多玩家都不清楚該如何抉擇。
  • 九陰真經六品裝備你不知道的細節 散裝
    這些裝備指的是死醫之類的世界boss掉的裝備、禁地掉的金玉裝,比如流燁雙刀、天譴雙刀等等。筆者也是剛剛看到有別人合成這種裝備,才知道還有這種沒有套裝屬性的六品。下面筆者就將自己被坑的的故事,也算是給其他玩家提個醒了。