Special thanks to these great open source projects:
驱动使用的是测试签名,需要开启测试模式,不然无法加载
bcdedit /set testsigning on
shutdown /g /t 1 /f本工具使用inline hook,因此hook点位至少需要有6字节才能进行hook
增加instant patch功能,自动patch目标代码
功能演示:
Video_2026-05-29_112957.mp4
patchseq示例:
[patch]
module=Microsoft.VisualStudio.ProductKeyDialog.ni.dll
offset=0x8a455
patch=909090909090
在Microsoft.VisualStudio.ProductKeyDialog.ni.dll加载之后,将其0x8a455处偏移的代码修改成6个0x90
增加Lua hook模式,通过lua脚本来编写hook逻辑,并且支持热更新
下面的视频演示了lua hook模式以及热更新功能
Video_2026-05-22_135422.mp4
hookseq example:
[hook]
module=kernel32.dll
offset=0x57160
script=C:\Users\x\Desktop\project\umhh\controller\UMController\createfilewhook.lua
handler=on_hook
hook.lua example:
function on_hook(regs)
log("file open, Path=" .. mem.read_wstring(regs.rcx))
endx86版本的lua脚本示例:
function on_hook(regs)
log("file open, Path=" .. mem.read_wstring(mem.read_u32(regs.esp+4)))
end增加instant hook功能,允许在目标dll尚未加载的时候应用hookseq文件,在目标dll加载完成后自动进行hook,同时支持x64和x86进程
下面的视频演示了对kernel32的CreateFileW进行instant hook的效果,可以看到应用完成后,下次进程重启时会立即进行自动hook
Video_2026-05-20_173025.mp4
增加hooksequence文件支持,可批量hook
UmhhMan.exe hookseq -o C:\users\public\driver.hookseq -add ntoskrnl.exe,60b820,C:\Users\Public\driver\DriverHookCodeTemplate.sys,HookCodeX64选中要hook的进程,右键选择Force Inject
注入成功之后双击打开Hook引导窗口
左侧为module list,右侧为hook地址输入栏和hook list
hook地址输入方式有两种:
-
先在左侧选中要hook的模块,然后在Module Offset输入框中输入hook地址在该模块的偏移量
-
在Direct Address输入框中直接输入hook地址
点击Apply Hook按钮会弹出文件选择框,选择包含你自己编写的包含hook代码逻辑的dll文件即可
在release中,我们附带了两个用于演示的dll:HookCodeTemplate.x64.dll和HookCodeTemplate.Win32.dll,分别用于X64和x86进程的hook
hook成功后会出现在hooklist列表中
在hooklist中选中之后右键有四个菜单,菜单名字就是他的功能含义,不用再作解释
此时我们已经hook了Notepad.exe进程的Kernelbase!CreateFileW函数,只要Notepad进行打开文件的操作,我们就能从EtwTracer中看到日志记录
在调试受保护进程时,我们有时候想要在程序早期启动阶段断下来以调试启动阶段的代码
对于这种需求,可以通过我们的early break功能来实现
比如,我们想要在avp.exe启动的时候断下来,只需要选中之后右键点击Mark Early Break
如果此时未开启全局注入,程序会提示你启用全局注入选项
全局注入开启之后,所有新启动的进程都会被注入Master DLL(相当于我们工具的一个agent)
开启之后再次点击Mark Early Break即可,标记之后,这里会出现一个记号
然后我们重启电脑,我们的Masert DLL(agent)会在目标进程启动初期注入并触发INT 3断点
可以看到此时目标程序仅加载了必要的一些系统函数,自己本身的dll还未加载
该插件可以搜索当前系统中可以获取目标进程高权限句柄的进程
UmhhMan是一个cli工具,用于管理本工具中的驱动中的一些注册表项,主要有以下四个功能
- 受保护进程ProcessName管理
- 白名单进程路径NTPath Hash管理
- Blocked ProcessName管理(使用该功能需要先开启Self Defense)
- 该列表中的进程尝试访问白名单进程时权限降低为0x1000(PROCESS_QUERY_LIMITED_INFORMATION)
- Blocked DLL管理
- 该列表中的dll将被禁止加载到受保护进程












