挂海论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
 友情提示:文字/图片广告均非网站意见,请担保交易勿直接付款,由此产生的责任自负
玩游戏来117游戏网(H5不下载也能玩手游传奇,吃鸡,竞技都有)不懂社区·好资源不错过·各位资源站大佬欢迎来采集搬运寻找会做《单机》游戏修改器的开发作者长期合作,价格不是问题!联系QQ:1874088565 JD寻实力长期勤快开发,来实力代理,DMA内存,项目讨论群 ██【我要租此广告位】██
查看: 4979|回复: 3
打印 上一主题 下一主题

[其他分享] 剑网3过检测过保护

[复制链接]
4中级会员
342/600

342

积分

129

主题

10

听众
已帮网友解决0 个问题
好评
0
贡献
213
海币
1492
交易币
0
跳转到指定楼层
楼主
发表于 2017-10-24 22:37:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
提醒:若下载的软件是收费的"请不要付款",可能是骗子,请立即联系本站举报,执意要付款被骗后本站概不负责。(任何交易请走第三方中介,请勿直接付款交易以免被骗!切记).

友情提示:文字/图片广告均非本站意见,请担保交易勿直接付款,由此产生的责任自负!!!↑↑


剑网3过检测过保护
原理简单;在游戏启动之前HOOK  ZwSetInformationThread这个函数,PASS掉ThreadHideFromDebugger就能让调试器能够正常接收异常

程序
[C] 纯文本查看 复制代码
#include "stdafx.h"
int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow)
{
         // TODO: Place code here.
        STARTUPINFO si;
        memset(&si,0,sizeof(STARTUPINFO));//初始化si在内存块中的值(详见memset函数)
        si.cb=sizeof(STARTUPINFO);
        si.dwFlags=STARTF_USESHOWWINDOW;
        si.wShowWindow=SW_SHOW;
        PROCESS_INFORMATION pi;//必备参数设置结束
        ::CreateProcess(NULL, "JX3Client.exe DOTNOTSTARTGAMEBYX3CLIENT.EXE", NULL, NULL, 0, CREATE_SUSPENDED, NULL, NULL, &si, &pi);
        char s[] = ".\\Jx3DLL.dll";
        int nSize = ::strlen(s) + 1;
        void *pParam = ::VirtualAllocEx(pi.hProcess, 0, nSize, MEM_COMMIT, PAGE_EXECUTE_READWRITE);
        ::WriteProcessMemory(pi.hProcess, pParam, s, nSize, 0);
        HANDLE hThread = ::CreateRemoteThread(pi.hProcess, NULL, 0, (LPTHREAD_START_ROUTINE)LoadLibraryA, pParam, 0, NULL);
        ::WaitForSingleObject(hThread, INFINITE);
        ::CloseHandle(hThread);
        ::VirtualFreeEx(pi.hProcess, pParam, nSize, MEM_DECOMMIT);
        ::ResumeThread(pi.hThread);
        //不使用的句柄最好关掉
        CloseHandle(pi.hThread);
        CloseHandle(pi.hProcess);
        return 0;
}


dll
[C] 纯文本查看 复制代码
// Jx3DLL.cpp : Defines the entry point for the DLL application.
//
#include "stdafx.h"
typedef enum _THREADINFOCLASS {
    ThreadBasicInformation,
    ThreadTimes,
    ThreadPriority,
    ThreadBasePriority,
    ThreadAffinityMask,
    ThreadImpersonationToken,
    ThreadDescriptorTableEntry,
    ThreadEnableAlignmentFaultFixup,
    ThreadEventPair_Reusable,
    ThreadQuerySetWin32StartAddress,
    ThreadZeroTlsCell,
    ThreadPerformanceCount,
    ThreadAmILastThread,
    ThreadIdealProcessor,
    ThreadPriorityBoost,
    ThreadSetTlsArrayAddress,
    ThreadIsIoPending,
    ThreadHideFromDebugger,//这个就是用来将线程对调试器隐藏
    ThreadBreakOnTermination,
    ThreadSwitchLegacyState,
    ThreadIsTerminated,
    MaxThreadInfoClass
    } THREADINFOCLASS;
typedef DWORD (WINAPI *ZWSETINFORMATIONTHREAD)(HANDLE, THREADINFOCLASS, PVOID, DWORD);
ZWSETINFORMATIONTHREAD ZwSetInformationThread = NULL;
BYTE ZwSetInformationThread_Begin[5] = {0};
BYTE ZwSetInformationThread_Hook[5] = {0xE9, 0, 0, 0, 0};
DWORD WINAPI MyZwSetInformationThread(HANDLE ThreadHandle, THREADINFOCLASS ThreadInformationClass, PVOID ThreadInformation, DWORD ThreadInformationLength)
{
        ::WriteProcessMemory(HANDLE(-1), ZwSetInformationThread, ZwSetInformationThread_Begin, 5, 0);
        DWORD Ret = TRUE;
        if(ThreadInformationClass != ThreadHideFromDebugger)
        {
                Ret = ZwSetInformationThread(ThreadHandle, ThreadInformationClass, ThreadInformation, ThreadInformationLength);
        }
        ::WriteProcessMemory(HANDLE(-1), ZwSetInformationThread, ZwSetInformationThread_Hook, 5, 0);
        return Ret;
}
BOOL APIENTRY DllMain( HANDLE hModule,
                       DWORD  ul_reason_for_call,
                       LPVOID lpReserved
                                         )
{
        switch (ul_reason_for_call)
    {
        case DLL_PROCESS_ATTACH:
                        ZwSetInformationThread = (ZWSETINFORMATIONTHREAD)::GetProcAddress(::GetModuleHandle("NTDLL.dll"), "ZwSetInformationThread");
                        *(DWORD*)(ZwSetInformationThread_Hook+1) = (DWORD)MyZwSetInformationThread - (DWORD)ZwSetInformationThread - 5;
                        ::ReadProcessMemory(HANDLE(-1), ZwSetInformationThread, ZwSetInformationThread_Begin, 5, 0);
                        ::WriteProcessMemory(HANDLE(-1), ZwSetInformationThread, ZwSetInformationThread_Hook, 5, 0);
            break;
        case DLL_PROCESS_DETACH:
            break;
        case DLL_THREAD_ATTACH:
            break;
        case DLL_THREAD_DETACH:
            break;
    }
    return TRUE;
}


已做成成品程序
使用方法;下载后将解压的文件放到到游戏的“zhcn”目录下,然后运行“Jx3EXE.exe”启动游戏,这样OD和CE能够正常下断点和调试了

过剑网3保护.rar (24.72 KB, 下载次数: 38)


联系我时,请说是在 挂海论坛 上看到的,谢谢!



上一篇:上古世纪全套源码分享
下一篇:LOL7.15无视距易语言源码
免责声明:
1、本主题所有言论和图片纯属会员个人意见,与本论坛立场无关。一切关于该内容及资源商业行为与www.52ghai.com无关。

2、本站提供的一切资源内容信息仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。

3、本站信息来自第三方用户,非本站自制,版权归原作者享有,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。

4、如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵犯你版权的,请邮件与我们联系删除(邮箱:xhzlw@foxmail.com),本站将立即改正。

9超级会员
1850/2700

1850

积分

11

主题

6

听众
已帮网友解决0 个问题
好评
0
贡献
1839
海币
8764
交易币
0
沙发
发表于 2017-10-25 00:46:44 | 只看该作者
眼    剑网3这游戏真心不错

1

积分

0

主题

0

听众
已帮网友解决0 个问题
好评
0
贡献
1
海币
52
交易币
0
板凳
发表于 2017-11-14 01:50:27 | 只看该作者
下载下来报毒 啊

1

积分

0

主题

3

听众
已帮网友解决0 个问题
好评
0
贡献
1
海币
74
交易币
0
地板
发表于 2020-8-25 15:26:36 | 只看该作者
谢谢分享........
回复

使用道具 举报

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

本版积分规则

免责声明|Archiver|手机版|小黑屋|挂海论坛

GMT+8, 2025-5-4 08:54 , Processed in 0.087613 second(s), 41 queries , Gzip On.

Powered by Discuz! X3.2

本站资源来自互联网用户收集发布,如有侵权请邮件与我们联系处理。xhzlw@foxmail.com

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