大家好,
我剛譯了一文:"逆向工程,怎麼樣和哪裡開始?"由於我不是程式設計師,很多專業詞不懂,請多諒解。
聲聲慢
原文:Pegasus[REN]
摘要:
經過二十二年多的程式設計,破解,逆向工程, 我看見過不少人來人去。很多人稱自己為cracker, 但真正出色的cracker並不是太多。"scene" 是從80 年代開始發展起來的,大量的破解團體成立了, 許多資訊的被分享了。以後,它們都成為了地下組織, 各破解團體之間的戰爭也展開了。沒人真正知道為什麼這場戰爭開始, 但這時幾乎是"scene" 的結尾了。這是一次對於資訊的, 關於怎樣更好地破解的, 和新技術的戰鬥。時光飛逝, 許多"老學校(old school)" 的 cracker 退休了, 一些去世了,只剩一少部分人仍然活躍。他們變老了,成家立業了,, 或許更加灰色和更加明智了,他們重返破解領域,再次參與收集與分享資訊, 他們創造了一個新的"scene", 現在是大多是合法的,不再需要是地下組織。它就象一個大家庭, 如果您願意, 你可以自由加入併成為它的一分子。
1 什麼是逆向工程?
有很多種不同定義,但共通點是:: 竟賽, 樂趣和吸取知識。舉個例,逆向工程就
象把建造房子的步驟倒過來: 您看見一個漂亮的房子,你問自己: 這個房子是怎樣建造的? 用一下你的腦子, 倒過來想: 拿走柱子, 拿走牆壁, 然後再 掘開地基,
繼續下去。。。直到你找到人們創造這個房子的主要想法那一刻停止...
另外,從資訊科技觀點描述逆向工程, 看一看以下例子:
有個軟體公司開發了以“name/serial ”方式保護的註冊工具。它很舊, 但仍然能
執行,在歐洲百多個軟體上使用。幾年前,這個工具開發商加入一個新公司。每天新的客戶購買這個軟體, 註冊他們的資料,收註冊的鑰匙為了開啟軟體。一天, 開發公司的伺服器出毛病了,管理員使用存檔恢復了系統, 但註冊工具和註冊原始碼未被存放! 現在是時候了,儘可能趕快行動避免不良影響。您可能有五十名顧客說這是優秀軟體, 但只要你有一名客戶說你這個公司有個小問題, 您就失敗了。。。
逆向工程開始前,要儘量收集關於這個程式的資訊。它是使用哪個程式語言編的? 檔案被壓縮或加殼了嗎? 它需要使用其它檔案 (其它的程式或系統)的支援 進行工作嗎?有Anti-debugging 或 Antidisassembling ( 這個中文怎麼說 呢?) 收集了足夠的資訊後,可以進行逆向工程。
在 我 們 這 個“name/serial ”例子裡,要扭轉過來,因為我們是從最終的測試“name/serial ”的程式開吃的,從這裡,我們找上去,直到我們輸入name/serial 的地方。你記住那座房子,柱子,牆壁是它的骨骼。
2 我需要什麼工具?
首先, 您將需要一個非常重要工具。沒人賣它,它也不可能被下載,這就是你自己
的腦子! 有許多工具象偵錯程式, 監測軟體, 反彙編程式, 資源編輯等等。但不使用
您自己的主要工具(你自己的腦子), 您將不能瞭解怎麼做。並且您必須結合所有工
具的力量。這裡有一張被使用於反向工程的 工具的名單(參見表5) 。
有太多的工具。如果我想要把它們全部列名, 這篇文章永遠不完成...
許多商業軟體是可以免費測試的。如果您認為它是必要的, 請購買它和保持合法。
並且避免問他人"什麼是最佳的偵錯程式?" 或"什麼是最佳的反彙編程式?" 。這是一
種個人感覺。選擇使用OllyDbg還是SoftIce 去解決問題不要緊, 最終的成功才是重要的,測試工具和選擇你忠愛的。
3 我必須懂程式設計嗎? 如果是的,哪種語言呢?
這個問題的第一部分是可以自已回答的。使用您的主要工具(aka "腦子"), 你要能
結合如果您想要逆向工程, 您必須能創造軟體。並且軟體由程式設計開。不管你用哪個
語言來創造軟體, 為反向工程您需要 懂得"特別"的那個:assmbler 和這方面的知識。當你要reverse 一個軟體,你的工具給你重新造出assembler的原始碼,你需要明白它的意思。什麼是程式設計?存在各種的觀點。
今天,幾乎所有 能創造一份可執行檔案的, 都稱程式設計師。大多數只需"點選"工具
就能產生程式, 例如使用Visual.basic 。但它能真正地程式設計嗎? 這位"程式設計師" 了
解他的應用程式是怎麼執行的嗎? 很多人不能,計算機快速發展,記憶體不花費多少錢,許多人都不會在意的。 一種簡單資訊顯示框"hello world" ,用VB那樣的高階語言來寫, 包括這種語言指定的動態連線庫, 幾乎需要二個兆位元組執行。同樣的應用顯示框,如用assembler來寫, 使用系統動態連線庫,只需要一個千位元組的空間。除此,assembler的程式執行起來將是比較快的, 但你需要更多的時間和知識為了程式設計。可是為了逆向工程你需要它。如果現在您不通曉程式設計, 開始用以下組合: C++ 和assembler,應用程式程式設計介面(aka API, 和幫助檔案Win32.Hlp) 。這樣能夠同時學會兩種語言! 您不相信我? 好, 看這:
C++ source:
MessageBox(NULL,"myText","myCaption",MB_OK);
Masm source:
...
.data
myText db "myText",0
myCaption db "myCaption",0
...
.code
...
invoke MessageBox,NULL,offset myText,
offset myCaption,MB_OK
想一下, 你會看出它們的區別。很簡單, 是嗎?
以上舉的例子只是一個側面,如果我們把它轉過來, 我們會發現另一面更具意義。
用Visual Basic, Delphi Visual C++ , 微 軟的 MFC 或者 其 它 的 高階語言寫的程式,比起專用API 的程式寫的拆卸後難懂。 並且許多人說: "它們很難反譯" 。但為什麼他們這麼說呢? 因為他們開始了他們"逆向工程" 時 沒有assembler的知識。在這的情況下, 大多數在他們真正開始之前以經放棄了。不要犯同樣錯誤。給自己一個公平的機會。
隨著時間過去,您開始掌握assembler語言,和反譯簡單的程式。現在您必須再學。您必須學會區別。您不需要在所有的語言上都是位好程式設計師, 您必須瞭解它是怎麼執行的,在哪裡獲得解決問題的資訊。很多時候,知道用哪個供能將做什麼,以及哪個參量被使用就足夠了。
為了學會它沒 有最佳的方式或"準則" ,最佳的方式是開始第一步。很多前人都學
會了,你也能辦到!
4 我可以在哪裡得到資訊、講解和幫助?
通過網際網路你將找到幾乎所有資訊。當然, 如果您不知道在哪裡尋找, 您將得不到
需要的資訊,有成千上萬網站。這裡列表的所有站點都包含許多資訊,並且與其它站點的連結。大家能自由地加入的各種論壇, 只是注意讀規則, 不要違反它們。
如果你認為, 你有足夠好的在逆向工程經驗, 您能在這裡證明你的知識:
Reverse Engineering Academy
(http://reverser-course.de)
CrackMes
(http://www.crackmes.de)
ReverseMes
(http://www.reversemes.de)
Contests
(http://contests.anticrack.de)
Disassembler/Debugger :
Ida Pro http ://www.datarescue.com
SoftIce Driver Suite http ://www.numega.com
OllyDbg http ://home.t-online.de/home/OllyDbg
W32Dasm 8.93 http ://www/expage.com/page/w32dasm
PE Explorer http ://www.heaventools.com
Turbo Debugger 5.5 ftp ://ftp.inprise.com/bcppbuilder/
HIEW http ://www.serje.net/sen/
File information :
Registry Monitor http ://www.sysinternals.com
File Monitor http ://www.sysinternals.com
Stud PE http ://itimer.home.ro/studpe.html
Resource editors :
Resource Hacker www.users.on.net/johnson/resourcehacker/
Borland Resource Workshop http ://www.google.com
Programming :
Win32 Help ftp ://ftp.inprise.com/pub/delphi/techpubs/
Microsoft Developer Network http ://msdn.Microsoft.com
Masm http ://www.masm32.com
RadASM IDE http ://radasm.visualassembler.com/
Chrome http ://perso.wanadoo.fr/franck.charlet
Borland C++ 5.5 http ://www.borland.com
Watcom C++ http ://www.openwatcom.org
Microsoft Visual Studio 6 http ://www.microsoft.com
Digital Mars Compiler http ://www.digitalmars.com
Editors :
Ultraedit http ://www.ultraedit.com
Hex WorkShop http ://www.bpsoft.com
TAB. 1 ━ Outils
Assembly language :
Iczelion’s Masm site http ://win32asm.cjb.net
MasmForum http ://www.masmforum.com
Test-Department http ://www.crahkob.com
Deinmeister http ://www.deinmeister.de
Forums :
AntiCrack Deutschland http ://board.anticrack.de
New2Cracking http ://n2c.anbcs.com
Assembler board http ://board.win32asmcommunity.net
MasmForum http ://www.masmforum.com
Tutorials :
AntiCrack Deutschland http ://www.anticrack.de
Krobar http ://zor.org/krobar/
IRC :
(some of them) #rea #rce #cracking4newbies #new2cracking
最後一句... 現在到你了!您需要為了起步的的所有資訊都有了,記住我所說的:
最佳學逆向工程的方式是邁出第一步...
Pegasus