Alexa是一個發布全球網站排名信息的網站,他的網址是http://www.alexa.com。Alexa通過在客戶端(計算機愛好者,學習計算機基礎,電腦入門,請到本站,我站同時提供計算機基礎知識教程,計算機基礎知識試題供大家學習和使用),安裝Alexa工具條來收集采樣全球網站的訪問數據,以這些數據為依據對全球網站進行排名,類似于電視收視率的統計。Alexa工具條是一種類似于Google工具條的IE插件,你可以在下面URL中下載:http://download.alexa.com/index.cgi。 一、Alexa工具條的工作原理
Alexa工具條是一種基于BHO和Toolbar Bands技術的一種IE插件。它以DLL文件的形式存在于系統中,是一種COM組件,IE會在運行時將其加載到自身進程中去,所以一般情況下防火墻是無法禁止該軟件訪問網絡的,這就為他的木馬角色提供了先天的便利,而且比本機Sniff軟件收集密碼的優勢是:無論是HTTP還是HTTPS的網站,不管通信通道是否加密,只要是IE頁面的表單都能收集到。具體原理可以查閱《關于Alexa排名作弊的一些解惑》。
系統在安裝了Alexa工具條后,會在系統目錄下生成AlxTB1.dll和AlxRes.dll兩個DLL文件(有些情況下是AlxTB2.dll,而不是AlxTB1.dll。那是因為Alexa工具條會自動上網更新的原因)。Alexa工具條的主要二進制代碼存在于AlxTB1.dll文件中,這個文件同時也被注冊成多個COM組件,他完成了BHO和Toolbar Bands的COM接口,并將IE的WebBrowser控件封裝為一個COM組件供AlxRes.dll調用。AlxRes.dll文件僅包含少量的二進制代碼,大量的代碼是HTML和javas cript代碼,他們以資源的形式存在于AlxRes.dll文件中,你可以通過res://AlxRes.dll/CHTML/about.html這樣的URL來訪問這些資源。也許你會奇怪:又不是做網站,為什么軟件的代碼會是javas cript寫的?這就是Alexa工具條垃圾的地方。Alexa工具條的主界面是由HTML+javas cript實現的。這些javas cript代碼通過調用AlxTB1.dll實現的COM接口來實現軟件的全部功能。這樣做不僅導致軟件的效率低下,而且產生大量的資源泄漏,絕對是一種VERY超級SB的開發模式,但是卻為我們修改Alexa工具條的功能提供了方便——根本不需要CRACKER知識,只要一個PE資源修改工具就可以對Alexa工具條的代碼進行修改了。
二、破解Alexa工具條
當然,Alexa也不是真傻,絕對不會蠢到讓自己的代碼被你用資源修改工具隨便改。為了防止AlxRes.dll中的資源被隨意修改,他采取了計算文件校驗和的保護方法,要是發現文件被修改,就會拒絕加載。我們在修改代碼前,必須破解這種保護機制。
AlxTB1.dll導出一個名叫ChecksumResources的函數,這個函數就是用來計算文件校驗和的。用c32asm反匯編AlxRes.dll文件,查看字符串調用列表,找到”ChecksumResources””字符串,跳轉到調用該字符串的代碼,于100017C0處。往下翻幾行,在100017F6處找到一句跳轉,采用爆破方式,用NOP指令覆蓋JNZ指令即可。通俗點講:就是將AlxRes.dll文件偏移””0x17F6″”處的兩個字節””75 11″”改成””90 90″”,你可以使用WinHex之類的16進制編輯軟件來修改。
:100017C0:: 68 9C700010 PUSH 1000709C :BYJMP JmpBy:100017A4