链 接:
http://bbs.pediy.com/showthread.php?t=111585
xuetr0.33版本增加了进程的快捷键的查看,
于是乎查了下资料,找到了实现的方法,不敢独享和大家分享一下~~~ 其实Windows的所有的快捷键保存在win32k里面的一个单向连表里面, 链表里面的结构体如下:
代码:
typedef struct _HOT_KEY_ITEM { LIST_ENTRY ListEntry; struct _ETHREAD *Thread; HWND hWnd; int id; UINT fsModifiers; UINT vk; } HOT_KEY_ITEM, *PHOT_KEY_ITEM; 所以关键是怎么找到那个单向链表 可以通过从导出函数查找内存的方法找到这个单向链表 首先是从shadow ssdt里的NtUserUnregisterHotKey函数开始查找
代码:
win32k!NtUserUnregisterHotKey: (大段省略...) 912d32f8 e888ffffff call win32k!_UnregisterHotKey (912d3285) (大段省略...)
代码:
win32k!_UnregisterHotKey: (大段省略...) 912d32a0 e8cffaffff call win32k!FindHotKey (912d2d74) (大段省略...) 这个时候XP和Win7的处理有所不同
代码:
win32k!FindHotKey: (大段省略...) XP的时候 bf89e4b4 8b35d4cb9abf mov esi,dword ptr [win32k!gphkFirst (bf9acbd4)] Win7的时候 912d2d84 8b3495009b4891 mov esi,dword ptr win32k!gphkHashTable (91489b00)[edx*4] (大段省略...) gphkFirst /gphkHashTable 就是那个单向链表了, 最后只要循环这个单向链表就可以枚举所有的快捷键了~~~ |
在内核里查看所有的快捷键
最新推荐文章于 2021-08-29 18:28:34 发布