当前位置: 首页 > wzjs >正文

上海浦东网站设计公司广告公司推广软文

上海浦东网站设计公司,广告公司推广软文,魔兽7.2国内做插件网站,哈尔滨嘟嘟网络靠谱吗反调原理 通过枚举屏幕上所有的窗口,来检测当前是否打开了调试器 EnumWindows 枚举的时候,会进行窗口回调处理,直到所有窗口回调都结束后函数才返回 VS 提供了 Spy 可以查看窗口的信息,通过工具下的菜单可以打开 Spy 程序 打开…

反调原理

通过枚举屏幕上所有的窗口,来检测当前是否打开了调试器

EnumWindows 枚举的时候,会进行窗口回调处理,直到所有窗口回调都结束后函数才返回

VS 提供了 Spy++ 可以查看窗口的信息,通过工具下的菜单可以打开 Spy++ 程序

20250702181531

打开 Spy++ 程序,并打开其搜索窗口,左键按下窗口上的圆饼,并将光标拖动到应用的窗口上

这时候,搜索窗口上就会显示要查看窗口的信息,如这里显示窗口标题为 x64dbg [管理员]

20250702182006

在打开 x64dbg 的情况下,通过 CheckDebugWindowByEnum 函数,编译并运行 anti02.exe 程序,终端显示输出如下的信息

20250702185742

除了通过 EnumWindows 的方式进行枚举,也可以通过 GetWindow 的方式进行遍历查找窗口

每个进程的主窗口通常都是顶级窗口,一个进程通常会有一个到多个顶级窗口,可以通过遍历顶级窗口搜索目标进程

通过 CheckDebugWindowByFind 函数,编译并运行 anti02.exe 程序,终端显示输出如下的信息

20250702185659

实现代码

完成的实现代码如下,包含前面说的两种方式 CheckDebugWindowByEnum 和 CheckDebugWindowByFind


#include <iostream>
#include <thread>
#include <string>
#include <vector>
#include <windows.h>
#include <TlHelp32.h>BOOL isDebugging = FALSE;
std::string g_szWindowsTile = "";BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam)
{char windows_title[256] = { 0 };char class_name[256] = { 0 };GetWindowText(hwnd, windows_title, 256);if (strlen(windows_title) > 0 && strstr(windows_title, g_szWindowsTile.c_str()) != 0){std::cout << "handle:" << hwnd << " find debug windows:" << windows_title << std::endl;isDebugging = TRUE;}return TRUE;
}bool CheckDebugWindowByEnum(const char* szWindowTitle)
{isDebugging = false;g_szWindowsTile = szWindowTitle;EnumWindows(EnumWindowsProc, NULL);return isDebugging;
}bool CheckDebugWindowByFind(const char* szWindowName)
{std::vector<HWND> vec;HWND hWnd = GetTopWindow(0);while (hWnd){if (GetParent(hWnd) == 0){vec.push_back(hWnd);}hWnd = GetWindow(hWnd, GW_HWNDNEXT);}char szTempName[MAX_PATH] = { 0 };for (auto& v : vec){GetWindowTextA(v, szTempName, MAX_PATH);if (strstr(szTempName, szWindowName) != 0){std::cout << "find debug windows:" << szTempName << std::endl;return true;}memset(szTempName, 0, sizeof(szTempName));}return false;
}void ThreadProc()
{while (true){if (CheckDebugWindowByFind("x64dbg")) //CheckDebugWindowByEnum("x64dbg"){std::cout << "Debugging..." << std::endl;}else{std::cout << "Running..." << std::endl;}std::this_thread::sleep_for(std::chrono::milliseconds(1000));}
}int main()
{std::thread thrd(ThreadProc);thrd.join();return 0;
}

逆向处理

和前面的[基于进程列表的检测]一样,修改内存中的 x64dbg 字符串,然后保存到补丁文件

重新运行补丁过的文件,已经去掉了基于窗口列表的反调试检测

http://www.dtcms.com/wzjs/84542.html

相关文章:

  • 做网站注意什么网络平台建站
  • 怎么制作网站软件教育培训报名
  • 网站备案 营业执照公司网站如何在百度上能搜索到
  • 网站设计兼职广东深圳今天最新通知
  • 网页设计模板网站免费下载腾讯广告推广平台入口
  • 网站体验优化怎样做一个产品营销方案
  • 如何做好一个网站运营针对本地的免费推广平台
  • 网站建设需要什么软件有哪些seo是怎么优化的
  • 织梦网站文章发布模板下载企业网站的功能
  • 合肥网站关键词推广跨境电商seo什么意思
  • 网络营销的手段广州seo排名优化公司
  • 广州做网站最好的公司互联网网络推广
  • 全国网站建设网站域名查询
  • 手机web网站百度推广账号怎么注册
  • 微网站地图定位google搜索中文入口
  • 网站建设电话咨询成都seo技术经理
  • wordpress10和3优先级seo服务外包
  • 网络商城营业执照经营范围网站关键词推广优化
  • 微信小程序cms系统seo自然排名
  • 凡科网之前做的网站在哪看百度竞价排名是什么方式
  • 网站建设验收城关网站seo
  • 个人网站内容怎么写比较靠谱的推广平台
  • 大型网站的制作推广引流话术
  • 运动鞋网站的建设风格公众号seo排名软件
  • 网站设计制作排名百度推广竞价排名技巧
  • 兼职做网站平台惠州seo网站排名
  • 注册个人网站营销网站设计
  • 今日武汉疫情行程公布百度首页优化排名
  • 做网站需要准备什么条件微信朋友圈的广告怎么投放
  • 网站备案密码使用怎么制作公司网页