看流星社区

 找回密码
 注册账号
查看: 1938|回复: 0

反调试检测二 检测变名sod

[复制链接]

该用户从未签到

发表于 2013-4-4 08:50:48 | 显示全部楼层 |阅读模式
废话不多说 直接上代码吧
有人说 没有开od 什么 提示被检测到 其实是 你曾今打开个od吧!因为那个驱动并且没有别卸载掉,所以到知道提示检测到
可以在检测前 先卸载一下 这个驱动看看,去看我的检测一 和这个合起来,卸载这个驱动

#include <windows.h>
#include <stdio.h>
#include <shlwapi.h>
#pragma comment(lib,"shlwapi")

BOOL IsOdPath(LPWSTR lpszFilePath)
{
  BOOL bResult=FALSE;
  WCHAR wFilePath[MAX_PATH]={0};
  wcscpy(wFilePath,lpszFilePath+4);
  PathRemoveFileSpec(wFilePath);
  wcscat(wFilePath,L"\\ODbgScript.dll");
  if (PathFileExists(wFilePath))
  {
    bResult=TRUE;
  }
  
  
Finally:
return  bResult;
}
BOOL isFindOd()
{
  LPENUM_SERVICE_STATUS_PROCESS pPssp=NULL;
  DWORD dwNeed=0;
  DWORD dwRet=0;
  SC_HANDLE hSrv=0;
  int dwServiceType;
  DWORD i=0;
  LPQUERY_SERVICE_CONFIG pQsc=NULL;
  dwServiceType   =SERVICE_DRIVER|SERVICE_WIN32|SERVICE_KERNEL_DRIVER|SERVICE_FILE_SYSTEM_DRIVER;
  BOOL bFind=FALSE;

  SC_HANDLE  hSCM = OpenSCManagerW(NULL, NULL, SC_MANAGER_ALL_ACCESS);
  if (!hSCM)
  {
    goto Finally;
  }
  EnumServicesStatusEx(hSCM, SC_ENUM_PROCESS_INFO,
    dwServiceType, SERVICE_STATE_ALL,
    (PBYTE)pPssp,
    0, &dwNeed,
    &dwRet, NULL, NULL);  
  if (dwNeed == 0)
    goto Finally;
  pPssp = (LPENUM_SERVICE_STATUS_PROCESS)malloc(dwNeed);  
  ZeroMemory(pPssp, dwNeed);  
  if (!EnumServicesStatusEx(hSCM, SC_ENUM_PROCESS_INFO, dwServiceType,
    SERVICE_STATE_ALL, (PBYTE)pPssp, dwNeed, &dwNeed, &dwRet, NULL, NULL))  
  {  
    free(pPssp);  
    goto Finally;
  }
  for ( i = 0; i < dwRet; i++)  
  {  
    hSrv = OpenServiceW(hSCM, pPssp[i].lpServiceName, SERVICE_QUERY_CONFIG);

    QueryServiceConfig(hSrv, pQsc, 0, &dwNeed);  
    if (dwNeed > 0)  
    {  
      pQsc = (LPQUERY_SERVICE_CONFIG)malloc(dwNeed);  
      ZeroMemory(pQsc, dwNeed);  
      if (QueryServiceConfig(hSrv, pQsc, dwNeed, &dwNeed))  
      {  
        
          if (IsOdPath(pQsc->lpBinaryPathName))
          {
            bFind=TRUE;
          }
      

      }  
      free(pQsc);  
    }
    CloseServiceHandle(hSrv);
    if (bFind)
    {
      break;
    }
  }  
Finally:
  if (pPssp)
  {
    free(pPssp);
  }
  if (hSCM)
  {
    CloseServiceHandle(hSCM);
  }
  return bFind;
}
void main()
{
  if (isFindOd())
  {
    printf("发现被调试");

  }
  else
  {
    printf("没有发现");

  }
getchar();
}
点击按钮快速添加回复内容: 支持 高兴 激动 给力 加油 苦寻 生气 回帖 路过 感恩
您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

小黑屋|手机版|Archiver|看流星社区 |网站地图

GMT+8, 2024-4-30 12:07

Powered by Kanliuxing X3.4

© 2010-2019 kanliuxing.com

快速回复 返回顶部 返回列表