关于win7
目标平台:win7 64位,内核文件:ntoskrnl.exe
PsSetCreateProcessNotifyRoutineEx
内部调用了PsSetCreateProcessNotifyRoutineEx
,传入第3个参数r8b = 1
在PsSetCreateProcessNotifyRoutineEx
开始,判断remove
参数
这里将remove
视为0,跳转,之后检查回调,分配回调的结构内存
在分配内存中可得知回调结构的组成,并返回此结构的地址
参考ReactOS源码,此结构为
typedef struct _EX_CALLBACK_ROUTINE_BLOCK {
EX_RUNDOWN_REF RundownProtect;
PEX_CALLBACK_FUNCTION Function;
PVOID Context;
} EX_CALLBACK_ROUTINE_BLOCK, *PEX_CALLBACK_ROUTINE_BLOCK;
之后执行交换回调,完成解密工作
在此函数内,动态跟踪,便可找到解密点,如下:
规则为:数组元素 & 0xFFFFFFFFFFFFFFF0 -> 回调结构地址,回调结构的第二个成员就是回调函数地址
关于win10
同win7一样