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

本文分析了AgoBot开源程序的源代码结构及其模块功能,重点介绍了主控类CMainCtrl的实现,并探讨了配置文件config.cpp的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

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文件进行分析

(未完)

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值