zoukankan      html  css  js  c++  java
  • API Hook PC微信防多开

    1.首先确定微信放多开是如何确定的,大多数程序的防多开都是使用互斥体来完成,所以就从创建互斥体的API开始下手(CreateMutexA/CreateMutexW)

    image

    可以看到创建互斥体的名称

    image

    一般程序在防多开zhong 都是判断判断互斥体的名称是否相同,所以我们做个实验来验证我们猜想的是否正确

    (使用x32dbg直接修改内存效果一样)

    image

    修改值直接运行,并接着在打开一个微信,结果如下

    image

    ,双开成果,说明我们的猜测是正确的,所以直接用apiHook,Hook CreateMutexW函数,修改chau纳入的第三个参数,就可以过掉微信防多开,dll代码如下

    void HookApi()
    {
         //获取CreateMutexW函数地址
         Addr = GetProcAddress(LoadLibraryA("Kernel32.dll"), "CreateMutexW");
         //保存原始的指令
         memcpy(OldOpcode, Addr, 5);
         //计算跳转偏移
         DWORD Offset = (DWORD)HookCreateMutexA - (DWORD)Addr - 5;

        //组合新的Opcode
         *(DWORD*)&JmpOpcode[1] = Offset;


    }


    HANDLE WINAPI HookCreateMutexA(
         LPSECURITY_ATTRIBUTES lpMutexAttributes,
         BOOL                  bInitialOwner,
         LPCSTR                lpName
    )
    {
         HANDLE Handle = 0;
         //调用CreateMutexW创建不同名称的互斥体
         Handle = CreateMutexW(lpMutexAttributes, bInitialOwner, L"bbbbbbbb23333333");
         return Handle;

    }


    void EnableHook(BOOL Enable = TRUE)
    {
         DWORD OldProtect = 0;
         //修改内存页属性,可读写
         VirtualProtect(Addr, 5, PAGE_EXECUTE_READWRITE, &OldProtect);
         //填充新的Opcode
         memcpy(Addr,Enable ? JmpOpcode:OldOpcode, 5);
         //还原目标地址所在分页的属性
         VirtualProtect(Addr, 5, OldProtect, &OldProtect);
    }

  • 相关阅读:
    JVisualVM远程监控
    周记 2014.11.22
    读取配置文件
    周记 2014.11.15
    MyBatis 逆向工程介绍
    PyTorch模型加载与保存的最佳实践
    ubuntu 服务器 php 环境简单搭建
    【重温广州读书会三青年自白,想念在深圳建会工人斗争中积极声援的他们!!】
    EventBus 3.0 的基本使用
    搭建Hexo博客
  • 原文地址:https://www.cnblogs.com/Crack_MY/p/11894404.html
Copyright © 2011-2022 走看看