您的位置:首页 > 理论基础 > 计算机网络

AgoBot 僵尸网络研究笔记(一)

2008-02-29 16:15 495 查看

AgoBot 僵尸网络研究笔记

由于工作需要,着手分析一个AgoBot的开源的程序,一些收获或许和大家分享

作者:青青子衿
email:anzijin@sina.com

一、08年2月28日

1、 源代码分以下几块:
Agobot3 Source AgoBot 主体源代码, 重点分析这块的代码
Scanner Source 程序内应该包含了一个扫描器模块
DDOS Source 实现DDOS攻击的模块
Shellcode Source 计算机漏洞利用模块
Redirect Source 这个模块的作用还不清楚
3 rd Party Source 第三方开发的模块放到这里,在这里除了可选择加载的插件模块外,还有一些第三方的模块是程序必须加载的。
2、 主题模块中各类之间的关系:
3、 Main函数,
Main函数在mainctrl.cpp 文件中,通过预处理指令实现可在window和在linux平台上该程序都可以编译成功。
在window平台上调用:
int WINAPI WinMain ( HINSTANCE hInstance , HINSTANCE hprev , PSTR cmdline , int ishow )

在linux平台下调用:
int main ( int argc , char ** argv )

无论在哪个平台,调用哪个函数,最终会调用 CMainCtrl 类的全局 变量 g_cMainCtrl 中的 Main成员函数,
g_cMainCtrl . Main ( cmdline , NULL ); //在Windows平台下的调用。
int iRetVal = g_cMainCtrl . Main ( szArgv , argv [0]); //在Linux平台下的调用。
所以整个AgoBot 软件的起始点在 mainctrl.cpp文件中 :
(1) 定义一个全局变量 g_cMainCtrl ,类型为 CMainCtrl 。
(2) 在主函数中调用该变量的成员函数
int CMainCtrl :: Main ( const char * szCmdLine , const char * szArgv0 )
来实现启动整个程序。
4、 了解 CMainCtrl 类,带着3中的疑问我们有必要了解一下 CMainCtrl 的实现。有一下内容组成:
(1) 成员变量,其中蓝色部分为程序自定义类所定义的变量,其余的是两个bool型的变量,如下: 程序自定义的这些类还需要进一步去分析。
CCommands m_cCommands ;
CCmdLine m_cCmdLine ;
CConsDbg m_cConsDbg ; //负责记录程序运行过程的日志文件
CBot m_cBot ;
CMac m_cMac ;
CCVar m_cCVar ;
CInstaller m_cInstaller ;
CDownloader m_cDownloader ;
CScanner m_cScanner ;
CScannerAuto m_cScannerAuto ;
CIRC m_cIRC ;
CSendFile m_cSendFile ;
CIdentD m_cIdentD ;
CDDOS m_cDDOS ;
CRSALib m_cRSALib ;
CRedirect m_cRedirect ;
CCDKeyGrab m_cCDKeyGrab ;
CRSLControl m_cRSLControl ;

bool m_bRunning ;
CString m_sUserName ;
CString m_sNameVerStr ;
CString m_sArgv0 ;
bool m_bIdentD_Running ;

bool m_bCanSpamAOL ;

list < CThread *> m_lCanJoin ;
(2) CMainCtrl 类的构造函数
int MainCtrl ();
主要实现的功能是,获取程序目前的一些状态,对程序进行初始化,对程序中正在运行的线程进行终止操作
(3)成员函数
int Main ( const char * szCmdLine , const char * szArgv0 );
在标题5中做重点讲述

5、 实现配置功能的源文件,
在帮助文件faq.html中有这样的内容:
[2.1] How to configure ?
Copy /configs/config-sample.cpp to /config.cpp. Edit the file to configure the bot.
可见关于BOT的配置信息是保存在源代码的config.cpp文件中的,所以需要先对对源码中的config.cpp文件进行分析
(未完)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: