- Status
- Offline
- Joined
- Oct 22, 2024
- Messages
- 153
- Reaction score
- 81
Since modern anti-cheat systems are constantly improving, the only way to remain undetected is to use HID reports instead of the traditional COM port. This allows emulating mouse movements without the need for Wi-Fi, Ethernet, or other easily detectable data transmission methods. This is exactly the method I want to share with you today. At the time of writing, it isn’t detected by Vanguard, so you can safely use it in the near future, and in general, this bypass technology is hard to distinguish from regular ("human") mouse movements.
.jpg)
Why is this method harder to track?
Regular bots work via the COM port, which immediately raises suspicion for anti-cheat systems. However, HID (Human Interface Device) is a standard used by real mice and keyboards. If you configure data transfer correctly, the system will perceive the device as a regular mouse.Note: although this method doesn’t trigger automatic detection by anti-cheat, admins can still manually detect suspicious activity, and you’ll get banned.
What do you need to get started?
Before starting P2C, make sure you have the following:- Arduino Leonardo or Pro Micro — boards that support HID. Sold on any marketplace for pennies.
- USB Host Shield compatible with your board.
- HID-Project library in Arduino IDE.
- Code editor (Arduino IDE, Visual Studio, etc.).
- It’s better to work on a second PC to reduce the risk of your main PC getting banned.
Connecting the USB Host Shield and preparing the code
- Basic script setup
Remove all Serial communication since the COM port is no longer needed.
Edit hidcustom to match your device.
- Connecting HID-Project
C++:
uint8_t rawHidData[RAWHID_SIZE];
C++:
RawHID.begin(rawHidData, sizeof(rawHidData));
C++:
if (RawHID.available()) {
int bytesRead = RawHID.read();
uint8_t buttons = rawHidData[0];
int8_t x = rawHidData[1];
int8_t y = rawHidData[2];
if (buttons == 1) {
Mouse.press(MOUSE_LEFT);
Mouse.release(MOUSE_LEFT);
}
Mouse.move(x, y);
RawHID.enable();
}
.jpg)
Creating a Python script for data transfer
- Install the hid library: pip install hid.
- Define your mouse’s PID and VID.
- Implement HID report transmission.
Python:
import hid
vendor_id = 0xYOURMOUSEVIDHERE
product_id = 0xYOURMOUSEPIDHERE
try:
device = hid.device()
device.open(vendor_id, product_id)
print("Connected to mouse")
except Exception as e:
print(f"Error: {e}")
def unsign(value):
return value & 0xFF
def mouse(buttons, x, y):
x = unsign(x)
y = unsign(y)
report = [buttons, x, y]
print(f"Sending report: {report}")
device.write(report)
mouse(1, 10, 10) # Click and mouse 10 pixels move
device.close()
How to make data transfer more natural?
Instead of [buttons, x, y], transmit data like a real mouse:
C++:
[00, buttons, x, y, 00, 00]
What does this achieve?
- The first 00 is an empty byte present in most mice.
- The 00, 00 at the end are slots for scroll and tilt.
This makes the transmitted data as close as possible to real mouse movement reports.
Additional precautions
- Use an alt-PC for uploading code.
- Disable Vanguard before flashing (sc stop vgk).
- Don’t leave COM ports open in the code.