史萊姆論壇

返回   史萊姆論壇 > 教學文件資料庫 > Hacker/Cracker 及加解密技術文件
忘記密碼?
論壇說明

歡迎您來到『史萊姆論壇』 ^___^

您目前正以訪客的身份瀏覽本論壇,訪客所擁有的權限將受到限制,您可以瀏覽本論壇大部份的版區與文章,但您將無法參與任何討論或是使用私人訊息與其他會員交流。若您希望擁有完整的使用權限,請註冊成為我們的一份子,註冊的程序十分簡單、快速,而且最重要的是--註冊是完全免費的!

請點擊這裡:『註冊成為我們的一份子!』

Google 提供的廣告


 
 
主題工具 顯示模式
舊 2004-03-08, 01:40 PM   #1
psac
榮譽會員
 
psac 的頭像
榮譽勳章
UID - 3662
在線等級: 級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時
註冊日期: 2002-12-07
住址: 木柵市立動物園
文章: 17381
現金: 5253 金幣
資產: 33853 金幣
預設 3721駐留機制簡單研究

發信人: McDull (麥兜,關閉的心靈), 信區: Crack
標 題: [筆記]3721駐留機制簡單研究

【簡單研究了一下3721的機制,寫在這裡,作為心得筆記吧。大部分收穫都來自
Softice + 反彙編,不一定適用於某些版本。

1. CnsMin.dll的駐留方式

3721的核心檔案:CnsMin.dll
通常存在於<Windows Directory>\Downloaded Program Files下。

通過註冊表Run鍵值載入執行:Rundll32 <dir>\CnsMin.dll, Rundll32

CnsMin.dll提供了一個函數Rundll32供Rundll32.exe使用
但這個函數只是使用一個真正的駐留函數Rundll32Main()。

Rundll32Main()偽代碼:

void Rundll32Main()
{
hMutex = CreateMutex("CNSMINMUTEX");
if(ERROR_ALREADY_EXISTS)
{
CloseHandle(hMutex);
exit;
}
if(IsWindowsNT()) {
SetProcessSecurityInfo();
}
else {
RegisterProcessAsService();
}
CheckVersion();

// CnsMinKP.sys/vxd 內核驅動程式,保護3721關鍵檔案和註冊表項不被刪除
ContactWithCnsMinKPDriver();

// 關鍵的hook,負責將CnsMin.dll注入其他行程空間
InstallCBTHook();

// 關鍵的hook,負責將CnsMin.dll注入其他行程空間
InstallCallWndProcHook();

// CnsMinIO.dll 負責IE地址欄下方的提示
InitCnsMinIO();

// 一些註冊表訊息
InitRegistry();

// 保護CnsMin.dll的鉤子不被卸載或搶先
InstallGuardTimer();

CreateMsgWindow();

// Message loop
while (true)
{
GetMessage(&msg);
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}

CnsMin主要是通過WH_CBT和WH_CALLWNDPROC兩個全局鉤子注入IE行程空間的。注入
IE後,又安裝了WH_KEYBOARD,WH_DEBUG等鉤子。其中對3721實現其「實名轉換」
有用的是WH_KEYBOARD。這是一個本地鉤子。

CnsMin為了保證自己的優先級最高,用了一個定時器函數反覆安裝鉤子,無疑會造成
系統性能的下降。

我曾經嘗試過自己安裝一個WH_DEBUG鉤子阻止3721鉤子的使用,確實起到了效果,
立即可以使3721失效。但這種方法3721仍然駐留IE行程內,屬於指標不治本的方法。

強制結束Rundll32行程,可以暫時卸載3721的駐留代碼。但CnsMin.dll通過COM註冊已經
嵌入IE元件中,重新啟動IE後,該行程又會重新啟動。

2. 3721的防刪除手段
檔案系統驅動:CnsMinKP*.sys 針對NT/2000/XP有不同版本(98下面是CnsMinKP.vxd)
通常存在於<System directory>\drivers\目錄。

驅動程式,由Windows啟動時載入執行。

該驅動程式過濾了對檔案和註冊表的刪除操作。試圖刪除3721的關鍵檔案和註冊表項時,
直接返回一個TRUE,使Windows認為刪除已經成功,但檔案和註冊表實際上還是在那裡。
該驅動程式還有一個黑名單(儲存在某個外部檔案中),阻止Windows讀取其他3721的
競爭對手的插件檔案。

目前還沒有找到停止該驅動的方法。

刪除方法:在Windows啟動前(例如,98下面退出到DOS)刪除CnsMinKP*.sys檔案。
注意:3721具有自恢復能力。某些關鍵檔案被刪除後,其它模塊會試圖從3721網站重新
下載。所以徹底刪除前需要離線網路連接。

3. 針對目前版本的刪除步驟:
a) 執行3721自己提供的刪除程序。可以刪掉大部分的檔案。
b) 從DOS啟動,刪除殘存檔案,如CnsMin.dll,CnsMinKP*.*等
可能的目錄:Downloaded Program Files目錄,Program Files\3721目錄,drivers目錄
c) 啟動Windows,進入桌面時Windows會報告一些模塊找不到的錯誤,不用理會,刪除
註冊表中3721的值。
可能的位置:HKEY_CURRENT_USER: Software\3721
HKEY_LOCAL_MACHINE: Windows\CurrentVersion\Run
SYSTEM\CurrentControlSet
另外還零散的藏了一些,用關鍵字搜尋。

--
psac 目前離線  
送花文章: 3, 收花文章: 1631 篇, 收花: 3205 次
 



發表規則
不可以發文
不可以回覆主題
不可以上傳附加檔案
不可以編輯您的文章

論壇啟用 BB 語法
論壇啟用 表情符號
論壇啟用 [IMG] 語法
論壇禁用 HTML 語法
Trackbacks are 禁用
Pingbacks are 禁用
Refbacks are 禁用


所有時間均為台北時間。現在的時間是 07:27 PM


Powered by vBulletin® 版本 3.6.8
版權所有 ©2000 - 2024, Jelsoft Enterprises Ltd.


SEO by vBSEO 3.6.1