当前位置:有风信息港IT学院编程技术JAVA → 3721驻留机制简单研究

3721驻留机制简单研究

减小字体 增大字体 作者:有风IT学院  来源:有风信息港  发布时间:2008-1-13 9:29:59
  简单研究了一下3721的机制,写在这里,作为心得笔记吧。大部分收获都来自Softice + 反汇编,不一定适用于某些版本。

  1. CnsMin.dll的驻留方式

  3721的核心文件:CnsMin.dll通常存在于<Windows Directory>\Downloaded Program Files下。

  通过注册表Run键值加载:Rundll32 \CnsMin.dll, Rundll32 CnsMin.dll提供了一个函数Rundll32供Rundll32.exe调用,但这个函数只是调用一个真正的驻留函数Rundll32Main()。

  Rundll32Main()伪代码:

  void Rundll32Main()

  {

  hMutex = CreateMutex("CNSMINMUTEX");

   if(ERROR_ALREADY_EXISTS)

   {

   CloseHandle(hMutex);

   exit;

   }

   if(IsWindowsNT()) {

   SetProcessSecurityInfo();

   }

   else {

   RegisterProcessAsService();

   }

   CheckVersion();

  

   // CnsMinKP.sys/vxd 内核驱动程序,保护3721关键文件和注册表项不被删除

   ContactWithCnsMinKPDriver();

  

   // 关键的hook,负责将CnsMin.dll注入其他进程空间

   InstallCBTHook();

  

   // 关键的hook,负责将CnsMin.dll注入其他进程空间

   InstallCallWndProcHook();

  

   // CnsMinIO.dll 负责IE地址栏下方的提示

   InitCnsMinIO();

  

   // 一些注册表信息

   InitRegistry();

  

   // 保护CnsMin.dll的钩子不被卸载或抢先

   InstallGuardTimer();

  

   CreateMsgWindow();

  

   // Message loop

   while (true)

   {

   GetMessage(msg);

   TranslateMessage(msg);

   DispatchMessage(msg);

   }

  }

热门推荐:如何用VC实现软件注册  编程之道


[1] [2]  下一页