之前我自己测试用的inlinehook引擎,在x64下面选择6+8个nop或者cc用于安全inline hook,现在到了win8.1,貌似不可用鸟,要换了

:
1: kd> s fffff800`0094cb4f L?0x1000 cc cc cc cc cc cc
1: kd> s fffff800`0094cb4f L?0x1000 90 90 90 90 90 90
1: kd> s fffff800`0094cb4f L?0x1000 cc cc
fffff800`0094cc92 cc cc 44 88 4c 24 20 4c-89 44 24 18 53 56 57 41 ..D.L$ L.D$.SVWA
fffff800`0094db12 cc cc 48 89 5c 24 08 48-89 74 24 10 57 48 83 ec ..H.\$.H.t$.WH..
1: kd> s fffff800`0094cb4f L?0x1000 90 90
1: kd> u fffff800`0094cb4f
Ntfs!NtfsAddCachedRunMult+0x77:
fffff800`0094cb4f cc int 3
Ntfs!NtfsFsdDeviceControl:
fffff800`0094cb50 4889542410 mov qword ptr [rsp+10h],rdx
fffff800`0094cb55 53 push rbx
fffff800`0094cb56 56 push rsi
fffff800`0094cb57 57 push rdi
fffff800`0094cb58 4883ec70 sub rsp,70h
fffff800`0094cb5c 488bf2 mov rsi,rdx
fffff800`0094cb5f 33db xor ebx,ebx
要重写code了。顺便说下原先inlinehook的方法,还是很稳定的,和x86下面利用函数头前面5个nop指令是一个意思,即改写函数头2字节跳到-128~+126内任何一个有6字节nop的地方,再在4字节寻址范围内搜索8字节空间用于保存目标地址。即把所谓的14字节inlinehook拆分成6+8而已。
[培训]科锐逆向工程师培训第53期2025年7月8日开班!