-
Notifications
You must be signed in to change notification settings - Fork 90
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Hello~Dear Mr. Mango #46
Comments
Most kernel functions cannot be used in root-mode because we are effectively running at irql HIGH_LEVEL. As for your second question, that is pretty weird. Maybe it is due to the timing check mitigations that I’ve implemented. |
Thank you very much, Mr. Mango, for answering my question. For the second question, I will continue to test and provide you with the results~ |
Unfortunately it is not possible. Those hypervisors only work because they are done incorrectly and dont properly separate the guest and host state. |
I have included a logger for printing, which you could use instead. |
Yes, I know the um.exe in the project |
Yes, I know what you mean. One solution is to print the address of the logging structure before virtualization, and manually look at the logs using WinDbg if a crash occurs. It is a bit difficult, but possible. |
No, no, no, I think your idea is very clever. This may be the correct way to solve the problem. I'll try it out and see the last log before it freezes |
Mr. Mango, I'm sorry to bother you again~ |
|
For example, if I download a new copy of the HV source code now without making any modifications |
Can you show the exact way that you are using the EPT hooking? |
This may be a bit long, do you have an email? I will directly send the source code to your email. However, I think it works normally in a single core environment, and I don't think the third and fourth items have much to do with the EPT writing. I will try to paste the EPT logic here first to prevent you from being inconvenient to provide an email ULONG64 FakePage=SpawnFakeInfo((ULONG64)NtOpenProcess, (ULONG64)MyNtOpenProcess, (ULONG64*)&OriginalNtOpenProcess); NT_ASSERT(KeGetCurrentIrql() <= APC_LEVEL); // virtualize every cpu
} static uint64_t EptHook(ULONG64 phyaddress,ULONG64 orig_page_pfn, ULONG64 exec_page_pfn) {
} PVOID opage_start=GetPageBaseAddress ((PVOID) FunAddr); Memcpy (JmpFakeAddr+2,&FakeFun, 8); |
If I have an email, I can easily send you the experimental video~Hahaha |
|
Dear Mr. Mango
Your code is really great. I have learned a lot from you and I am very, very grateful to you
But I still have two questions that I would like your answer to. I don't know if it's convenient for you
The first and most important question is why it cannot be used in the vmexit handle
Did you handle functions such as dbgbreakpoint and dbgprintex in any way? I really didn't see it
The second issue is that I found that setting my virtual machine to either 1 or 2 cores can run perfectly, regardless of whether EPT is enabled or not
But when the number of CPUs is increased to 4, the computer will freeze when running, and of course, the physical machine will also freeze directly. Do you know the general direction of the problem
The text was updated successfully, but these errors were encountered: