1. 程式人生 > >繞過猛殼Asprotect註冊著名木馬查殺軟體 (BY 冷家鋒)

繞過猛殼Asprotect註冊著名木馬查殺軟體 (BY 冷家鋒)

菜鳥也註冊猛殼殺軟
                                --------繞過猛殼Asprotect註冊著名木馬查殺軟體

作者:冷家鋒 劉婷婷
鄭重申明:
1.本文已於2006年11期《黑客防線》發表,如引用請註明出處,
2.本文只是一個軟愛好者對共享軟體的測試,因本文引起的一切法律糾紛與本文作者無關!
3.請支援共享軟體
4.我不知道如何在csdn貼圖
 
作業系統:Windows XP_SP2(中文版)
主要使用小軟:
1)PeiD(V0.8.0)(查殼)
2)W32DASM(8.93黃金中文版)(反彙編)
3)Loader(Asprotect入口點檢視工具)
4)OllyDBG(V1.09)(脫殼、除錯用,下文簡稱OD)
5)Procdump(抓取程序映象)
6)Import Reconstructor 1.6(IAT恢復工具)
7)WinHex(10.7.5.0)(16進位制編輯工具,搜尋註冊碼用:-) )
目標:破解或註冊加了Asprotect 1.2x[New Strain]殼的某著名木馬查殺軟體(以下簡稱殺

軟)V5.50_0529。(為了支援共享軟體,殺軟的具體名稱就不透露了,用你喜愛的搜尋引擎

查自己查或者,呵呵,問黑防的老編/小編吧。)

    平時因為要玩破解,玩網路安全,只裝了個防火牆,沒有裝防毒軟體。可是這兩天

電腦慢的要命,懷疑中了病毒。在手工防毒無效的情況下,無奈何,不能免俗,只得求助殺

毒軟體:-(。聽說殺軟近來比較看好,趕緊上網載了一個下來(該軟體包內有註冊碼和去廣

告補丁)。乖乖,真的有效!殺軟不負所望,查殺了好幾個注入檔案管理器(Explorer.exe

)的DLL型木馬。
接下來幾天一發覺電腦有異常,就請出殺軟。可是每次開啟殺軟總是顯示別人搞定的註冊碼

,總是感覺不爽,小菜pach我也想用自己的大名來註冊一下大名鼎鼎的殺軟(難道這就是破

解的理由??小菜我破解需要理由嗎?不需要嗎?需要嗎?……)不騙稿費了,轉入正題。
一、查殼
開啟我最喜歡的查殼小軟Language2000(版本4.5.1.144),我倒!竟然沒有反應。請出

PEiD,yahoooo,Got it!原來是猛殼Asprotect 1.2x[New Strain](如圖(一))。這個殼

是加密殼,印象中1.2以前的版本只要用Caspr即可脫殼。趕緊上www.pediy.com載下Caspr

V1.10。但是顯然我高興的太早了,caspro竟然提示“Maybe this file was no packed by

aspr!”。各大論壇逛了一下,都說Asprotect1.2x為加密殼,且有CRC校驗,工具是很難脫

掉的,需手動脫殼。

 
圖(一)
二、脫殼,抓取殺軟記憶體映象
用loader查得殺軟入口點為0058A2A0,開啟OD,按照預設設定,載入殺軟執行檔案,提示該

軟體“程式碼部分也許是經過了壓縮、加密,或者包含很大數目的嵌入式資料。您確定要繼續

進行分析嗎?”點“是”,繼續載入殺軟,稍事休息幾秒,OD分析完畢。按Shift + F9執行

殺軟。32次左右,再Shift + F7 來到核心空間。暫停一下,新手朋友問了,為什麼要Shift

+ F9  32次,再Shift + F7。用Shift + F9而不是直接F9,是因為Asprotect大量採用了SEH

(結構化異常處理)手段來保護加殼程式,所以要用Shift + F9執行異常。32嘛,因為按33

次殺軟就直接運行了,呵呵。
好,書接上文,來到核心空間,Alt + M開啟“記憶體”資訊視窗,在section列找到.luo行,

右擊該行,在彈出選單選擇“設定記憶體訪問斷點”。按F9,會提示由於記憶體訪問中斷,再次

Alt + M開啟“記憶體”資訊視窗,去掉記憶體訪問斷點。
這時要用到OD一個好用的命令“ 追蹤(TC)”。Alt + F1開啟命令列外掛,鍵入“tc eip

< 90000”(不包括引號),意思是追蹤殺軟執行,直到EIP < 900000。按回車,追蹤完成

後OD會停在地址0058A2A0(還有印象嗎?就是殺軟的入口點了),這時會看到該地址對應是

一些資料,而不是彙編程式碼,不管它,趕快拿出Procdump,在Task列找到殺軟對應程序,然

後右擊,dump(full),鍵入檔名(這裡填dumpsr.exe)儲存。
三、修正殺軟
現在,關閉OD,因為不需要它了(過河拆橋啊),重新執行殺軟。開啟ImportREC,載入殺

軟程序,點選“IAT Autosearch”,然後根據提示,點選“Get Imports”,再點選“Show

Invalid”。OK,Imported Functions Found欄提示找到三個函式,且為Valid(有效),點

擊“Fix Dump”,選擇我們Dump出的檔案dumpsr,ImportREC將會以在檔名後加"_"的方式

儲存抓取的檔案。
下面來修正dumpsr_的入口點,再請出我們的Prodump,選擇PE Editor,載入dumpsr_.exe,

Entry Point填上0018A2A0(為什麼是0018A2A0,而不是0058A2A0?因為PE Editor顯示基址

(Image Base)為00400000, 58A2A0 – 400000 = 18A2A0)。按“OK”,關掉Procdump。
退出殺軟,並將其改名為殺軟.bak,把dumpsr_.exe拷貝一份到殺軟目錄,更名為殺軟。雙

擊,啪,彈出“檔案損壞,請進行病毒檢測”對話方塊。我心痛啊,難道我幾天的辛苦就得到

這麼個結果,看來Asprotect的CRC校驗真不是白給的。痛定思痛,再次開啟OD,載入修改後

的殺軟,正常停在入口0058A2A0,我F7一步一步跟蹤,發現到了圖(二)的地方就出錯了。

仔細一看,原來是訪問的地址超出範圍。將其NOP掉,再往下跟,發現還有I/O指令,而且很

多超出地址範圍的指令。看來程式自身和殼的結合真是很到位啊,要很好的將其破解是超出

我能力範圍了。
 
圖(二)
四、僵局
一時陷入了僵局,放棄嗎?容我思考幾天再說吧……(思考??!!眾讀者和黑防小編可要

發飆 了,我們花了這麼長時間聽你嘮叨,可不是聽你放棄地,註冊碼!!!!交出來!!

!!)。對啊,還沒搞定呢。帶著問題,小菜我是吃不好,睡不香。忽於某年某月某日飯時

想到孫子兵法有云:出其不意,攻其不備。那麼殺軟是不是也有“不備”的弱點呢?
程式是加了殼,而且是猛殼,但是你總是要釋放(解壓或解密)到記憶體中的吧?嘿嘿,那麼

殺軟的註冊碼驗證是不是明文比較呢?明文比較註冊碼,您想到什麼了?我是想到了WinHex

(一款小巧的16進位制編輯器,由於其出色的記憶體編輯功能而為CRACKER所喜愛)。
五、想註冊時就註冊,繞過猛殼,搞定殺軟註冊
帶著這個疑問和一絲僥倖,小菜又和WinHex並肩苦戰,終於把殺軟的註冊撂倒。
一二三,大家一起來。開啟殺軟,點“註冊”選單,再單擊“註冊”子選單,顯示註冊對話

框。單擊“取消註冊”按鈕,殺軟提示重啟後取消生效,重新開啟殺軟,果然殺軟標題顯示

為未註冊版本。依上述次序開啟註冊對話方塊,“使用者名稱稱”框輸入?隨便您了,但最好是中

文名,因為經過小菜試驗,該殺軟似乎比較鍾愛中文名,呵呵。好吧,輸入您的大名,註冊

碼輸入您的生日。這樣註冊成功的話,比較有成功感嘛。點“註冊”按鈕,咣咭,彈出一個

對話方塊,提示“註冊失敗”。別急,這是當然地,否則該殺軟的作者就不會收什麼註冊費了

,也就沒有小菜這篇文章了:-)。好,暫停,別點“確定”按鈕,如圖(三)。什麼?您點

了?您是快的!那也沒什麼,再重新點“註冊”就可以了。
 
圖(三)
暫停在“註冊失敗”對話方塊,請出我們今天的主角WinHex。開啟殺軟時,有可能您的WinHex

一遍會打不開,那就多開啟幾次,好,終於開啟WinHex了。點選“工具”選單--à記憶體(RAM

)編輯器(或者直接Alt + F9開啟,有可能您的WinHex選單顯示和我的稍有不同,沒關係,

相信您會找到我說的。)這時會彈出一個程序列表,單擊殺軟對應的程序名前面的”+”,

再單擊“整個記憶體”,按“確定”,應該會來到圖(四)介面。按Ctrl + F開啟WinHex搜尋

對話方塊,在搜尋框裡填上您在註冊時填的註冊碼,比如小菜我填的是“19273344515”(為

敘述方便,以註冊名“老天啦”,假註冊碼“19273344515”為例),在“僅完整的字詞”

前打上勾,搜尋範圍選“向下”。按“確定”進行搜尋,第一次出現的“19273344515”附

近似乎沒什麼值得注意的。和我一樣的新手朋友可能會問了,你怎麼知道沒什麼值得注意的

?因為其附近沒有可疑字串,也沒有我填的註冊名稱,只要多找幾個類似的註冊軟體多試

試,相信你會找到感覺的。閒話少敘,滑鼠在“19273344515”隔幾行點一下,不然你再

Ctrl + F開啟搜尋對話方塊搜尋時,即使搜尋範圍選“向下”WinHex也不會向下搜尋,游標仍

然會停在剛剛找到的“19273344515”上。(這是我試了幾次才發現的,獨家之祕啊。為了

和我一樣的還在Crack方面摸索的新手朋友的發展,說了!)
 
圖(四)
耐心點(耐心可是Cracker必備的基本要素)繼續向下搜尋,直到,直到看見我們填的使用者

名稱、註冊碼和一串比較可疑的字串在一起,如圖(五)。OK,趕快拿出筆記本,記下那

串可疑的字串,不用懷疑了,它就是註冊碼。關閉WinHex,目前不需要它了,回到殺軟,

您的註冊對話方塊還在吧?點確定,在註冊碼位置填上我們剛找到的註冊碼:246446754(您

找到的可能會有不同),註冊成功(如圖註冊)!!詢問是否要連上網驗證,還是免了吧:

-)!!!!
GOT IT!現在,你擁有自己的大名註冊的殺軟了。




 
圖(五)
總結:
官方說該殺軟可以查殺多種國際木馬,多種密碼偷竊木馬,以及傳奇密碼偷竊木馬,qq類寄

生木馬,冰河類檔案關聯 木馬,密碼解霸,奇蹟射手等遊戲密碼郵寄木馬,並且內建木馬

防火牆。Asprotect1.2x以後提供了SDK,以使加殼者可以讓程式和殼完美的結合在一起。殺

軟就採用了這個猛殼,在防破解方面可謂狠下工夫,但是由於其註冊碼比較只是明文比較,

並且沒有經過變形,而是簡單的放在一起,導致這次註冊的成功。可見,軟體的任何一個小

的漏洞就可能導致軟體的防破解失敗!
另外,用Procdump抓取的記憶體映象雖然不能執行,但是用W32DASM反彙編後,串式參考可以

查到很多有用資訊,比如1927344515,Software/Borland/Delphi/Locales等。提到

1927344515,因為殺軟有個註冊碼就是它,對應的使用者名稱稱,自己查吧:-)。而Borland、

Delphi通過字樣,可以讓我們猜測殺軟的開發語言……
殺軟脫殼後執行會去訪問圖(二)所示的不存在的地址並且有MOV EAX,EAX之類奇怪的指令

,看來我脫殼步驟仍有問題,還望高手指教!看來學習是無止盡的。
宣告:
本文目的純屬研究和學習別人的程式設計思路及防破解方法,利用本文的方法註冊殺軟引起的法

律糾紛概與本人無關。如果喜歡該殺軟,請註冊它,支援共享軟體。