吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 5122|回复: 3
收起左侧

[C&C++ 转载] 一份好玩的代码通过检测OD菜单检测OD是否存在

[复制链接]
komany 发表于 2013-2-24 15:29
本帖最后由 komany 于 2013-2-24 15:30 编辑

[AppleScript] 纯文本查看 复制代码
#include <windows.h>
#include <string.h>
#include <stdlib.h>
#include <CONIO.H>
BOOL g_IsContinue = FALSE;

void GetErrorMsg()
{
    LPVOID lpMsgBuf;
    FormatMessage(
        FORMAT_MESSAGE_ALLOCATE_BUFFER |
        FORMAT_MESSAGE_FROM_SYSTEM |
        FORMAT_MESSAGE_IGNORE_INSERTS,
        NULL,
        GetLastError(),
        MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
        (LPTSTR) &lpMsgBuf,
        0,
        NULL
        );
    OutputDebugString((LPCTSTR)lpMsgBuf);
    LocalFree( lpMsgBuf );
}

BOOL CALLBACK EnumWindowsProc(HWND hwnd,LPARAM lParam)
{
    HMENU hMenu = GetMenu(hwnd);
    GetErrorMsg();
    if (hMenu != NULL)
    {
        WCHAR lpString[255] = {0};
        char lpString2[255] = {0};
        GetMenuStringW(hMenu, 3, lpString, 255, MF_BYPOSITION);
        GetErrorMsg();
        GetMenuStringA(hMenu, 3, lpString2, 255, MF_BYPOSITION);
        GetErrorMsg();
        if (((wcslen(lpString)) != 0 && (wcscmp(L"调试(&D)", lpString) == 0))
            || (strlen(lpString2) != 0) && (strcmp("&Debug", lpString2) == 0))
        {
            DWORD dwPID = 0;
            HANDLE hPro = NULL;
            GetWindowThreadProcessId(hwnd, &dwPID);
            GetErrorMsg();
            hPro = OpenProcess(PROCESS_ALL_ACCESS, FALSE, dwPID);

            if (hPro != NULL)
            {
                printf("发现调试工具,现在关闭!\r\n");
                TerminateProcess(hPro, -1);
                CloseHandle(hPro);
                hPro = NULL;
                return FALSE;
            }
        }
    }

    return TRUE;
}

DWORD WINAPI ThreadProc(LPVOID lpParameter)
{
    while (g_IsContinue)
    {
        EnumWindows(EnumWindowsProc, NULL);
        Sleep(1000);
    }

    return 0;
}

int main(int argc, char* argv[])
{
    DWORD dwTid = 0;
    HANDLE hThread = CreateThread(NULL, NULL, ThreadProc, NULL, CREATE_SUSPENDED, &dwTid);
    if (hThread == NULL)
    {
        GetErrorMsg();
        return -1;
    }
    g_IsContinue = TRUE;
    ResumeThread(hThread);
    WaitForSingleObject(hThread, INFINITE);
    CloseHandle(hThread);
    hThread = NULL;
    return 0;
}

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

Victory.ms 发表于 2013-2-24 15:43
这个源码太弱了,检测到又咋样?,大牛还是一样把那验证秒过的
Rookietp 发表于 2013-2-24 16:02
在SOD的庇护下,甚么时候EnumWindows能够枚举到OD的窗口啦.
ゞ尒╭ァ駿ぃ 发表于 2013-3-17 00:25
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-1 08:10

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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