欢迎使用 WordPress。这是您的第一篇文章。编辑或删除它,然后开始写作吧!
作者: admin
-
电影站
https://www.moxy.top/
-

VmwareHardenedLoader vmware过检测驱动源码
VMware Hardened VM detection mitigation loader
For now, only Windows (vista~win10) x64 guests are supported.
It get VMware guest undetected by VMProtect 3.2, Safengine and Themida (anti-vm feature).
The VmLoader driver patches SystemFirmwareTable at runtime, it removes all detectable signatures like “VMware” “Virtual” “VMWARE”.
Visual Studio 2015 / 2017 and Windows Driver Kit 10 are required.
Open VmLoader.sln with Visual Studio 2015 / 2017
Build VmLoader as x64/Release. (No x86 support for now)
Remember to test-sign “bin/vmloader.sys” if you want to load it in test-sign mode.
Do not install vmtools, it will ruin everything!
Use TeamViewer / AnyDesk / mstsc / VNC viewer instead!
hypervisor.cpuid.v0 = "FALSE" board-id.reflectHost = "TRUE" hw.model.reflectHost = "TRUE" serialNumber.reflectHost = "TRUE" smbios.reflectHost = "TRUE" SMBIOS.noOEMStrings = "TRUE" isolation.tools.getPtrLocation.disable = "TRUE" isolation.tools.setPtrLocation.disable = "TRUE" isolation.tools.setVersion.disable = "TRUE" isolation.tools.getVersion.disable = "TRUE" monitor_control.disable_directexec = "TRUE" monitor_control.disable_chksimd = "TRUE" monitor_control.disable_ntreloc = "TRUE" monitor_control.disable_selfmod = "TRUE" monitor_control.disable_reloc = "TRUE" monitor_control.disable_btinout = "TRUE" monitor_control.disable_btmemspace = "TRUE" monitor_control.disable_btpriv = "TRUE" monitor_control.disable_btseg = "TRUE" monitor_control.restrict_backdoor = "TRUE"If you have a SCSI virtual disk at scsi0 slot (first slot) as your system drive, remember to add
scsi0:0.productID = "Whatever you want" scsi0:0.vendorID = "Whatever you want"I use
scsi0:0.productID = "Tencent SSD" scsi0:0.vendorID = "Tencent"Modify guest’s MAC address to whatever except below:
TCHAR *szMac[][2] = { { _T("\x00\x05\x69"), _T("00:05:69") }, // VMWare, Inc. { _T("\x00\x0C\x29"), _T("00:0c:29") }, // VMWare, Inc. { _T("\x00\x1C\x14"), _T("00:1C:14") }, // VMWare, Inc. { _T("\x00\x50\x56"), _T("00:50:56") }, // VMWare, Inc. };You could add
ethernet0.address = "Some random mac address"Into vmx file instead of modifying MAC address in VMware GUI
I use
ethernet0.address = "00:11:56:20:D2:E8"If an error occurs when start service, use DbgView to capture kernel debug output. you can post an issue with DbgView output information and with your ntoskrnl.exe attached.
If no error occurs, then everything works fine.
VMware guest win8.1 x64 with VMProtect 3.2 packed program (anti-vm option enabled)
This software is released under the MIT License, see LICENSE.
Some util procedures are from https://github.com/tandasat/HyperPlatform
https://github.com/aquynh/capstone is used to disasm ntoskrnl code.
VMware virtual graphic card information could be detected by querying DXGI interface, which could be modified by editing graphic driver files.
-
UnrealVTDbg_cv vt内核调试器源码
编译器:VS2019 SDK: 10.0.019041或最新版本 WKD: WDK10
打开UnrealDbg.sln然后直接编译就行了,注意,需要编译64位版本 UnrealDbgDll只能编译release版本,至于UI则是UnrealDbg项目,使用delphi打开即可
打开nrealDbg.sln后如下图所示
然后直接在解决方案上点生成即可(你也可以单独编译某个项目)
本项目是一个基于 VT(Intel Virtualization Technology)技术构建的调试体系,旨在突破游戏驱动的反调试机制。项目的用户界面使用 Delphi 编写,提供了直观、便捷的操作体验;核心代码则采用 C++ 编写,利用 VT 技术的强大功能实现对游戏驱动的调试。 在游戏外挂开发过程中,游戏驱动的反调试机制常常给调试工作带来巨大的挑战。传统的调试工具往往无法突破这些反调试机制,导致调试工作难以进行。本项目通过利用 VT 技术,实现了一个独立的调试体系,能够绕过游戏驱动的反调试机制,为开发者和安全测试人员提供了一种有效的调试手段。
突破反调试机制:利用 VT 技术,绕过游戏驱动的反调试机制,实现对游戏驱动的调试。 自建调试体系:构建了一个独立的调试体系,不依赖于传统的调试工具,提高了调试的灵活性和可靠性。 直观的用户界面:使用 Delphi 编写的用户界面,提供了直观、便捷的操作体验,方便用户进行调试操作。 C++ 核心代码:采用 C++ 编写的核心代码,利用 VT 技术的强大功能,实现了高效、稳定的调试功能。
UnrealDbg 是一个旨在突破游戏驱动反调试机制的自建调试体系项目,采用 Delphi 和 C++ 混合编程,支持 Windows 10 和 Windows 11 操作系统。该项目通过 VT(Intel Virtualization Technology)技术,构建了一套完整的调试解决方案,涵盖卡密注册、加密、调试、加载、钩子等多个功能模块。
该文件夹是项目的核心目录,包含与基于 VT 技术的自建调试体系相关的主要代码和资源,采用 Delphi 进行开发。
- 项目文件:
UnrealDbg.dpr:Delphi 项目的主程序文件,是程序的入口点。UnrealDbg.dproj:Delphi 项目的配置文件,包含编译选项、依赖项等信息。UnrealDbg.dproj.local:本地项目配置文件,用于存放开发者本地的个性化配置。UnrealDbg.res:Delphi 资源文件,包含图标、菜单等资源信息。
- 子文件夹:
- Forms:存放 Delphi 窗体文件,定义用户界面布局和交互逻辑。例如
Main.dfm和Main.pas可能定义了调试工具的主界面。 - Globals:包含全局变量的定义文件,如
GlobalVar.pas,用于在整个项目中共享数据。 - Network:涉及网络相关功能,如
KeyVerification.pas可能用于卡密的验证,通过网络与服务器进行交互。 - ExternalCall:包含与外部 DLL 交互的代码,如
D_encryptionDll.pas和UnrealDbgDll.pas,用于调用加密 DLL 和调试核心 DLL 的功能。 - LogSystem:负责日志记录,如
Log.pas可能实现了日志的写入和管理功能。 - Handler:可能包含各种事件处理程序,用于处理用户操作和系统事件。
- Common:包含项目中多个子项目共享的代码、头文件、工具类等。
- KernelApi:涉及内核级别的 API 调用,用于与操作系统内核进行交互。
- Threads:包含多线程相关的代码,用于实现并发操作,提高程序的性能和响应速度。
- res:存放资源文件,如图标、图片等。
- Forms:存放 Delphi 窗体文件,定义用户界面布局和交互逻辑。例如
用于卡密注册功能的实现,提供用户界面让用户输入和验证卡密。
- 核心文件:
卡密注册.dpr:Delphi 项目主程序文件,包含程序入口点。卡密注册.dproj:Delphi 项目配置文件,包含编译选项、依赖项等信息。卡密注册.dproj.local:本地项目配置文件,包含开发者本地个性化配置。卡密注册.res:Delphi 资源文件,包含图标、菜单等资源信息。
- 功能实现:通过与服务器进行交互,验证用户输入的卡密是否有效,确保只有合法用户能够使用调试工具。
与加密功能相关,用于对数据进行加密处理,保障数据的安全性。
- 核心文件:
D_encryption.dpr:Delphi 项目主程序文件,包含程序入口点。D_encryption.dproj:Delphi 项目配置文件,包含编译选项、依赖项等信息。D_encryption.dproj.local:本地项目配置文件,包含开发者本地个性化配置。D_encryption.res:Delphi 资源文件,包含图标、菜单等资源信息。
- 加密算法:可能使用了 Blowfish 等加密算法,对敏感数据(如卡密、调试信息等)进行加密。
分别针对 Windows 10 和 Windows 11 系统设计的调试相关模块,提供一系列用于调试操作的接口和功能实现,有助于突破游戏驱动反调试机制。
- 核心文件:
DbgkApi.h和DbgkApi.cpp:定义并实现调试相关的 API 函数,如NtCreateDebugObject、NtDebugActiveProcess等,用于创建调试对象、激活调试进程等操作。Driver.h和Driver.cpp:驱动程序核心文件,DriverEntry负责驱动初始化,Unload负责清理资源。Globals.h和Globals.cpp:定义和管理全局变量。Memory文件夹:包含内存读写相关代码,用于实现对内存的读取和写入操作,如读取游戏进程的内存数据。Asm文件夹:包含汇编代码文件,用于实现高性能或底层操作,如修改 CPU 寄存器的值。Hooks文件夹:特别是EptHook子文件夹,用于实现钩子功能,拦截系统或目标进程的特定操作,如函数调用、系统调用等。Init文件夹:包含初始化相关代码,如符号解析和初始化,确保调试工具能够正确识别和处理系统符号。Encrypt文件夹:特别是Blowfish子文件夹,可能用于实现加密功能,对调试数据进行加密传输。Log文件夹:包含日志相关代码,用于记录调试过程中的信息,方便开发者进行问题排查。List文件夹:包含链表相关代码,用于实现链表数据结构,管理调试对象、进程信息等。Hvm文件夹:包含虚拟机相关代码,用于实现与虚拟机的交互,通过 VT 技术创建虚拟机环境,绕过游戏驱动的反调试机制。
推测用于加载其他模块、驱动或程序,如加载游戏驱动、调试模块或其他必要组件,以实现调试功能。可能通过调用 Windows API 函数(如
LoadLibrary)来加载 DLL 文件。实现钩子技术,拦截系统或目标进程的特定操作,如函数调用、系统调用等,并在操作执行前后插入自定义代码,用于绕过游戏驱动的反调试机制。可能的实现方式包括 EPT 钩子和函数钩子。
- 核心文件:
dllmain.h:定义了钩子相关的函数和变量,如SetupHook用于设置钩子,UnHook用于卸载钩子。detours.h:包含 Detours 库的相关定义,Detours 是一个用于函数拦截和替换的库,可用于实现钩子功能。
VT_Driver 是一个基于 Intel VT(Virtualization Technology)技术的驱动程序项目,旨在利用虚拟化技术创建虚拟机环境,实现绕过游戏驱动反调试机制,为调试游戏驱动提供便利。该项目采用 C++ 语言编写,与操作系统内核紧密交互,实现了一系列复杂的功能,包括虚拟机管理、内存虚拟化、钩子技术、调试事件处理等。 绕过反调试机制:VT_Driver模块基于 Intel VT(Virtualization Technology)技术,通过创建虚拟机环境,能够绕过游戏驱动的反调试机制。这使得开发者在调试游戏驱动时,可以更方便地对其进行分析和修改,找出游戏中存在的问题,例如性能瓶颈、逻辑错误等。 多系统适配调试:DbgkSysWin11和DbgkSysWin10模块分别针对 Windows 11 和 Windows 10 系统开发,确保在不同版本的操作系统上都能实现有效的调试功能。
- 核心文件:
Driver.cpp:驱动程序的入口文件,包含DriverEntry和Unload函数,负责驱动的初始化和卸载操作。EPT.cpp:实现了扩展页表(EPT)相关的功能,如 EPT 钩子、内存映射管理等,用于实现内存虚拟化和钩子技术。vmexit_handler.cpp:处理虚拟机退出事件,根据不同的退出原因执行相应的操作,如中断注入、指令调整等。vmcall_handler.cpp:处理VMCall指令,根据不同的VMCall原因执行相应的功能,如 EPT 钩子操作、断点设置等。
- 头文件:
Driver.h:定义了驱动程序的一些常量、函数原型和数据结构,如IOCTL码、日志输出宏等。vmexit_handler.h:定义了虚拟机退出原因的枚举类型、VM 退出指令信息的联合体,以及处理函数的原型。vmcall_reason.h:定义了VMCall的原因枚举类型,用于区分不同的VMCall功能。
EXTERN_C NTSTATUS DriverEntry(_In_ PDRIVER_OBJECT DriverObject, _In_ PUNICODE_STRING RegistryPath) { UNREFERENCED_PARAMETER(DriverObject); UNREFERENCED_PARAMETER(RegistryPath); DriverObject->DriverUnload = Unload; KdPrint(("DriverEntry!!!\n")); NTSTATUS nStatus = STATUS_SUCCESS; if (InitNtoskrnlSymbolsTable()) { if (!hv::virtualization_support()) { outDebug("VMX operation is not supported on this processor.\n"); return STATUS_UNSUCCESSFUL; } hv::InitGlobalVariables(); if (vmm_init() == false) { hv::disable_vmx_operation(); free_vmm_context(); outDebug("Vmm initialization failed"); return STATUS_UNSUCCESSFUL; } outDebug("�������سɹ�!!!\n"); } else { nStatus = STATUS_UNSUCCESSFUL; outDebug("��������ʧ��!!!\n"); } return nStatus; }
- 功能:驱动程序的入口点,负责初始化驱动程序并启动虚拟机监视器(VMM)。
- 详细步骤:
- 设置驱动的卸载函数为
Unload。 - 调用
InitNtoskrnlSymbolsTable函数初始化 Ntoskrnl 符号表。 - 检查处理器是否支持 VT 技术,如果不支持则输出错误信息并返回失败状态。
- 初始化全局变量,调用
vmm_init函数启动 VMM。 - 如果 VMM 初始化失败,关闭 VT 操作并释放相关资源,输出错误信息并返回失败状态。
- 如果所有操作成功,输出成功信息并返回成功状态。
- 设置驱动的卸载函数为
EXTERN_C bool vmexit_handler(guest_context* guest_registers, PFXSAVE64 fxsave) { __vcpu* vcpu = reinterpret_cast<__vcpu*>(_readfsbase_u64()); guest_registers->rsp = hv::vmread(GUEST_RSP); vcpu->vmexit_info.reason = hv::vmread(VM_EXIT_REASON) & 0xffff; vcpu->vmexit_info.qualification = hv::vmread(EXIT_QUALIFICATION); vcpu->vmexit_info.guest_rflags.all = hv::vmread(GUEST_RFLAGS); vcpu->vmexit_info.guest_rip = hv::vmread(GUEST_RIP); vcpu->vmexit_info.instruction_length = hv::vmread(VM_EXIT_INSTRUCTION_LENGTH); vcpu->vmexit_info.instruction_information = hv::vmread(VM_EXIT_INSTRUCTION_INFORMATION); vcpu->vmexit_info.guest_registers = guest_registers; vcpu->vmexit_info.fxsave = fxsave; vcpu->hide_vm_exit_overhead = false; dispatch_vm_exit(vcpu); if (vcpu->vmx_off_state.vmx_off_executed == true) { vcpu->vcpu_status.vmm_launched = false; RestoreGuest(); return true; } return false; }
- 功能:处理虚拟机退出事件,根据退出原因执行相应的操作。
- 详细步骤:
- 通过
_readfsbase_u64函数获取当前 VCPU 的指针。 - 从 VMCS 中读取相关信息,如
GUEST_RSP、VM_EXIT_REASON等,并存储在vcpu->vmexit_info结构体中。 - 调用
dispatch_vm_exit函数根据退出原因进行分发处理。 - 如果检测到
VMXOFF操作已执行,将 VMM 启动状态设置为false,恢复 Guest 状态,并返回true表示需要停止处理。 - 否则返回
false继续处理。
- 通过
void vmexit_vmcall_handler(__vcpu* vcpu) { bool status = true; unsigned __int64 vmcall_reason = 0; unsigned __int64 vmcall_parameter1 = 0; // ... 其他参数定义 if ((vcpu->vmexit_info.guest_registers->rax != VMCALL_IDENTIFIER) && (vcpu->vmexit_info.guest_registers->eax != VMCALL_IDENTIFIER2)) { if (ept::handler_vmcall_rip(*vcpu->ept_state)) { return; } hv::inject_interruption(EXCEPTION_VECTOR_UNDEFINED_OPCODE, INTERRUPT_TYPE_HARDWARE_EXCEPTION, 0, false); return; } if (vcpu->vmexit_info.guest_registers->eax == VMCALL_IDENTIFIER2) { vmcall_reason = vcpu->vmexit_info.guest_registers->ecx; vmcall_parameter1 = vcpu->vmexit_info.guest_registers->edx; } else { vmcall_reason = vcpu->vmexit_info.guest_registers->rcx; vmcall_parameter1 = vcpu->vmexit_info.guest_registers->rdx; // ... 其他参数赋值 } switch (vmcall_reason) { case VMCALL_TEST: adjust_rip(vcpu); break; case VMCALL_VMXOFF: call_vmxoff(vcpu); adjust_rip(vcpu); break; // ... 其他 case 分支 } vcpu->vmexit_info.guest_registers->rax = status; }
- 功能:处理
VMCall指令,根据不同的VMCall原因执行相应的操作。 - 详细步骤:
- 检查
VMCall是否属于本驱动程序,如果不是则尝试处理VMCall RIP钩子,若失败则注入未定义操作码异常。 - 根据
VMCall的标识符(VMCALL_IDENTIFIER或VMCALL_IDENTIFIER2)获取VMCall原因和参数。 - 使用
switch语句根据VMCall原因进行不同的处理,如VMCALL_TEST调整指令指针,VMCALL_VMXOFF调用call_vmxoff函数退出 VMX 模式等。 - 将处理结果存储在
vcpu->vmexit_info.guest_registers->rax中。
- 检查
- 虚拟机管理:通过
DriverEntry函数初始化和启动 VMM,利用vmexit_handler函数处理虚拟机退出事件,实现对虚拟机的有效管理。 - 内存虚拟化:
EPT.cpp文件实现了 EPT 相关功能,通过 EPT 钩子技术可以对内存访问进行拦截和处理,实现内存虚拟化。 - 调试功能:通过
VMCall机制提供了丰富的调试功能,如设置断点、隐藏软件断点、读取 EPT 假页内存等,方便调试游戏驱动。 - 异常处理:在
vmexit_handler和vmcall_handler函数中,对异常情况进行了处理,如注入未定义操作码异常、一般保护错误异常等,保证系统的稳定性。
- 优势:利用 Intel VT 技术,能够有效绕过游戏驱动的反调试机制,提供了丰富的调试功能,提高了调试效率和成功率。
- 应用场景:主要应用于游戏开发和调试领域,帮助开发者快速定位和解决游戏驱动中的问题,也可用于系统安全研究和软件调试等领域。
一个动态链接库(DLL)项目,实现与自建调试体系相关的核心功能。将调试相关功能封装,方便其他模块调用,与其他模块交互实现整个调试体系的协同工作,也便于跨平台支持。
- 核心文件:
dllmain.cpp:DLL 的入口文件,实现了DllMain函数,处理 DLL 的加载和卸载事件。InitSymbol函数:用于初始化符号表,通过GetProcAddress函数获取系统函数的地址。DispatchSymbol函数:将符号表数据发送给驱动程序,以便驱动程序能够正确处理调试信息。Initialize函数:负责初始化调试工具,包括加载符号表、发送调试数据等操作。
enum _DBG_STATE { DbgIdle = 0, // 调试器空闲状态 DbgReplyPending = 1, DbgCreateThreadStateChange = 2, DbgCreateProcessStateChange = 3, DbgExitThreadStateChange = 4, DbgExitProcessStateChange = 5, DbgExceptionStateChange = 6, DbgBreakpointStateChange = 7, DbgSingleStepStateChange = 8, DbgLoadDllStateChange = 9, DbgUnloadDllStateChange = 10, };
该枚举定义了调试器的各种状态,用于跟踪调试过程中的状态变化。
typedef struct _DBGKM_APIMSG { PORT_MESSAGE h; DBGKM_APINUMBER ApiNumber; NTSTATUS ReturnedStatus; union { DBGKM_EXCEPTION Exception; DBGKM_CREATE_THREAD CreateThread; DBGKM_CREATE_PROCESS CreateProcess; DBGKM_EXIT_THREAD ExitThread; DBGKM_EXIT_PROCESS ExitProcess; DBGKM_LOAD_DLL LoadDll; DBGKM_UNLOAD_DLL UnloadDll; DBGKM_ERROR_MSG ErrorMsg; } u; } DBGKM_APIMSG, * PDBGKM_APIMSG;
该结构体定义了调试消息的格式,包含消息头、API 编号、返回状态和具体的消息内容,通过联合体可以存储不同类型的调试消息。
typedef struct _DEBUG_EVENT { LIST_ENTRY EventList; KEVENT ContinueEvent; CLIENT_ID ClientId; _EPROCESS* Process; // 等待的进程 _ETHREAD* Thread; // 等待的线程 NTSTATUS Status; // 状态码 ULONG Flags; _ETHREAD* BackoutThread; // 模拟线程退出信息 DBGKM_APIMSG ApiMsg; // 调试消息 } DEBUG_EVENT, * PDEBUG_EVENT;
该结构体定义了调试事件的格式,包含事件列表、继续事件、客户端 ID、进程和线程信息、状态码、标志位和调试消息,用于记录和处理调试过程中的事件。
- 跨系统支持:支持 Windows 10 和 Windows 11 操作系统,具有较好的兼容性。
- 混合编程:采用 Delphi 和 C++ 混合编程,充分发挥了两种语言的优势,Delphi 用于快速开发用户界面,C++ 用于实现底层的调试功能和内核驱动。
- 安全可靠:通过卡密注册和加密技术,保障了调试工具的安全性和合法性,防止非法使用和数据泄露。
- 功能强大:提供了丰富的调试功能,如进程调试、线程调试、DLL 加载和卸载调试、断点调试等,能够满足不同的调试需求。
- 游戏开发:用于调试游戏驱动,突破游戏的反调试机制,帮助开发者快速定位和解决游戏中的问题。
- 系统安全研究:用于研究操作系统的内核机制和反调试技术,为系统安全防护提供参考。
- 软件调试:可用于调试其他需要突破反调试机制的软件,提高调试效率和成功率。
- 项目文件:
-
vmware bios rom文件研究记录
Phoenix BIOS Tool 技术总结
一、ROM 结构
BIOS.440.ROM (512KB) 是 Phoenix BIOS 4.0 格式,包含:
- BootBlock (BB.ROM): 最后 16KB,未压缩,启动引导代码
- 模块区: 32个模块,使用 LZINT 压缩算法
二、模块提取流程
原始ROM → 按已知偏移提取 → 压缩模块文件 (.ROM/.AML/.PGX)每个模块有固定的起始/结束地址(相对于 0x100000000 – ROM大小):
{"ROMEXEC0", 'X', 0, 0xFFFF0B25, 0xFFFF7749, ".ROM"}, {"BIOSCOD1", 'B', 1, 0xFFFCC446, 0xFFFD2BD7, ".ROM"}, // ... 等32个模块三、解压流程
1. 模块头结构 (27字节)
[0-1] Magic: 0x42 0x43 ("BC") [2-3] Signature: 0xD6 0xF1 [4-6] Module ID [8] Module Type (0x42=BIOSCODE, 0x58=ROMEXEC, 0x47=DECOMPCODE) [10] Compression: 0x05=LZINT压缩, 其他=未压缩 [11-18] 地址信息 [19-22] 解压后大小2. 解压方法
- 使用 Phoenix 官方工具 UNINT32.EXE 解压 LZINT 数据
- 解压后重建 BC 头(标记为未压缩)
3. 特殊处理: BIOSCOD0 BIOSCOD0 分成两部分存储在 ROM 中:
part1: offset=0x61150, size=3649 part2: offset=0x52BE1, size=40207需要合并后再解压。
四、DMI 字符串修改
ROMEXEC0.ROM 可修改字段: | 字段 | 偏移 | 最大长度 | |——|——|———-| | manufacturer | 0x02749 | 12 | | product | 0x02765 | 23 | | vendor | 0x027CA | 17 | | board | 0x027E6 | 32 | | welcome | 0x028EE | 31 | | copyright | 0x02966 | 32 | | chipset | 0x06352 | 5 |
BIOSCOD1.ROM 可修改字段: | 字段 | 偏移 | 最大长度 | |——|——|———-| | bios_vendor | 0x0035 | 24 | | bios_version | 0x004E | 4 | | bios_date | 0x0053 | 10 | | sys_mfr | 0x007A | 12 | | sys_product | 0x0087 | 24 | | board_mfr | 0x00B9 | 17 | | board_product | 0x00CB | 32 | | RAM slots (64个) | 0x05A6起 | 14 |
不可修改字段(代码段,修改会导致无法启动):
- ROMEXEC0: version (0x0375B), copyright2 (0x0377C)
五、打包流程
使用 Phoenix 官方工具:
1. PREPARE.EXE ROM.SCR → 压缩模块,生成 .MOD 文件 2. CATENATE.EXE ROM.SCR -O:BIOS.440.ROM → 合并生成最终ROMROM.SCR 脚本格式:
BANKS -N:1 -S:512 COMPRESS LZINT BOOTBLOCK BB.ROM -S:16 BIOSCODE BIOSCOD0.ROM BIOSCODE BIOSCOD1.ROM ROMEXEC ROMEXEC0.ROM ROMEXEC ROMEXEC1.ROM -Z ...六、工具使用
# 解包 pbt.exe extract BIOS.440.ROM output # 随机化硬件信息 pbt.exe randomize output # 打包 cd output pbt.exe build ROM.SCR BIOS.440.ROM七、嵌入工具
三个 Phoenix 官方工具以十六进制数组形式嵌入到
EmbeddedTools.hpp:- UNINT32.EXE: LZINT 解压
- PREPARE.EXE: 模块压缩
- CATENATE.EXE: ROM 合并
运行时提取到临时目录,使用后自动删除。
这套工具实现了 Phoenix BIOS ROM 的完整解包、修改、打包流程,支持随机生成匹配的真实硬件配置信息。
-
开启vmware中的vnc
在vmware设置中开启vnc后,端口不能和其他有开启vnc服务的虚拟机重复,另外vnc客户端连接的时候要填127.0.0.1或者是宿主机局域网ip
-
ProxyBridge指定进程socks5代理工具
https://github.com/InterceptSuite/ProxyBridge
-
vps重装后设置脚本
apt install curl -y && bash <(curl -fsSL https://raw.githubusercontent.com/yahuisme/vps-setup/main/install.sh)
-
长效 短效 家宽ip
https://cliproxy.com/zh/
-
从 UEFI 劫持启动链实现 Hyper-V 内核读写无需加载驱动
本文档介绍基于 noahware/hyper-reV 的虚拟内存访问类 GuestMemory,以及用于定位目标进程 CR3、EPROCESS、PEB、模块基址的四个内核工具函数。
此项目依赖特定的Windows版本(Windows11 25H2,如果版本不匹配会造成此项目无法运行,请修改GetM中的Offsets &PsActiveProcessHead offset:0xF05790 in Hyper_rw.cpp ) 。
这些函数依赖
PsActiveProcessHead,用于从内核侧定位进程的关键结构。参数:
target_pid,ps_active_process_head
返回:CR3(DirectoryTableBase)
遍历 ActiveProcessLinks,根据 PID 返回该进程的页表基址。参数:同上
返回:EPROCESS 内核虚址
适合需要访问 Token、HandleTable 等字段时使用。参数:
target_cr3,ps_active_process_head
返回:PEB 用户层虚址
通过 CR3 反查 EPROCESS,再读取 Peb 字段;不依赖 PID。参数:
target_cr3,peb_address,module_name
返回:DllBase
遍历 PEB 的 Ldr 模块链表,查目标 DLL。
GuestMemory 封装 VA→PA 转换、跨页处理,是用户态访问目标进程虚拟内存的主要接口。
GuestMemory mem( target_cr3); // 绑定页表
int hp = 0; mem.ReadValue<int>(0x7FF70010, hp);
-
获取 PsActiveProcessHead
-
获取目标 CR3
-
初始化 GuestMemory
-
查找 PEB
-
查找目标 DLL
-
使用 GuestMemory 读写目标地址
Copyright (c) [2025], [wz5200]
All rights reserved.Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
-
- Source code redistributions must retain the above copyright notice, this list of conditions, and the following disclaimer.
- Binary redistributions must reproduce the above copyright notice, this list of conditions, and the following disclaimer in the documentation and/or other materials provided with the distribution.
- All redistributions must clearly attribute the original author ([wz5200]) in any public or private use of this software.
-





