分析PsSetCreateProcessNotifyRoutineEx寻找相应系统回调函数地址

@lzeroyuee  May 7, 2020

关于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一样


添加新评论