开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 1485|回复: 2
收起左侧

[精币悬赏] 企业VX双开解决方法

[复制链接]
结帖率:42% (10/24)
发表于 2020-3-11 00:37:16 | 显示全部楼层 |阅读模式   重庆市重庆市
50精币
企业VX双开解决方法

发表于 2020-3-12 12:45:22 | 显示全部楼层   辽宁省大连市
模拟器15开。。批量加好友中
回复

使用道具 举报

结帖率:86% (19/22)
发表于 2022-4-14 20:56:26 | 显示全部楼层   四川省成都市
.版本 2

.子程序 _启动子程序2, 整数型

PatchWxWork ()
OpenWxWork ()

返回 (0)  ' 可以根据您的需要返回任意数值

.子程序 PatchWeChat, 整数型
.局部变量 dwSize, 整数型
.局部变量 pNameInfo, POBJECT_NAME_INFORMATION
.局部变量 pNameType, POBJECT_NAME_INFORMATION
.局部变量 pbuffer, 整数型
.局部变量 Status, 长整数型
.局部变量 nIndex, 整数型
.局部变量 dwFlags, 整数型
.局部变量 szType, 字节型, , "128"
.局部变量 szName, 字节型, , "512"
.局部变量 Pids, 整数型, , "0"
.局部变量 Num, 整数型
.局部变量 pHandleInfo, SYSTEM_HANDLE_INFORMATION1
.局部变量 pInfo, SYSTEM_HANDLE_TABLE_ENTRY_INFO
.局部变量 pCount, 整数型
.局部变量 i, 整数型
.局部变量 hHandle, 整数型
.局部变量 TypName, 文本型
.局部变量 Name, 文本型
.局部变量 p_Tag, 整数型

ElevatePrivileges ()
Num = GetProcIds (“WeChat.exe”, Pids)
.如果真 (Num = 0)
    返回 (0)
.如果真结束
pbuffer = VirtualAlloc (0, 4096, #MEM_COMMIT, #PAGE_READWRITE)
.如果真 (pbuffer = 0)
    返回 (0)
.如果真结束

Status = _ToLong (ZwQuerySystemInformation (#SystemHandleInformation, pbuffer, 4096, dwSize))
VirtualFree (pbuffer, 0, #MEM_RELEASE)
.如果真 (#STATUS_INFO_LENGTH_MISMATCH ≠ Status)
    返回 (0)
.如果真结束

.如果真 (dwSize × 2 > 67108864)
    返回 (0)
.如果真结束

pbuffer = VirtualAlloc (0, dwSize × 2, #MEM_COMMIT, #PAGE_READWRITE)
.如果真 (pbuffer = 0)
    返回 (0)
.如果真结束
Status = _ToLong (ZwQuerySystemInformation (#SystemHandleInformation, pbuffer, dwSize × 2, 0))
.如果真 (Status < 0)
    VirtualFree (pbuffer, 0, #MEM_RELEASE)
    返回 (0)
.如果真结束

pCount = 指针到整数 (pbuffer)
.变量循环首 (0, pCount - 1, 1, i)
    RtlMoveMemory_INFO (pInfo, pbuffer + 4 + i × 16, 16)
    ' 调试输出 (pInfo.UniqueProcessId)
    ' 调试输出 (pInfo.CreatorBackTraceIndex)
    ' 调试输出 (pInfo.ObjectTypeIndex)
    ' 调试输出 (pInfo.HandleAttributes)
    ' 调试输出 (pInfo.HandleValue)
    ' 调试输出 (pInfo.Object)
    ' 调试输出 (pInfo.GrantedAccess)

    .如果真 (IsTargetPid (pInfo.UniqueProcessId, Pids, Num))
        hHandle = DuplicateHandleEx (pInfo.UniqueProcessId, pInfo.HandleValue, #DUPLICATE_SAME_ACCESS)
        .如果真 (hHandle = 0)
            到循环尾 ()
        .如果真结束

        ' 获取对象类型名
        Status = _ToLong (NtQueryObject (hHandle, #ObjectTypeInformation, szType, 128, dwFlags))
        .如果真 (Status < 0)
            CloseHandle (hHandle)
            到循环尾 ()
        .如果真结束
        RtlMoveMemory_NAME (pNameType, szType, 8)
        TypName = _fun_pw2a (pNameType.Name.Buffer)
        ' 调试输出 (TypName)
        .如果真 (TypName = “Mutant”)
            ' 获取对象名
            Status = NtQueryObject (hHandle, #ObjectNameInformation, szName, 512, dwFlags)
            .如果真 (Status < 0)
                CloseHandle (hHandle)
                到循环尾 ()
            .如果真结束

            ' 找到微信的标志找到微信标志
            RtlMoveMemory_NAME (pNameInfo, szName, 8)
            Name = _fun_pw2a (pNameInfo.Name.Buffer)
            .如果真 (寻找文本 (Name, “_WeChat_App_Instance_Identity_Mutex_Name”, , 假) ≠ -1)
                CloseHandle (hHandle)
                hHandle = DuplicateHandleEx (pInfo.UniqueProcessId, pInfo.HandleValue, #DUPLICATE_CLOSE_SOURCE)  ' 关闭Mutant对象
                .如果真 (hHandle ≠ 0)
                    p_Tag = 1
                    CloseHandle (hHandle)
                .如果真结束
                跳出循环 ()
            .如果真结束

        .如果真结束
        CloseHandle (hHandle)
    .如果真结束

.变量循环尾 ()
VirtualFree (pbuffer, 0, #MEM_RELEASE)
返回 (p_Tag)

.子程序 OpenWeChat, , , 打开微信
.局部变量 hKey, 整数型
.局部变量 Type, 整数型
.局部变量 Path, 字节型, , "260"

.如果真 (#ERROR_SUCCESS ≠ RegOpenKey (#HKEY_CURRENT_USER, “Software\Tencent\WeChat”, hKey))
    返回 ()
.如果真结束
Type = #REG_SZ
.如果真 (#ERROR_SUCCESS ≠ RegQueryValueEx (hKey, “InstallPath”, 0, Type, Path, 260))
    返回 ()
.如果真结束

PathAppend (Path, “WeChat.exe”)
ShellExecute (0, “Open”, Path, 0, 0, #SW_SHOW)

.子程序 PatchWxWork, 整数型
.局部变量 dwSize, 整数型
.局部变量 pNameInfo, POBJECT_NAME_INFORMATION
.局部变量 pNameType, POBJECT_NAME_INFORMATION
.局部变量 pbuffer, 整数型
.局部变量 Status, 长整数型
.局部变量 nIndex, 整数型
.局部变量 dwFlags, 整数型
.局部变量 szType, 字节型, , "128"
.局部变量 szName, 字节型, , "512"
.局部变量 Pids, 整数型, , "0"
.局部变量 Num, 整数型
.局部变量 pHandleInfo, SYSTEM_HANDLE_INFORMATION1
.局部变量 pInfo, SYSTEM_HANDLE_TABLE_ENTRY_INFO
.局部变量 pCount, 整数型
.局部变量 i, 整数型
.局部变量 hHandle, 整数型
.局部变量 TypName, 文本型
.局部变量 Name, 文本型
.局部变量 p_Tag, 整数型

ElevatePrivileges ()
Num = GetProcIds (“WXWork.exe”, Pids)
.如果真 (Num = 0)
    返回 (0)
.如果真结束
pbuffer = VirtualAlloc (0, 4096, #MEM_COMMIT, #PAGE_READWRITE)
.如果真 (pbuffer = 0)
    返回 (0)
.如果真结束

Status = _ToLong (ZwQuerySystemInformation (#SystemHandleInformation, pbuffer, 4096, dwSize))
VirtualFree (pbuffer, 0, #MEM_RELEASE)
.如果真 (#STATUS_INFO_LENGTH_MISMATCH ≠ Status)
    返回 (0)
.如果真结束

.如果真 (dwSize × 2 > 67108864)
    返回 (0)
.如果真结束

pbuffer = VirtualAlloc (0, dwSize × 2, #MEM_COMMIT, #PAGE_READWRITE)
.如果真 (pbuffer = 0)
    返回 (0)
.如果真结束
Status = _ToLong (ZwQuerySystemInformation (#SystemHandleInformation, pbuffer, dwSize × 2, 0))
.如果真 (Status < 0)
    VirtualFree (pbuffer, 0, #MEM_RELEASE)
    返回 (0)
.如果真结束

pCount = 指针到整数 (pbuffer)
.变量循环首 (0, pCount - 1, 1, i)
    RtlMoveMemory_INFO (pInfo, pbuffer + 4 + i × 16, 16)
    ' 调试输出 (pInfo.UniqueProcessId)
    ' 调试输出 (pInfo.CreatorBackTraceIndex)
    ' 调试输出 (pInfo.ObjectTypeIndex)
    ' 调试输出 (pInfo.HandleAttributes)
    ' 调试输出 (pInfo.HandleValue)
    ' 调试输出 (pInfo.Object)
    ' 调试输出 (pInfo.GrantedAccess)

    .如果真 (IsTargetPid (pInfo.UniqueProcessId, Pids, Num))
        hHandle = DuplicateHandleEx (pInfo.UniqueProcessId, pInfo.HandleValue, #DUPLICATE_SAME_ACCESS)
        .如果真 (hHandle = 0)
            到循环尾 ()
        .如果真结束

        ' 获取对象类型名
        Status = _ToLong (NtQueryObject (hHandle, #ObjectTypeInformation, szType, 128, dwFlags))
        .如果真 (Status < 0)
            CloseHandle (hHandle)
            到循环尾 ()
        .如果真结束
        RtlMoveMemory_NAME (pNameType, szType, 8)
        TypName = _fun_pw2a (pNameType.Name.Buffer)
        ' 调试输出 (TypName)
        .如果真 (TypName = “Mutant”)
            ' 获取对象名
            Status = NtQueryObject (hHandle, #ObjectNameInformation, szName, 512, dwFlags)
            .如果真 (Status < 0)
                CloseHandle (hHandle)
                到循环尾 ()
            .如果真结束

            ' 找到微信的标志找到微信标志
            RtlMoveMemory_NAME (pNameInfo, szName, 8)
            Name = _fun_pw2a (pNameInfo.Name.Buffer)
            .如果真 (寻找文本 (Name, “Tencent.WeWork.ExclusiveObject”, , 假) ≠ -1)
                CloseHandle (hHandle)
                hHandle = DuplicateHandleEx (pInfo.UniqueProcessId, pInfo.HandleValue, #DUPLICATE_CLOSE_SOURCE)  ' 关闭Mutant对象
                .如果真 (hHandle ≠ 0)
                    p_Tag = 1
                    CloseHandle (hHandle)
                .如果真结束
                跳出循环 ()
            .如果真结束

        .如果真结束
        CloseHandle (hHandle)
    .如果真结束

.变量循环尾 ()
VirtualFree (pbuffer, 0, #MEM_RELEASE)
返回 (p_Tag)

.子程序 OpenWxWork, , , 打开微信
.局部变量 hKey, 整数型
.局部变量 Type, 整数型
.局部变量 Path, 字节型, , "260"

.如果真 (#ERROR_SUCCESS ≠ RegOpenKey (#HKEY_CURRENT_USER, “Software\Tencent\WXWork”, hKey))
    返回 ()
.如果真结束
Type = #REG_SZ
.如果真 (#ERROR_SUCCESS ≠ RegQueryValueEx (hKey, “Executable”, 0, Type, Path, 260))
    返回 ()
.如果真结束

PathAppend (Path, “”)
ShellExecute (0, “Open”, Path, 0, 0, #SW_SHOW)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

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