CBT-Bypass Beta Update Portal

πŸš€ CBT Anti-Cheat Bypass

CBT-Bypass is a proprietary tool designed as a general framework for intercepting, overriding, and shaping runtime behavior in web-based CBT platforms. While each version differs in scope and capability, all iterations follow the same architectural principle: observing how CBT systems rely on browser events, DOM properties, and JavaScript-driven monitoring, then inserting an interception layer that alters environmental responses without destabilizing the page. In essence, the tool replaces or neutralizes selected event handlers, manipulates window or viewport properties, and suppresses detection-related events that CBT platforms commonly use to track user interaction or display integrity. Over time, the project has evolved from basic event neutralization into a more advanced runtime environment modifier, capable of overriding core properties such as innerHeight, innerWidth, and visualViewport, as well as blocking resize/orientation events and controlling EventTarget’s dispatch flow. Each release adds improved compatibility and stability across mobile and desktop environments, enabling the tool to bypass not only simple restrictions like selectstart or copy, but also modern detection techniques that rely on viewport calculations and dynamic layout changes. As a whole, CBT-Bypass functions as a runtime adaptation module that reshapes the browser environment to neutralize targeted CBT behaviors, without binding itself to any specific CBT implementation or single bypass technique.

πŸ“± Minimum Requirements (Update 2025)

Recommended:

Not supported on:

πŸ’‘ Main Script Features (v4.1)

πŸ”’ The main function of this script is to manipulate window/screen size detection mechanisms on web CBT sites.

πŸ’‘ Purpose of Use

πŸ§ͺ Usage Example

When used on CBT sites that forbid resize or exiting fullscreen, the script will:

πŸ› οΈ Usage Instructions

A. For Android (Non-Root)

For Android users without root access, Via Browser can be used to inject scripts:

B. For Android (Root)

For users with root access:

πŸ“ Notes & Guidelines

⚠️ DISCLAIMER

πŸͺž Reflection

I created this script initially just to see if CBT systems could be bypassed. I did not intend for others to be tempted to use it during semester exams.

πŸ“œ License & Usage Guidelines

This project is protected by a proprietary license by AX271. Code, scripts, and materials may only be used for security research, education, or internal testing with explicit written permission from the system owner. Any other use, including cheating, bypassing anti-cheat mechanisms, or unauthorized data access, is strictly prohibited. Users assume all risks; AX271 is not responsible for misuse, cheating, or legal violations.

USAGE: IMPORTANT! READ BEFORE USING!

  1. Authorized Use Only: security research, educational study, or controlled internal testing with written permission.
  2. Strict Prohibition: do not cheat, bypass exam proctoring, unlawfully access data, or violate laws or TOS.
  3. Responsible Disclosure: report vulnerabilities responsibly via GitHub Issues ("security" or "legal/takedown").
  4. Assumption of Risk & Indemnity: you assume all risk and indemnify AX271 from claims, damages, liabilities, or costs.
  5. Permission Requirement & Documentation: obtain written authorization if testing systems you do not own; keep proof.
  6. Takedown & Contact: verified requests handled privately; do not disclose sensitive info publicly.
  7. Acknowledgement: by using this repository you confirm you read, understood, and agree to these terms.

LICENSE

COPYRIGHT (c) 2025 AX271
ALL RIGHTS RESERVED

  1. Grant of License: Limited, non-exclusive, non-transferable, revocable license for security research, education, and internal testing only.
  2. Prohibited Uses: You may not use, copy, modify, distribute, sublicense, publish, or otherwise make available the materials to:
    • a) Circumvent, disable, or defeat anti-cheat or monitoring mechanisms
    • b) Access, extract, alter, or exfiltrate data without permission
    • c) Facilitate academic dishonesty, fraud, or unlawful acts
  3. No Warranty: Provided "AS IS" without warranties of any kind.
  4. Limitation of Liability: AX271 not liable for any damages arising from use.
  5. Indemnification: You agree to defend, indemnify, and hold harmless AX271 from claims or losses.
  6. Termination: License effective until terminated; must cease use and destroy copies upon termination.
  7. Governing Law: Laws of Indonesia, DKI Jakarta.
  8. Miscellaneous: No waiver valid unless in writing signed by AX271; headings are for convenience only.

Latest Beta CBT-Bypass Code

Copy the code below and replace the corresponding file in your browser:


// ==UserScript==
// @name         CBPS v4.1.5 - Beta
// @namespace    https://viayoo.com/
// @version      4.1.5 Beta
// @description  Interception for mobile height/resize handling AND Anti-Copy Detection
// @author       AX271
// @run-at       document-start
// @match        https://{website_address}/*
// @grant        none
// ==/UserScript==

(() => {
    'use strict';

    try {
        const neutralEvents = [
            'copy','cut','paste',
            'selectstart','selectionchange',
            'contextmenu','visibilitychange',
            'blur','focus',
            'keydown','keyup',
            'beforecopy'
        ];

        neutralEvents.forEach(type => {
            document.addEventListener(type, e => {
                e.stopImmediatePropagation();
            }, true);

            window.addEventListener(type, e => {
                e.stopImmediatePropagation();
            }, true);
        });

        const props = [
            'oncopy','oncut','onpaste',
            'onselectstart','onselectionchange',
            'oncontextmenu','onvisibilitychange',
            'onblur','onfocus',
            'onkeydown','onkeyup','onbeforecopy'
        ];

        const applyOverride = (obj) => {
            props.forEach(prop => {
                try {
                    Object.defineProperty(obj, prop, {
                        configurable: true,
                        get() { return null; },
                        set(_) {}
                    });
                } catch (e) {}
            });
        };

        applyOverride(document);
        applyOverride(window);

        document.addEventListener("DOMContentLoaded", () => {
            if (document.body) applyOverride(document.body);
        }, true);

    } catch (e) {}

    const getDeviceHeight = () => {
        try {
            return (window.outerHeight || (window.screen && window.screen.height) || document.documentElement.clientHeight || window.innerHeight || 0) | 0;
        } catch (e) {
            return 0;
        }
    };

    const getDeviceWidth = () => {
        try {
            return (window.outerWidth || (window.screen && window.screen.width) || document.documentElement.clientWidth || window.innerWidth || 0) | 0;
        } catch (e) {
            return 0;
        }
    };

    function applyCssHeight(h) {
        try {
            const docEl = document.documentElement;
            const body = document.body;
            if (docEl) {
                docEl.style.minHeight = `${h}px`;
                docEl.style.height = `${h}px`;
            }
            if (body) {
                body.style.minHeight = `${h}px`;
                body.style.height = `${h}px`;
            }
            const vh = (h / 100);
            document.documentElement.style.setProperty('--vh', `${vh}px`);
        } catch (e) {}
    }

    const overrides = [];
    try {
        Object.defineProperty(window, 'innerHeight', { configurable: true, get: () => getDeviceHeight() });
        overrides.push('innerHeight');
    } catch (e) {}

    try {
        Object.defineProperty(window, 'innerWidth', { configurable: true, get: () => getDeviceWidth() });
        overrides.push('innerWidth');
    } catch (e) {}

    try {
        const realVV = window.visualViewport;
        const makeVV = () => ({
            get height() { return getDeviceHeight(); },
            get width() { return getDeviceWidth(); },
            get scale() { return (realVV && realVV.scale) || 1; },
            addEventListener(type, fn, opts) {
                if (!type) return;
                if (type === 'resize' || type === 'orientationchange') return;
                if (realVV && typeof realVV.addEventListener === 'function') return realVV.addEventListener(type, fn, opts);
            },
            removeEventListener(type, fn, opts) {
                if (realVV && typeof realVV.removeEventListener === 'function') return realVV.removeEventListener(type, fn, opts);
            }
        });
        Object.defineProperty(window, 'visualViewport', { configurable: true, get: makeVV });
        overrides.push('visualViewport');
    } catch (e) {}

    try {
        if (window.screen) {
            try { Object.defineProperty(screen, 'availHeight', { configurable: true, get: () => getDeviceHeight() }); overrides.push('screen.availHeight'); } catch (e) {}
            try { Object.defineProperty(screen, 'height', { configurable: true, get: () => getDeviceHeight() }); overrides.push('screen.height'); } catch (e) {}
        }
    } catch (e) {}

    const blockedEvents = new Set(['resize', 'orientationchange']);
    const origAdd = EventTarget.prototype.addEventListener;
    const origRemove = EventTarget.prototype.removeEventListener;

    EventTarget.prototype.addEventListener = function (type, listener, options) {
        try { if (typeof type === 'string' && blockedEvents.has(type)) return; } catch (e) {}
        return origAdd.call(this, type, listener, options);
    };

    EventTarget.prototype.removeEventListener = function (type, listener, options) {
        return origRemove.call(this, type, listener, options);
    };

    const origDispatch = EventTarget.prototype.dispatchEvent;
    EventTarget.prototype.dispatchEvent = function (ev) {
        try { if (ev && typeof ev.type === 'string' && blockedEvents.has(ev.type)) return false; } catch (e) {}
        return origDispatch.call(this, ev);
    };

    try { Object.defineProperty(window, 'onresize', { configurable: true, get() { return null; }, set(_) {} }); } catch (e) {}

    const applyNow = () => { const h = getDeviceHeight() || 1; applyCssHeight(h); };
    applyNow();

    try {
        const mo = new MutationObserver(() => applyNow());
        if (document && document.documentElement) mo.observe(document.documentElement, { childList: true, subtree: true, attributes: true });
        document.addEventListener && document.addEventListener('visibilitychange', () => { if (document.visibilityState === 'visible') applyNow(); }, { passive: true });
        const reinforceInterval = setInterval(applyNow, 750);
        window.__CBPS_restore = () => { try { clearInterval(reinforceInterval); mo.disconnect(); EventTarget.prototype.addEventListener = origAdd; EventTarget.prototype.removeEventListener = origRemove; EventTarget.prototype.dispatchEvent = origDispatch; } catch (e) {} };
    } catch (e) {}

    try { window.__CBPS_info = { overrides, blockedEvents: Array.from(blockedEvents) }; } catch (e) {}

})();
   
View other version