帮忙看看
VOID NewKeStackAttachProcess(
__inout PRKPROCESS PROCESS,
__out PRKAPC_STATE ApcState
)
{
__asm
{
_emit 0x90
_emit 0x90
_emit 0x90
_emit 0x90
_emit 0x90 // 前5字节实现原函数的头5字节功能
_emit 0x90 // 这个填充jmp
_emit 0x90
_emit 0x90
_emit 0x90
_emit 0x90 // 这4字节保存原函数+5处的地址
_emit 0x90
_emit 0x90
_emit 0x90
_emit 0x90
_emit 0x90
_emit 0x90
_emit 0x90
_emit 0x90
_emit 0x90
_emit 0x90
_emit 0x90
_emit 0x90
}
}
VOID NewKiAttachProcess (
__inout PRKTHREAD Thread,
__in PRKPROCESS Process,
__in PKLOCK_QUEUE_HANDLE LockHandle,
__out PRKAPC_STATE SavedApcState
)
{
__asm
{
_emit 0x90
_emit 0x90
_emit 0x90
_emit 0x90
_emit 0x90 // 前5字节实现原函数的头5字节功能
_emit 0x90 // 这个填充jmp
_emit 0x90
_emit 0x90
_emit 0x90
_emit 0x90 // 这4字节保存原函数+5处的地址
_emit 0x90
_emit 0x90
_emit 0x90
_emit 0x90
_emit 0x90
_emit 0x90
_emit 0x90
_emit 0x90
_emit 0x90
_emit 0x90
_emit 0x90
_emit 0x90
}
}
VOID NewKiMoveApcState (
__in PKAPC_STATE Source,
__out PKAPC_STATE Destination
)
{
__asm
{
_emit 0x90
_emit 0x90
_emit 0x90
_emit 0x90
_emit 0x90 // 前5字节实现原函数的头5字节功能
_emit 0x90 // 这个填充jmp
_emit 0x90
_emit 0x90
_emit 0x90
_emit 0x90 // 这4字节保存原函数+5处的地址
_emit 0x90
_emit 0x90
_emit 0x90
_emit 0x90
_emit 0x90
_emit 0x90
_emit 0x90
_emit 0x90
_emit 0x90
_emit 0x90
_emit 0x90
_emit 0x90
}
}
自定义了 3个函数 但是用 DbgPrint 输出的3个函数地址 有两个是相同的,这是为什么
00000703 786.36596680 NewKeStackAttachProcess :0xB16B90D0
00000704 786.36596680 NewKiAttachProcess :0xB16B8F50
00000705 786.36596680 NewKiMoveApcState :0xB16B90D0
用__declspec(naked) 开头 3个地址都是一样的
有输出了别的 同样也是错误
00000805 1553.90808105 NewKeStackAttachProcess :0xB16550F0
00000806 1553.90820313 NewKiAttachProcess :0xB1654F70
00000807 1553.90820313 NewKiMoveApcState :0xB16550F0
00000808 1553.90820313 NewPsLookupProcessByProcessId :0xB1654F00
00000809 1553.90820313 NewPsLookupThreadByThreadId :0xB1654F00
00000810 1553.90820313 NewoldIoCreateFile :0xB1654DA0
00000811 1553.90820313 NewObOpenObjectByPointer :0xB1654DA0
以前 HOOK 都是单一函数没有发现这个问题,今天同时HOOK 多个函数才发现。。。。。。
[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法