• 🎉 Hey there! I've just launched my brand new server voting platform — Metin2 P Servers 🚀

AntiCheat ClientSide Source

Member
Feb
Threads
0
6
0
1

AD: Mt2009 - Mobile & PC - 30 January 2026 CHECK THE PRESENTATION!

A client-sided anti-cheat developed during a freelance project to "plug-in" to a proprietary client for a private server. Includes memory integrity checks, thread execution restrictions, hook detection, memory honeypots, and more.

*Memory Integrity Check​

Gathers a collection of memory pages initially within the game's module (anticheat::cheat_monitor::init) and generates a CRC32 hash based on the memory contents of each page (calc_vpt_hashes) - each validated every cycle (anticheat::cheat_monitor::check_pages).

*Thread Blocking​

Hooks RtlUserThreadStart and checks if the designated address of execution for the thread is within the correct memory bounds. In this case, it is called "image-only execution", where only threads within the primary image (and some other excluded images such as ucrtbased.dll) are allowed to have threads run. If a thread is running outside of these bounds then it is detected as malicious inside an invalid execution space. This also prevents debuggers from attaching the process since RtlUserThreadStart is executed before DbgUiRemoteBreakIn is called which executes outside of the secure boundaries.

*Memory Honeypots​

Memory honeypots are created within the init routine, where memory pages aren't yet accessed, but when they are (which they shouldn't be), it is detected. Prevents "cheat" scanners.

*Anti-Debugging​

Checks the PEB directly (instead of using IsDebuggerPresent, which can be easily looked up) for the value of the BeingDebugged flag as well as the value of NtGlobalFlag. Prone to just directly modifying the BeingDebugged flag to bypass this check though. DbgUiRemoteBreakIn is blocked because debug threads can't be executed in the process (DebugActiveProcess executes a thread within the process, but our process has memory bounds checking, simplified when thread scanning is mentioned.)

TBA: Arbitrary Vectored Exception Handling Detection

*Protected Functions​

Similar in concept to a memory integrity check, but specifically detects if Winsock routines designated as "protected" are hooked/modified, preventing user-mode packet modification and reading by software such as WPE Pro and rPE.

*Process Scanner​

Scans each process based on the contents (process name, window name) and unique memory signature.

*Module Scanner​

Scans the loaded modules in the process for any with blacklisted names.

Download

[Hidden content]
nice i will se it
 
Member
Feb
Threads
0
10
0
1
这是一个客户端反作弊程序,是我在自由职业项目中开发的,用于“插入”到私有服务器的专有客户端中。它包含内存完整性检查、线程执行限制、钩子检测、内存蜜罐等功能。

*内存完整性检查​

最初在游戏模块(anticheat::cheat_monitor::init)中收集内存页集合,并根据每个页面的内存内容生成 CRC32 哈希值(calc_vpt_hashes) - 每个周期都会验证一次(anticheat::cheat_monitor::check_pages)。

*线程阻塞​

它会钩住 RtlUserThreadStart 函数,并检查线程的指定执行地址是否在正确的内存范围内。在这种情况下,它被称为“仅限映像执行”,即只允许主映像(以及一些其他排除的映像,例如 ucrtbased.dll)中的线程运行。如果线程在这些范围之外运行,则会被检测为在无效的执行空间中恶意运行。此外,由于 RtlUserThreadStart 会在 DbgUiRemoteBreakIn 调用之前执行(而 DbgUiRemoteBreakIn 的执行在安全边界之外),因此这也能防止调试器附加到该进程。

*记忆蜜罐​

内存蜜罐创建于初始化例程中,此时内存页尚未被访问,但当这些内存页被访问时(这是不应该发生的),系统会检测到这种行为。这可以防止“作弊”扫描器。

*反调试​

直接检查 PEB(而不是使用很容易查找的 IsDebuggerPresent)中的 BeingDebugged 标志和 NtGlobalFlag 的值。不过,很容易直接修改 BeingDebugged 标志来绕过此检查。DbgUiRemoteBreakIn 被阻塞,因为调试线程无法在该进程中执行(DebugActiveProcess 会在进程内执行一个线程,但我们的进程有内存边界检查,在提到线程扫描时会简化此检查)。

待定:任意向量异常处理检测

*受保护的功能​

概念上类似于内存完整性检查,但专门检测指定为“受保护的”Winsock例程是否被钩住/修改,从而防止WPE Pro和rPE等软件对用户模式数据包进行修改和读取。

*流程扫描仪​

根据内容(进程名称、窗口名称)和唯一内存签名扫描每个进程。

*模块扫描器​

扫描进程中已加载的模块,查找名称在黑名单中的任何模块。

下载

[隐藏内容]
这是一个客户端反作弊程序,是我在自由职业项目中开发的,用于“插入”到私有服务器的专有客户端中。它包含内存完整性检查、线程执行限制、钩子检测、内存蜜罐等功能。

*内存完整性检查​

最初在游戏模块(anticheat::cheat_monitor::init)中收集内存页集合,并根据每个页面的内存内容生成 CRC32 哈希值(calc_vpt_hashes) - 每个周期都会验证一次(anticheat::cheat_monitor::check_pages)。

*线程阻塞​

它会钩住 RtlUserThreadStart 函数,并检查线程的指定执行地址是否在正确的内存范围内。在这种情况下,它被称为“仅限映像执行”,即只允许主映像(以及一些其他排除的映像,例如 ucrtbased.dll)中的线程运行。如果线程在这些范围之外运行,则会被检测为在无效的执行空间中恶意运行。此外,由于 RtlUserThreadStart 会在 DbgUiRemoteBreakIn 调用之前执行(而 DbgUiRemoteBreakIn 的执行在安全边界之外),因此这也能防止调试器附加到该进程。

*记忆蜜罐​

内存蜜罐创建于初始化例程中,此时内存页尚未被访问,但当这些内存页被访问时(这是不应该发生的),系统会检测到这种行为。这可以防止“作弊”扫描器。

*反调试​

直接检查 PEB(而不是使用很容易查找的 IsDebuggerPresent)中的 BeingDebugged 标志和 NtGlobalFlag 的值。不过,很容易直接修改 BeingDebugged 标志来绕过此检查。DbgUiRemoteBreakIn 被阻塞,因为调试线程无法在该进程中执行(DebugActiveProcess 会在进程内执行一个线程,但我们的进程有内存边界检查,在提到线程扫描时会简化此检查)。

待定:任意向量异常处理检测

*受保护的功能​

概念上类似于内存完整性检查,但专门检测指定为“受保护的”Winsock例程是否被钩住/修改,从而防止WPE Pro和rPE等软件对用户模式数据包进行修改和读取。

*流程扫描仪​

根据内容(进程名称、窗口名称)和唯一内存签名扫描每个进程。

*模块扫描器​

扫描进程中已加载的模块,查找名称在黑名单中的任何模块。

下载

[隐藏内容]
 
AdBlock Detected

We get it, advertisements are annoying!

Sure, ad-blocking software does a great job at blocking ads, but it also blocks useful features of our website. For the best site experience please disable your AdBlocker.

I've Disabled AdBlock