本文主要是介绍Windbg inline HOOK 实战,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
使用PCHunter64的进程钩子扫描到某个进程被HOOK了,可以使用Windbg分析:
## 显示汇编指令 : u
u 向下反汇编
ub 向上反汇编
uf 反汇编整个函数
a 写入汇编指令
搜索内存(search memory)
s –[type] range pattern
其中type, b表示byte, w表示word, d 表示dword, a表示ASCII string,u表示unicde string
Range 表示地址范围,可以用2种表示:一是起始地址加终止地址, 二是起始地址加L长度(不是字节长度,是单位长度)。如果搜索空间长度超过256M,用L?length。
Pattern指定要搜索的内容.
比如 s -u 522e0000 527d1000 "web"表示在522e0000 和527d1000之间搜索Unicode 字符串”web”
比如s -w 522e0000 L0x100 0x1212 0x2212 0x1234 表示在起始地址522e0000之后的0x100个单位内搜索0x1212 0x2212 0x1234系列的起始地址
比如s -b 000007fefd9e0000 000007fefe768000 48 89 5C 24 18
修改内存 (edit memory)
e{a|u|za|zu} address “String”
其总za和zu表示以0结尾的Ascii和Unicode字符串, a和u则表示没有0结尾
比如 ezu 0x445634 “abc” 表示在0x445634地址写如unicode 字符串abc
比如ea 0x445634 “abc” 表示在0x445634地址写入Ascii字符串abc, 不包含结束符0
e{a|b|d|D|f|q|u|w} address [values]
其中a表示ASCII码,b表示byte, d表示DWORD, D表示double, f表示float, q表示8字节, u表示Unicode String, w表示word
比如eb 0x123432 0x41 0x41 0x41 表示在地址0x123432 写入3个0x41
示例:
命令:s -b 000007fefd9e0000 000007fefe768000 48 89 5C 24 18
可以找到一些内容:000007fe`fde066f8 48 89 5c 24 18 55 56 57-41 54 41 55 48 81 ec 90 H.\$.UVWATAUH...
可以借助反汇编指令:0:023> u 0x000007fefde066f8
得到以下反汇编内容:
SHELL32!StrStrW+0x4a98:
000007fe`fde066f8 48895c2418 mov qword ptr [rsp+18h],rbx
000007fe`fde066fd 55 push rbp
000007fe`fde066fe 56 push rsi
000007fe`fde066ff 57 push rdi
000007fe`fde06700 4154 push r12
000007fe`fde06702 4155 push r13
000007fe`fde06704 4881ec90030000 sub rsp,390h
000007fe`fde0670b 488b0536c20b00 mov rax,qword ptr [SHELL32!Ordinal872+0x731dd (000007fe`fdec2948)]
这篇关于Windbg inline HOOK 实战的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!