2010-05-03 65 views
18

假設對通用CPU架構(例如:x86)上的程序集有相當的瞭解,如何探索逆向工程領域的潛在途徑(職業,趣味和利潤等)?有那麼少的教育指南,所以很難理解今天有什麼潛在的用途(例如:正在尋找仍然普遍存在的緩衝區溢出漏洞,或者堆棧監視程序是否使得這個問題變得如此嚴重?)。我不在尋找任何一步一步的計劃,只是一些相關的信息,如關於如何有效地找到程序的特定區域的提示。交易中的基本事物。以及它目前正在使用的內容。考慮進行逆向工程/反彙編

那麼回顧一下,目前的用途是什麼扭轉了今天的工程產量呢?如何才能找到一些關於如何學習交易的基本信息(不一定要一步一步地做,只要能夠通過線索就能獲得幫助)。

回答

14

正如前面提到的,我知道的主要是惡意軟件相關。研究人員爲掃描儀公司工作的主要任務之一是在實驗室或虛擬環境中進行抽樣調試。

沿着這些相同的路線,有很多與安全相關的領域使用反向工程/反彙編。計算機取證是您可能需要研究的領域。沒收的計算機可能包含用於各種活動(命令和控制僵屍網絡,DoS攻擊程序等)的命令和控制程序(但沒有源代碼)。通過逆向工程來保護受保護的數據方案通常要容易得多,而不是找出密碼或密鑰。

DRM /硬件和軟件安全保護是一個很大的逆向工程領域。請注意,這可能是問題(和法律)的「一面」。考慮DVD複製程序,保護刪除,在其他設備上播放iTunes音樂的能力,在Wii上運行自制程序的能力,並行化PS3網格,解鎖iPhone等等。顯然也有很多非法律選項設計一個老虎機定時器,ATM機認證等)。

傳統的程序轉換在許多領域,特別是政府,金融,製造業等方面都是一個巨大的機會。有一些任務關鍵型程序已經在古代主機或小型計算機上運行了30年,沒有人擁有源代碼。團隊必須對程序進行逆向工程,將其轉換爲更新的程序。

有關學習Win32教程的其他建議非常棒。另外,可悲的是,一些最好的出版作品將會破解(遊戲)。搜索一下,那裏有幾個教程顯示基礎知識。我使用了Peter Szor的一本書「計算機病毒研究和防禦的藝術」,但是它更多地關注惡意軟件的想法,而不是確切的反彙編部分。

根據你選擇哪條路線,你需要在其他方面有背景知識,但是知道裝配將成爲你最關鍵的技能。不僅僅是從「我明白代碼的主要作用」的角度來看,您應該能夠從頭開始編寫代碼,並且準確理解給定位代碼的作用,並瞭解可以編寫相同代碼的其他方式。彙編(編碼)涉及找出問題的一種解決方案並對其進行編碼。拆解包括找出最初用於解決問題的許多不同解決方案中的哪一個 - 很難;)

+1

+1爲說明你可以進入各個領域。我開始學習脫保護,因爲當時惡意軟件是一個未知的概念。嘗試通過ASM代碼增強記事本或計算器,這是一種開始學習感受代碼的好方法:) – anonymous 2010-05-08 02:36:30

2

一個我看到的最大的潛在使用的是像桑巴項目(http://www.samba.org/

總有一些將要關閉的專有系統這樣的,我們總是需要工程師扭轉這些以便其他人可以使用它。

5

我讀過反向工程用於安全領域,瞭解惡意軟件和木馬的內部工作(不太瞭解病毒)。有關安全領域中使用的逆向工程文章,請查看www.openrce.org

逆向工程並不總是涉及反彙編。對於用Java或C#等語言編寫的應用程序,反彙編程序通常會比反彙編程序產生更多關於代碼的信息。

由於我個人感興趣的是Win32反向工程,我只能解釋我對這個特定操作系統的看法。不能幫你在Linux反向工程:(

我發現IDA Pro 4.9的免費版本是一個出色的反彙編程序它檢測系統庫,以便你不花時間在錯誤的地方沾邊:)與一個像OllyDbg這樣的調試器,你已經準備好解決大多數Win32的反轉項目。

如果你沿着Win32路線走下去,你最終需要了解PE的結構,也許開箱和東西,但現在關鍵的是要了解x86彙編。對於Win32應用程序的反彙編代碼相對容易理解,如果您已經使用C語言完成Win32 API編碼。

爲了更好地理解32位彙編,可以拆卸自己的應用程序並查看源代碼如何對應於反彙編輸出或學習如何使用匯編語言通過Iczelion's Win32 Assembly tutorials編寫Win32 API應用程序。

3

FFMpeg的當前維護者得到了他的開始反向工程視頻編解碼器,以便他可以讓視頻在Linux上工作。他的blog非常有趣,他有一個recent post談論他希望他開始時的一本書。

2

有一本書逆轉:逆向工程的祕密由伊利達Eilam寫的;艾略特Chikofsky mybe有益4你

+0

好的吶喊,那本書太棒了! – Elliott 2012-12-13 22:46:41

0

對面最近的一項調查表明應用程序漏洞是IT的主要關注管理大型組織中來,因此瞭解軟件如何被破解可能對評估應用程序體系結構和編碼進行漏洞評估非常有用。