• 01 July 2026 (40 messages)
  • @tcmz_c #12317 08:31 AM, 01 Jul 2026
    Joined.
  • @Ai_roco #12318 11:16 AM, 01 Jul 2026
    Joined.
  • @Ai_roco #12319 11:17 AM, 01 Jul 2026
    Hello

    I am using Workstation Pro 25H2
    windows 11 as Gust
    disable VBS and Hyper-V
    using EfiGuard to patch

    but when using this command ".debug prepare serial 115200 com1" directly BSOD with the error code DRIVER_IRQL_NOT_LESS_OR_EQUAL

    I used Hyperdbg lasts beta also 0.18.1 same problem for both also try .connect local but when load vmm same issue

    the processor is Intel Core i7
  • @Ai_roco ↶ Reply to #12319 #12320 11:18 AM, 01 Jul 2026
    @HughEverett

    Coming from github
  • Hey
    What generation is your processor?
  • @Ai_roco ↶ Reply to #12321 #12322 12:03 PM, 01 Jul 2026
    12th Gen Intel(R) Core(TM) i7
  • Could you also test v0.20-beta?
    https://github.com/HyperDbg/HyperDbg/releases/tag/v0.20-beta
    Release v0.20-beta · HyperDbg/HyperDbg

    HyperDbg v0.20-beta is released! If you’re enjoying HyperDbg, don’t forget to give a star 🌟 on GitHub! Please visit Build & Install to configure the environment for running HyperDbg. Check out ...

  • @Ai_roco ↶ Reply to #12323 #12324 12:06 PM, 01 Jul 2026
    Already test both

    0.20-beta
    0.18.1

    same problem
  • Could you connect to a windbg using kdnet? I might be able to help if I could have the results of '!analyze -v'.
  • Generally a 12 gen core processor should work unless there is a bug or the UEFI firmware behaves weirdly once configuring memory mapped regions.
  • @Ai_roco ↶ Reply to #12325 #12327 12:10 PM, 01 Jul 2026
    I will try.
  • Also, before you try, could you please test the latest version of the 'dev' branch too? You can compile it using VS2026 but if you don't have Visual Studio setup, you can download the CI/CD artifacts from here:
    https://github.com/HyperDbg/HyperDbg/actions/runs/28387577701
    Fix concatenation error for hyperkd string on the hypertrace project · HyperDbg/HyperDbg@2b0cc18

    State-of-the-art native debugging tools. Contribute to HyperDbg/HyperDbg development by creating an account on GitHub.

  • There is a small change in the loading of VMM which is fixed in the 'dev' branch, I suspect it might be the reason for the error.
  • @Ai_roco ↶ Reply to #12328 #12330 12:12 PM, 01 Jul 2026
    I have the 2022 version and it does not have the full requirement
  • You can use github artifact files.
  • @Ai_roco ↶ Reply to #12331 #12332 12:15 PM, 01 Jul 2026
    On it
  • @Ai_roco ↶ Reply to #12331 #12333 12:28 PM, 01 Jul 2026
    I got this error when trying without disable the DSE

    But after disable the same problem happened
  • @Ai_roco ↶ Reply to #12333 #12334 12:28 PM, 01 Jul 2026
    this is the dev version
  • Okay, the only way is too know what is happening there. We need result of '!analyze -k' from windbg.
  • @Ai_roco ↶ Reply to #12335 #12336 12:39 PM, 01 Jul 2026
    you want first to connect through windbg live mode

    or use the crash memory dump ??
  • Windbg over kdnet is preferred.
  • @Ai_roco ↶ Reply to #12337 #12338 12:55 PM, 01 Jul 2026
    Break instruction exception - code 80000003 (first chance)
    Unable to load image hyperhv.dll, Win32 error 0n2
    hyperhv+0x1299:
    fffff800`44061299 cc int 3
    0: kd> !analyze -k
    Connected to Windows 10 26100 x64 target at (Wed Jul 1 15:48:55.460 2026 (UTC + 3:00)), ptr64 TRUE
    Loading Kernel Symbols
    ...............................................................
    ................................................................
    ................................................................
    .........
    Loading User Symbols
    .................................
    Loading unloaded module list
    .........
    Unable to load image \??\C:\Users\jonny\Desktop\release\hyperhv.dll, Win32 error 0n2

    Unknown option '-k'
    *******************************************************************************
    * *
    * Bugcheck Analysis *
    * *
    *******************************************************************************

    Unknown bugcheck code (0)
    Unknown bugcheck description
    Arguments:
    Arg1: 0000000000000000
    Arg2: 0000000000000000
    Arg3: 0000000000000000
    Arg4: 0000000000000000

    Debugging Details:
    ------------------

    BUGCHECK_CODE: 0

    BUGCHECK_P1: 0

    BUGCHECK_P2: 0

    BUGCHECK_P3: 0

    BUGCHECK_P4: 0

    PROCESS_NAME: hyperdbg-cli.exe

    ERROR_CODE: (NTSTATUS) 0x80000003 - {EXCEPTION} Breakpoint A breakpoint has been reached.

    SYMBOL_NAME: hyperhv+1299

    MODULE_NAME: hyperhv

    IMAGE_NAME: hyperhv.dll

    FAILURE_BUCKET_ID: 0x0_hyperhv!unknown_function

    FAILURE_ID_HASH: {c999474f-51ff-f2c4-4b94-1233318d2035}

    Followup: MachineOwner
    ---------
  • Oh okay, this one is probably easy to understand (find) the error.
  • Since it is within the hyperhv module (not in a random place).
  • Could you please load the pdb files (pdb file of hyperhv) so windbg could map hyperhv+1299 to the function name.
  • @Ai_roco ↶ Reply to #12341 #12342 01:23 PM, 01 Jul 2026
    SYMBOL_NAME: hyperhv!AsmVmxSaveState+29

    MODULE_NAME: hyperhv

    IMAGE_NAME: hyperhv.dll

    STACK_COMMAND: .process /r /p 0xfffff802769cef00; .thread /r /p 0xffff9a8d0a7bd080 ; kb

    BUCKET_ID_FUNC_OFFSET: 29

    FAILURE_BUCKET_ID: 0x0_hyperhv!AsmVmxSaveState
  • now send the result of this in windbg:

    u hyperhv!AsmVmxSaveState+29
  • @Ai_roco #12344 01:24 PM, 01 Jul 2026
    1: kd> u hyperhv!AsmVmxSaveState+29
    hyperhv!AsmVmxSaveState+0x29 [D:\a\HyperDbg\HyperDbg\hyperdbg\hyperhv\code\assembly\AsmVmxContextState.asm @ 39]:
    fffff802`0dde1299 cc int 3
    fffff802`0dde129a eb00 jmp hyperhv!AsmVmxRestoreState (fffff802`0dde129c)
    hyperhv!AsmVmxRestoreState [D:\a\HyperDbg\HyperDbg\hyperdbg\hyperhv\code\assembly\AsmVmxContextState.asm @ 48]:
    fffff802`0dde129c 4881c400010000 add rsp,100h
    fffff802`0dde12a3 415f pop r15
    fffff802`0dde12a5 415e pop r14
    fffff802`0dde12a7 415d pop r13
    fffff802`0dde12a9 415c pop r12
    fffff802`0dde12ab 415b pop r11
  • and this:
    hyperhv+1299
  • @Ai_roco ↶ Reply to #12345 #12346 01:25 PM, 01 Jul 2026
    it should be the same ??
  • @Ai_roco ↶ Reply to #12345 #12347 01:25 PM, 01 Jul 2026
    1: kd> u hyperhv+1299
    hyperhv!AsmVmxSaveState+0x29 [D:\a\HyperDbg\HyperDbg\hyperdbg\hyperhv\code\assembly\AsmVmxContextState.asm @ 39]:
    fffff802`0dde1299 cc int 3
    fffff802`0dde129a eb00 jmp hyperhv!AsmVmxRestoreState (fffff802`0dde129c)
    hyperhv!AsmVmxRestoreState [D:\a\HyperDbg\HyperDbg\hyperdbg\hyperhv\code\assembly\AsmVmxContextState.asm @ 48]:
    fffff802`0dde129c 4881c400010000 add rsp,100h
    fffff802`0dde12a3 415f pop r15
    fffff802`0dde12a5 415e pop r14
    fffff802`0dde12a7 415d pop r13
    fffff802`0dde12a9 415c pop r12
    fffff802`0dde12ab 415b pop r11
  • yes
  • okay, for some reasons 'VmxVirtualizeCurrentSystem' failed.
  • @HughEverett #12350 01:35 PM, 01 Jul 2026
    Could you put several DbgBreakPoint(); in these locations? I wanna see why it returns FALSE.
  • @HughEverett #12352 01:36 PM, 01 Jul 2026
    I think the code should be failed here, if that's the case, please put another breakpoint here and read the 'ErrorCode' so we could understand why you couldn't execute the VMLAUNCH instruction.
  • Feel free to use old versions (v0.18 source code with VS2022) to compile it.
  • Literally remote kernel debugging
  • @Ai_roco ↶ Reply to #12353 #12355 01:58 PM, 01 Jul 2026
    Couldn't build it
    Thank you for your time
  • 👍
  • 03 July 2026 (6 messages)
  • @Ai_roco ↶ Reply to #12356 #12359 02:07 PM, 03 Jul 2026
    Hi
    I used the dev version with windows 10 it works fine
    the problem was with the windows 11.
  • Hi
    Maybe the reason was Windows SDK
  • @PrefetchW #12363 09:57 PM, 03 Jul 2026
    Joined.
  • @Aramanando #12364 09:57 PM, 03 Jul 2026
    Hello @PrefetchW
  • @PrefetchW #12365 09:57 PM, 03 Jul 2026
    Hi aramando
  • @PrefetchW #12366 09:57 PM, 03 Jul 2026
    Thank you for the warm welcome ❤️
  • 04 July 2026 (1 messages)
  • @gsmmamu #12367 09:53 PM, 04 Jul 2026
    Joined.
  • 05 July 2026 (1 messages)
  • @hyperdbg_io #12368 02:05 PM, 05 Jul 2026
    HyperDbg v0.21 is released! 🪐💫

    This release includes numerous bug fixes, improved stability, and significant progress toward integrating Intel PT (Processor Trace) into HyperDbg.

    Check it out:
    https://github.com/HyperDbg/HyperDbg/releases/tag/v0.21
  • 08 July 2026 (1 messages)
  • @mahdigolshani96 #12370 08:37 PM, 08 Jul 2026
    Joined.
  • 09 July 2026 (1 messages)
  • @Pokomier #12371 05:49 AM, 09 Jul 2026
    Joined.
  • 10 July 2026 (4 messages)
  • @257486105 #12372 03:00 AM, 10 Jul 2026
    Does hyperdbg now support debugging using the intel pt mechanism?
  • It's not fully supported yet but just in case if you want to test it, you can use the following command:
    !pt enable path "c:\programs\my exe file.exe" size 0x200000 core 3
  • @HughEverett #12374 11:40 AM, 10 Jul 2026
    But just keep in mind, other parameters of the '!pt' command are not yet done, only the 'enable' and the 'path' params are working.
  • @HackerSecurity #12375 02:13 PM, 10 Jul 2026
    Joined.
  • 12 July 2026 (9 messages)
  • @257486105 #12379 04:23 AM, 12 Jul 2026
    Which is better for debugging a hypervisor driver, windbg or Visual studio?
  • @257486105 #12380 04:26 AM, 12 Jul 2026
    does the hypervisor driver load dlls into the kernel space?
  • @HyperDbgBot #12381 b o t 05:23 AM, 12 Jul 2026
    [discord] <unrustled.jimmies> what do you mean by windbg or visual studio?
  • as I understand it, the classic way to debug a driver is with windbg. But it is possible to debug directly in the visual studio window, as if it were a user application
  • @Nurudeen_audu #12384 12:43 PM, 12 Jul 2026
    Joined.
  • AFAIK, their core debuggers are the same (they both use WinDbg routines embedded in the kernel).
  • @hyperdbg_io #12387 08:45 PM, 12 Jul 2026
    Need to debug interrupts, faults, or exceptions? HyperDbg has plenty of commands to help!

    Use !exception to intercept exceptions (the first 32 entries of the IDT) and !interrupt to intercept interrupts (IDT entries 32–255).

    You can also step through ISR instructions, inspect the IDT with !idt, and explore the Local APIC and I/O APIC state in both xAPIC and x2APIC modes using !apic and !ioapic.

    If you want to create (inject) artificial interrupts, HyperDbg provides a variety of functions for that as well.

    Check it out:

    !exception:
    https://docs.hyperdbg.org/commands/extension-commands/exception

    !interrupt:
    https://docs.hyperdbg.org/commands/extension-commands/interrupt

    !idt:
    https://docs.hyperdbg.org/commands/extension-commands/idt

    !apic:
    https://docs.hyperdbg.org/commands/extension-commands/apic

    !ioapic:
    https://docs.hyperdbg.org/commands/extension-commands/ioapic

    Functions:

    - event_inject: https://docs.hyperdbg.org/commands/scripting-language/functions/events/event_inject

    - event_inject_error_code: https://docs.hyperdbg.org/commands/scripting-language/functions/events/event_inject_error_code
  • it sucks ass. almost nobody does it
  • @staarblitz #12389 10:55 PM, 12 Jul 2026
    use windbg itself
  • 13 July 2026 (2 messages)
  • and what about this part?
  • @8304526502 #12391 03:40 AM, 13 Jul 2026
    Joined.
  • 14 July 2026 (20 messages)
  • @257486105 #12392 07:28 AM, 14 Jul 2026
    there is a problem with rdtsc - hyperdbg hanging.... But cpuid working is done. !msrwire and !ioin also cause problems.
  • @HughEverett
  • Is there any specific type of crash? or just it is hanging?
  • The output to the console goes non-stop... the command used in notepad.exe
  • I see, so technically you are flooding HyperDbg with events in which HyperDbg couldn't service a 'CTRL+C'. If it's the case, couldn't you use conditional statement (if else) to remove a certain number of generated events?
  • but...
    !tsc stage post script{
    if (strcmp($pname, "Notepad.exe") == 0) {
    printf("TSC 1\n");
    printf("RAX proccess: %x\n", @rax);
    printf("RBX proccess: %x\n", @rbx);
    printf("RCX proccess: %x\n", @rcx);
    printf("RDX proccess: %x\n", @rdx);
    printf("TSC 2\n");
    printf("RAX proccess: %x\n", @rax);
    printf("RBX proccess: %x\n", @rbx);
    printf("RCX proccess: %x\n", @rcx);
    printf("RDX proccess: %x\n", @rdx);
    }
    }
    I already use the if then block to get tsc only for a specific exe...
  • @257486105 #12398 12:24 PM, 14 Jul 2026
    cpuid is working fine:
    !cpuid stage pre script{
    if (strcmp($pname, "Notepad.exe") == 0) {
    printf("CPUID 1\n");
    printf("RAX proccess: %x\n", @rax);
    printf("RBX proccess: %x\n", @rbx);
    printf("RCX proccess: %x\n", @rcx);
    printf("RDX proccess: %x\n", @rdx);
    if (@rax==1) {@rax=0;}
    printf("CPUID 2\n");
    printf("RAX proccess: %x\n", @rax);
    printf("RBX proccess: %x\n", @rbx);
    printf("RCX proccess: %x\n", @rcx);
    printf("RDX proccess: %x\n", @rdx);
    }
    }
  • The rate of execution of RDTSC/RDTSCP is usually very high.
  • and by default, even if you specify process ID it has a system-wide effect meaning that RDTSC/RDTSCP will cause VM-exit on all cores and all processes.
  • @HughEverett #12401 12:33 PM, 14 Jul 2026
    The problem with RDTSC/RDTSCP is that emulating them will cause a lot of trouble for the system sicne it breaks some of system's functionalities.
  • @HughEverett #12402 12:33 PM, 14 Jul 2026
    and for this case it will cause VM-exit on all processes and HyperDbg only filters it based on your provided PID (software filtering).
  • @HughEverett #12403 12:36 PM, 14 Jul 2026
    One suggestion that I have for this is that you can make it per process (create VM-exit only on that specific process while remaining without VM-exit on other processes). For implementing it this way, one option that you have is that you can use the same functionality that we have for the '!mode' command to filter based on CR3. Take a look at the implementation of the '!mode' command and use the same implementation to activate and deactivate RDTSC/RDTSCP exiting.
  • This way, only when CR3 is changed and reached to your target process, it activates RDTSC/RDTSCP exiting and once it context switches to another process, it won't cause VM-exit again.
  • @HughEverett #12405 12:38 PM, 14 Jul 2026
    I think if you look at the source code for the '!mode' command you'll understand how you could modify it but in case if you didn't understand any part feel free to send it here so I could help.
  • how would you catch tsc for a specific process (notepad.exe), and what command would you use?
  • I mean the idea is that we cause VM-exits for all Mov-to-CR3-exiting events, and once the target process is reached (at the change of the CR3), you can check for the process id (or process name) and decide whether to enable or disable RDTSC/P exiting from the control registers within VMCS.
  • If I say I need to track all rdtsc for notepad.exe, how can I do it without getting into the hypervisor code?
  • I think it needs hypervisor code modifications.
  • Otherwise it will cause VM-exit on all processes.
  • @morezanj #12411 11:59 PM, 14 Jul 2026
    Joined.
  • 15 July 2026 (28 messages)
  • @itshopelesshopeless #12413 03:53 PM, 15 Jul 2026
    hey so I have this program that allocates a custom payload at the end of a mapped view that triggers a vmexit via cpuid and makes hyperdbg get stuck in vmx root mode because RIP is invalid (it's outside of the page).

    the payload is inside of a mapped view allocated at 0x0000fffd0000 and the cpuid (which triggers the vmexit) is at 0x0000ffffffffe

    i was unable to find a workaround to this. All I could do is just make the program not jump to that payload.
    My question here was, is this worth even "fixing" or is it up to me, as the user, to find my own ways? (just like I described above)

    thanks for your attention!
  • Hey,

    I'm not sure if I understand the scenario. Are you trying to block the execution at a certain point and then depend on the continuation to the execution of a cpuid?
  • The cpuid executes -> VMExit handles it -> It can't go resume execution because the address pointed to by RIP is invalid
  • @itshopelesshopeless #12416 06:30 PM, 15 Jul 2026
    Result: hypervisor halts and never leaves vmx root mode
  • @HughEverett #12417 06:31 PM, 15 Jul 2026
    So you are changing the RIP?
  • I don't understand why CPUID handler should break the RIP.
  • It's not the CPUID handler, it's the VMExit handler that can't resume execution because the next instruction doesn't exist
  • @itshopelesshopeless #12420 06:33 PM, 15 Jul 2026
    I'll make an illustration, one sec
  • I see. But then it should a create a page-fault, and OS should handle it, not HyperDbg.
  • Yes, that's what should happen but the thing is, HyperDbg is unable to get back to non root so the OS handles the page fault
  • Is there any error or something? Like an unhandeled VM-exit after it happens?
  • @itshopelesshopeless #12425 06:37 PM, 15 Jul 2026
    one moment ill replicate it
  • @HughEverett #12426 06:37 PM, 15 Jul 2026
    Because, VM-exit handler of CPUID as far as I remember doesn't have to do anything with the next instruction (but I might be wrong).
  • @itshopelesshopeless #12427 06:37 PM, 15 Jul 2026
    basically the processor performs its guest area checks and it throws an error
  • 👍
  • A guest state invalid VM-exit?
  • sort of
  • @itshopelesshopeless #12431 06:38 PM, 15 Jul 2026
    wait im making the illustration
  • @itshopelesshopeless #12432 06:45 PM, 15 Jul 2026
    I tried to print the contents of RIP to show you it's invalid
  • @itshopelesshopeless #12433 06:45 PM, 15 Jul 2026
    this is the script I made to catch the malicious cpuid "!cpuid pid $arg1 script {
    if (@eip > 0xffff0000)
    {
    printf("suspicious cpuid detected.\n");
    pause();
    }
    }"
  • @itshopelesshopeless #12434 06:46 PM, 15 Jul 2026
    I assume it goes unhandled because it's a guest area check error
  • @itshopelesshopeless #12435 06:47 PM, 15 Jul 2026
    also forgot to mention
  • @itshopelesshopeless #12436 06:48 PM, 15 Jul 2026
    as a result it keeps trying to resume execution by incrementing RIP but fails infinitely
  • I see. Do you happen to have a PoC for generating such a behavior so we can test a HyperDbg patch based on the PoC? Ideally a small C code that could generate this behavior.
  • Sorry for the late response. I'm not home right now and I will work on it as soon as I can
  • @itshopelesshopeless #12439 10:50 PM, 15 Jul 2026
    This behavior comes from a program that's not mine
  • @itshopelesshopeless #12440 10:50 PM, 15 Jul 2026
    But sure I'll write a PoC
  • 16 July 2026 (22 messages)
  • @HyperDbgBot #12441 b o t 01:48 AM, 16 Jul 2026
    [discord] <unrustled.jimmies> [reply]: Yeah this looks like a hypervisor detection check where it switches the cpu to be in compatibility mode and execute a vmexit instruction at max eip so eip overflows per arch but hv just increments it as if it was a 64bit number.

    "a program that's not mine", is it an anticheat?
  • no it's protected malware
  • @HyperDbgBot #12443 b o t 02:06 AM, 16 Jul 2026
    [discord] <unrustled.jimmies> can you send me the bin?
  • you'll get a PoC just wait
  • That would be great. Thanks.
  • You know what? I'm thinking that the same behavior might happen in other conditional/non-conditional VM-exits too. 🤔
  • We could mitigate it for the CPUID but it might be a little bit overkill if we add checks to read the next running instruction in all VM-exits as it might add a considerable overhead to the VM-exit handler.
  • Or maybe even a better solution would be to make these checks whenever Invalid Guest State VM-exit is thrown.
  • @itshopelesshopeless

    I made a patch for this. Could you test it and verify if it fixes the problem?
    (Thanks to a community member for sending mentioning this solution ❤️)

    https://github.com/HyperDbg/HyperDbg/commit/90c1513adb7a83bfb3a1f622130748b9deb2c34e
  • If you couldn't build it, you can use GitHub built artifacts here:

    https://github.com/HyperDbg/HyperDbg/actions/runs/29527259427
    fix checks for long mode if RIP is overflown · HyperDbg/HyperDbg@90c1513

    State-of-the-art native debugging tools. Contribute to HyperDbg/HyperDbg development by creating an account on GitHub.

  • sorry I couldn't write a PoC in time. I should've done that from the beginning
  • no problem. if you could just test this patch that would be fine too.
  • thanks
  • @itshopelesshopeless #12455 07:31 PM, 16 Jul 2026
    it works
  • you mean the problem is solved?
  • @itshopelesshopeless #12457 07:31 PM, 16 Jul 2026
    yeah no halts
  • @itshopelesshopeless #12458 07:32 PM, 16 Jul 2026
    vm is resumed and the page fault exception gets caught
  • @HughEverett #12459 07:32 PM, 16 Jul 2026
    great
  • So, I worked on it a little. I thought that adding this check to all VM-exits (that require a VMRESUME) might be overkill and cause a performance penalty for a scenario that might only occur if anti-debugging or hypervisor evasion methods are present. To avoid incurring this cost by default in HyperDbg, I thought it might be better to move the mitigation for this technique to the HyperEvade project instead.
  • @HughEverett #12461 09:30 PM, 16 Jul 2026
    So, here it is, if you want to use it in the future, you could enable HyperEvade:

    https://github.com/HyperDbg/HyperDbg/commit/14e7d88c3c05c5cde7d51c87b5ecd5d9ce5e5af5
    add fix non long mode RIP overflow to the hyperevade project · HyperDbg/HyperDbg@14e7d88

    State-of-the-art native debugging tools. Contribute to HyperDbg/HyperDbg development by creating an account on GitHub.

  • @itshopelesshopeless #12462 09:32 PM, 16 Jul 2026
    That's great.
  • 17 July 2026 (1 messages)
  • @8978063807 #12465 08:29 AM, 17 Jul 2026
    Joined.
  • 18 July 2026 (2 messages)
  • @1981197956 #12466 06:36 AM, 18 Jul 2026
    Joined.
  • @huodian888 #12467 05:51 PM, 18 Jul 2026
    Joined.
  • 19 July 2026 (9 messages)
  • @HumbleMuns #12468 02:22 AM, 19 Jul 2026
    Joined.
  • @HumbleMuns #12469 07:07 AM, 19 Jul 2026
    Hey all 👋 came across an issue similar to #30 (DRIVER_IRQL_NOT_LESS_OR_EQUAL when reading registers after a break in Debugger Mode) and managed to track it down and get it working on my setup, so I've opened a PR: https://github.com/HyperDbg/HyperDbg/pull/648 🙂
    Fix DRIVER_IRQL_NOT_LESS_OR_EQUAL when reading registers on a manually-halted core by munraimix · Pull Request #648 · HyperDbg/HyperDbg

    Problem In Debugger Mode, breaking the debuggee (Ctrl+C) and then reading registers (e.g. the r command) can bugcheck the debuggee with DRIVER_IRQL_NOT_LESS_OR_EQUAL (0xD1) at IRQL 0xff. This match...

  • Hey,
    Cool. I'll review it later today. 👍
  • And will come back to have if I have any question about this PR.
  • Okay, I went through this issue. First of all, thanks really. It was a really hidden problem, and I see now what you mean, so thanks for putting time and effort into fixing it. I merged your PR. However, I think it is more fundamental than we thought.
  • The problem is that we are using two references for 'regs'. I initially thought this might be a silly idea, as we could simply query the guest registers from the VMX code and completely remove the need for a second reference to the guest registers (just as you did). However, this assumption does not work in certain locations, such as !epthook2, which basically runs everything from VMX non-root mode. Because of this, I created another PR to remove the reference to the guest registers in the debugger (and also replaced some of your code). I believe this approach will prevent possible future errors since we will have only one place for storing and using registers and fundamentally solves this issue.
  • @HumbleMuns I would appreciate it if you could check and test this PR (merged into the dev branch) and tell me if it works (and fixes the problem) or not: https://github.com/HyperDbg/HyperDbg/commit/d37352fd7ee3b7c9a4a5383c847f210dc6c3d716
  • @getting458 #12476 11:10 PM, 19 Jul 2026
    Yes, I would like to refine this approach into a stable model.

    The core idea is not to let the reader determine which process is accessing the target page at read time. Instead, the reader should use a separate address translation path prepared in advance:

    Target process VA
    -> target guest PFN G0
    -> EPT
    -> fake host PFN F

    Reader VA
    -> alias guest PFN G1
    -> EPT
    -> original host PFN O

    The most important point is that the reader’s PTE must not continue pointing to the target’s original guest PFN, G0. Once G0 has been redirected to the fake page through EPT, any access through G0 will also reach the fake page.

    The reader must therefore point to a new alias guest PFN, G1, while EPT maps G1 to the real original backing page.

    The proposed design is as follows.

    1. Prepare an alias guest PFN for every payload page

    The most stable option may be to allocate and lock one page of nonpaged physical memory and use it as a placeholder PFN.

    For example:

    G1 = guest PFN of the alias placeholder page

    The original contents of this page are irrelevant. Its purpose is simply to provide a valid PFN that Windows and the reader’s PTE can reference.

    2. Create two stable EPT mappings

    G0 -> fake PFN, R/W/X
    G1 -> original PFN, read-only, X=0, W=0

    With this arrangement, the target process always sees the fake page and can read, write, and execute it without generating frequent traps.

    The reader accesses only its own alias VA and therefore always sees the original page.

    3. Modify the reader’s VA or PTE mapping

    When the reader uses a fixed kernel virtual address:

    reader_va PTE.PFN = G1

    When the reader dynamically maps physical pages, the mapping path must be modified so that it maps G1 instead of G0.

    4. Handle synchronization correctly

    After modifying the reader’s PTE, the TLB entry for the reader’s virtual address must be invalidated.

    After changing EPT mappings, INVEPT must be performed.

    The cache type must also remain consistent with the original page. The same host physical page should not be aliased through incompatible memory-cache attributes.

    5. The following validation matrix must pass

    Target reads G0 -> fake page
    Target writes G0 -> fake page
    Target executes G0 -> fake page
    Reader reads reader_va/G1 -> original page
    High-frequency reader access -> no increase in EPT violations
    Target writes do not modify the original page

    Failure handling should also be strict. If the reader alias cannot be created, or if the reader is detected pointing to G0 again, the system must not report that initialization completed successfully.

    Once the reader’s PTE points to G0, EPT will redirect its access to the fake page as well.

    In summary, EPT provides two fixed mappings:

    G0 -> fake
    G1 -> original

    The reader is separated through its PTE or mapping path:

    The reader never accesses G0. It accesses only G1.

    This should be more suitable for high-frequency access than switching EPTPs or handling every read through EPT violations.

    Could experienced developers please comment on whether this design is realistically implementable?

    This proposed solution was generated with the help of AI, so I would especially appreciate feedback about any incorrect assumptions involving Windows PFN management, PTE modification, EPT aliasing, TLB invalidation, cache attributes, or page lifetime management.

    My actual goal is to make a particular kernel module always receive a specified value when it reads a certain memory address, while normal execution, reads, and writes through that memory address continue to observe a different value.

    I am not looking for a design that triggers an EPT violation on every access. In my current high-frequency scenario, trap-based EPT handling causes severe performance problems and may freeze the system. The requirement is therefore a stable dual-view mapping with no per-read trapping on the normal access path.
  • @getting458 #12477 11:11 PM, 19 Jul 2026
    @HughEverett Help me out, pro.
  • 20 July 2026 (20 messages)
  • your message is longer than my physics exam lecture
  • Tested your dev commit on bare metal (Intel 9th gen, Win11 24H2, serial debugger mode). Break then r now returns the registers fine, no more 0xD1, and g continues cleanly too. Confirmed fixed on my hardware. Thanks for sorting it so quick, and nice call collapsing it down to one reg reference.
  • @hyperdbg_io #12480 06:44 AM, 20 Jul 2026
    HyperDbg v0.22 is released! 💫

    Apart from bringing bug fixes, major progress toward porting HyperDbg for #Linux, HyperDbg now supports structures in the script engine.

    This version also introduces new commands to display linked lists.

    Check it out:
    https://github.com/HyperDbg/HyperDbg/releases/tag/v0.22

    For more information,

    Check structures in the script engine:
    https://docs.hyperdbg.org/commands/scripting-language/structures-and-arrays#structures

    displaying linked lists in the virtual memory:
    https://docs.hyperdbg.org/commands/debugging-commands/dl

    And physical memory:
    https://docs.hyperdbg.org/commands/extension-commands/dl
    Release v0.22 · HyperDbg/HyperDbg

    HyperDbg v0.22 is released! If you’re enjoying HyperDbg, don’t forget to give a star 🌟 on GitHub! Please visit Build & Install to configure the environment for running HyperDbg. Check out the Q...

  • I'll get back to you later today.
  • great. thanks
  • This release wouldn't have been possible without the help and outstanding work of @xmaple555, @maxraulea, @Ablfzl4m , and @HumbleMuns .
  • @Ablfzl4m ↶ Reply to #12483 #12484 08:10 AM, 20 Jul 2026
    Thanks, Sina, for giving me this opportunity.❤🙏
  • Thanks to you for all your great works ❤️
  • I read this idea; honestly, I'm not sure if I understand it quite accurately. In case you want to have a page with Execute-only permissions while providing read and write access to a different value, isn't that the same as what HyperDbg does with '!epthook'?

    Basically, there is a breakpoint while the process is executing, but if the process or kernel wants to read it, there is nothing there.

    By the way, I might be inaccurate. If that's the case, could you elaborate more on that?
  • @7242493127 #12487 09:47 AM, 20 Jul 2026
    Can HyperDbg automatically bypass common anti-VM checks like CAPE does, or is that something the analyst has to implement manually?
  • @getting458 #12489 02:23 PM, 20 Jul 2026
    @HughEverett Thank you so much for your answer. This is a bit different from EPT. EPT involves canceling one of the three rwx permissions on a page, which causes an exception
  • @getting458 #12490 02:23 PM, 20 Jul 2026
    But it directly modifies your mapped memory address pointer
  • @getting458 #12491 02:23 PM, 20 Jul 2026
    Maybe I got it wrong? From what I found out, that's just how it seems to be?
  • @8703653733 #12492 05:02 PM, 20 Jul 2026
    anyone know a good forum software?
  • xenforo maybe
  • @HyperDbgBot #12494 b o t 07:14 PM, 20 Jul 2026
    [discord] <tallylc> Hello All, I have just come across HyperDbg and am looking forward to experimenting with it. Looks like I have to disable the VBS on my Windows 11 (x64) first.
  • @HyperDbgBot #12495 b o t 08:09 PM, 20 Jul 2026
    [discord] <rayanfam> [reply]: yes, you can follow instructions here: https://docs.hyperdbg.org/getting-started/build-and-install
    Build & Install | HyperDbg Documentation

    This document helps you to build and install HyperDbg

  • maybe
  • @HyperDbgBot #12497 b o t 09:58 PM, 20 Jul 2026
    [discord] <tallylc> [reply]: Thanks and i am working on making the changes to my Windows 11 (x64). I also had a question in wondering if there were plans to make a UEFI bootable version that could have nested virtualization so that you would not have to go through all of the configuration changes?

    On that note, there is an interesting project called Bitvisor (https://www.bitvisor.org/en/) that I have played with a bit in the past and although it is not a debugger, it is a type of Para- passthrough hypervisor that can coexist with Hyper-V. Just my thoughts on things so far but have to admit that what i have seen and learned so far in the videos about HyperDbg is really awesome and your team has done an amazing job. 🙂
  • 21 July 2026 (15 messages)
  • You're right. Yes, in that case, it could be useful, and it is also possible to implement it with the least modification to the HyperDbg core if you want to use HyperDbg as the baseline.
  • @HyperDbgBot #12499 b o t 10:47 AM, 21 Jul 2026
    [discord] <rayanfam> [reply]: Thanks 🙏. Yes it's possible to release HyperDbg as a UEFI module and support nested virtualization.
  • @HyperDbgBot #12500 b o t 10:49 AM, 21 Jul 2026
    [discord] <rayanfam> [reply]: This is also in the todo list, hopefully we could reach to it in the future. Right now, we are actively working on porting HyperDbg to Linux, enhancing hypertrace project (for supporting Intel PT) and improving hyperevade project for anti-anti-debug and hypervisor methods.
  • @z1q22 #12501 04:30 PM, 21 Jul 2026
    Joined.
  • @HyperDbgBot #12502 b o t 06:13 PM, 21 Jul 2026
    [discord] <unrustled.jimmies> [reply]: > nested virtualization

    debugging hyperv with hyperdbg coming soon 👀
  • @HyperDbgBot #12503 b o t 06:16 PM, 21 Jul 2026
    [discord] <rayanfam> [reply]: Not really planned for now. It is just in the todo list. Might take years to come unless we find someone interested in implementing that. 🙂
  • @honorary_bot #12504 06:16 PM, 21 Jul 2026
    I'll take it if I'm laid off soon ;)
  • @HyperDbgBot #12505 b o t 06:16 PM, 21 Jul 2026
    [discord] <unrustled.jimmies> haha yeah ik, having nested virtualization that can boot another bluepill style hv is totally different than being able to boot hyperv under it.
  • Then I hope you get laid off soon. 😅😉
  • @honorary_bot #12507 06:18 PM, 21 Jul 2026
    Thanks mate :D
  • Sure thing 🫡
  • @HyperDbgBot #12509 b o t 09:19 PM, 21 Jul 2026
    [discord] <tallylc> [reply]: Any projections on the Linux version. Mostly just wondering?
  • @HyperDbgBot #12510 b o t 09:26 PM, 21 Jul 2026
    [discord] <rayanfam> [reply]: @maxraulea is leading this project. He is more informed about the current state.
  • @HyperDbgBot #12511 b o t 09:30 PM, 21 Jul 2026
    [discord] <maxraulea> [reply]: Rn we are just getting to a compiled version with stubs for some OS specific parts, the user space lib (libhyprdbg) almost compiles, a couple of files left. Then we will have to compile the kernel module and fill in the stubs for linux for the userspace
  • @HyperDbgBot #12512 b o t 09:33 PM, 21 Jul 2026
    [discord] <rayanfam> [reply]: 👍 🫡
  • 22 July 2026 (5 messages)
  • @HyperDbgBot #12513 b o t 03:47 AM, 22 Jul 2026
    [discord] <q_iwirieow> hello
  • @HyperDbgBot #12514 b o t 03:47 AM, 22 Jul 2026
    [discord] <q_iwirieow> is there an mcp server for hyperdbg
  • @HyperDbgBot #12515 b o t 03:47 AM, 22 Jul 2026
    [discord] <q_iwirieow> gotta get claude up to skid
  • @HyperDbgBot #12516 b o t 07:17 AM, 22 Jul 2026
    [discord] <jakob944> [reply]: wrong debugger
  • @HyperDbgBot #12517 b o t 10:37 AM, 22 Jul 2026
    [discord] <q_iwirieow> [reply]: edited
  • 23 July 2026 (8 messages)
  • HyperDbg doesn't have an MCP server yet 😞
  • @HughEverett #12520 03:21 PM, 23 Jul 2026
    A new command 'ucpuid' is added thanks to @anti_zealot :

    https://docs.hyperdbg.org/commands/debugging-commands/ucpuid#command
    ucpuid (execute CPUID instruction in debuggee) | HyperDbg Documentation

    Description of the 'ucpuid' command in HyperDbg.

  • Feel free to test it, it's on the 'dev' branch now.
  • I appreciate you my brother, almighty God bless you 🙏✌️
  • @HyperDbgBot #12523 b o t 04:29 PM, 23 Jul 2026
    [discord] <q_iwirieow> [reply]: do you know anything about this? its quite old

    https://github.com/HyperDbg/mcp
    GitHub - HyperDbg/mcp: HyperDbg's MCP Server

    HyperDbg's MCP Server. Contribute to HyperDbg/mcp development by creating an account on GitHub.

  • I don't think that it's on a working state.
  • But if you have any idea of writing an MCP server, let me know so we can host on the GitHub org. Basically it should be some AI generated MCP server.
  • @HyperDbgBot #12526 b o t 04:51 PM, 23 Jul 2026
    [discord] <q_iwirieow> [reply]: Ok
  • 24 July 2026 (1 messages)
  • @8489108246 #12527 09:08 PM, 24 Jul 2026
    Joined.
  • 25 July 2026 (1 messages)
  • @anti_zealot #12528 02:43 PM, 25 Jul 2026
    Joined.
  • 26 July 2026 (6 messages)
  • I could probs have a look into this
  • @HumbleMuns #12530 01:59 AM, 26 Jul 2026
    I'll build something out and PR it
  • 👍
  • @hyperdbg_io #12533 10:08 PM, 26 Jul 2026
    Major milestone in bringing HyperDbg to Linux! 🐧

    Huge thanks to @MaxRaulea, all HyperDbg user-mode modules now compile on Linux. 🎉🪐💫

    Next step is porting the kernel modules...
  • 🔥🔥🔥
  • @HyperDbgBot #12535 b o t 11:23 PM, 26 Jul 2026
    [discord] <q_iwirieow> get 3 opus 5 agents to make this shit work on amd
  • 27 July 2026 (5 messages)
  • 👍👍👍
  • @HumbleMuns #12539 12:56 PM, 27 Jul 2026
    Hey Sina, following up on your note about wanting an MCP server for HyperDbg. I built one and put it up here: https://github.com/munraimix/hyperdbg-mcp

    It's a Python MCP server that drives HyperDbg through libhyperdbg over ctypes (no HTTP shim), so it gets the script engine and structured SDK calls, not just CLI text. Around 77 tools covering registers, memory, disassembly, breakpoints, events and hooks, paging, symbols, and the hardware SDK. Works in both local VMI mode and Debugger Mode (serial, named pipe, net), connects lazily so the agent attaches on demand, and ships a read-only mode plus a confirmation gate on anything that mutates the target. GPLv3 to match the rest of HyperDbg.

    I've run it end to end on a real two-machine serial rig: connect, read ring-0 registers, disassemble at RIP, clean disconnect. Building it also surfaced a serial framing bug (the receiver floods and can wedge the driver after an unclean disconnect), so I opened a fix for that against dev: https://github.com/HyperDbg/HyperDbg/pull/663 (Fixes #661).

    Happy to have the org host it however you prefer: transfer the repo, move it under HyperDbg/mcp, or use it as a base. Open to feedback on the tool design too.
  • Hey,
    Thank you very much.
    I would appreciate if you could add it here:
    https://github.com/HyperDbg/mcp
    GitHub - HyperDbg/mcp: HyperDbg's MCP Server

    HyperDbg's MCP Server. Contribute to HyperDbg/mcp development by creating an account on GitHub.

  • And for the PR, yes, that's great. I saw it. I'll review it in the coming day and will merge it. Also do you have an example that I could create the issue that you mentioned for reproducing it?
  • Thanks again for all your efforts ❤️
  • 28 July 2026 (6 messages)
  • Thanks Sina, really appreciate it 🙏

    Done, I opened it as a PR into the org repo: https://github.com/HyperDbg/mcp/pull/1 (it swaps the old Go prototype for the Python server). Happy to adjust the structure, naming, or packaging to whatever you prefer.

    For the serial bug, I'll get you a clean reproduction example this afternoon so you can spin up the issue and verify it easily.

    And no rush on #663, thanks for taking a look 👍
    Python MCP server for HyperDbg (replaces the Go prototype) by munraimix · Pull Request #1 · HyperDbg/mcp

    Per @HughEverett's request in the HyperDbg group, this replaces the earlier (non-working) Go prototype with a working Python MCP server for HyperDbg. What it is A Model Context Protocol ser...

  • Reproduction is up on the issue: https://github.com/HyperDbg/HyperDbg/issues/661#issuecomment-5103311367

    Good news is it needs no driver, no test-signing and no hypervisor, since the debuggee runs its handshake loop before the module is loaded. So one machine with a com0com pair is enough: `.debug prepare serial 115200 com10` on one end, then write a continuous stream of marker-free bytes to the other end.

    I ran it against both builds with the same 327680 bytes. On dev it prints the "exceeds the buffer limitation" plus "invalid buffer received" pair once per 81920 bytes and the handshake retries stop. With #663 it prints one resync line and the handshake loop keeps running. Counts and the exact console output are in the comment.
    Debuggee floods "buffer exceeds the buffer limitation" and cannot resync after an unclean serial disconnect · Issue #661 · HyperDbg/HyperDbg

    Component: hyperkd, hyperdbg/hyperkd/code/debugger/communication/SerialConnection.c (SerialConnectionRecvBuffer) Mode: Debugger Mode over serial Summary If the debugger side drops the serial link u...

  • @HyperDbgBot #12545 b o t 01:28 PM, 28 Jul 2026
    [discord] <q_iwirieow> mcp server is such a good idea
  • @HyperDbgBot #12546 b o t 01:28 PM, 28 Jul 2026
    [discord] <q_iwirieow> deadass
  • I see.
  • Great. Thanks
  • 29 July 2026 (7 messages)
  • @Navilyr #12550 01:45 AM, 29 Jul 2026
    Joined.
  • @joebullet #12554 11:17 AM, 29 Jul 2026
    Joined.
  • @joebullet #12555 11:22 AM, 29 Jul 2026
    hey, anybody have experience with debugger mode with two physical machines linked by serial link?
  • @supermanfranky #12556 11:49 AM, 29 Jul 2026
    Are there good first issues or anything a newcomer could work on (who’s been using the tool for a bit)
  • Hey,

    There was a discussion in the group about this in the past. It seems HyperDbg doesn't perform validation of packets, and since the serial port is prone to errors, it fails. So, I don't recommend using it at this stage. However, we have a contributor working on implementing Intel e1000 NICs. I don't know the current progress state, but I suppose it should be ready in the coming months, so I recommend waiting for it to debug a remote machine.
  • Hey,
    Nice that you want to work on HyperDbg. ❤️
    Please check all todo lists here, and if you find any of them interesting or you need more explanation about any of them, mention it here so we can discuss about it:
    https://github.com/orgs/HyperDbg/projects/2
    HyperDbg • HyperDbg

    HyperDbg features development progress

  • @supermanfranky #12559 05:23 PM, 29 Jul 2026
    Thanks!!
  • 30 July 2026 (2 messages)
  • @joebullet #12560 03:58 AM, 30 Jul 2026
    Thanks for the info!
  • @8225016246 #12561 04:38 PM, 30 Jul 2026
    Joined.
  • 31 July 2026 (1 messages)
  • @1858927212 #12562 12:05 PM, 31 Jul 2026
    Joined.