欢迎来到 嗅灵易学

零基础也能上手的脚本技术课,一对一答疑带你入门

[原创]X32下逆向PsSetLoadImageNotifyRoutine

[原创]X32下逆向PsSetLoadImageNotifyRoutine

一丶简介

纯属兴趣爱好.特来逆向玩玩.
PsSetLoadImageNotifyRoutine 是内核中用来监控模块加载.操作系统给我们提供的回调. 我们只需要填写对应的回调函数原型即可进行加监控.
既然可以进行监控.那么我们的回调函数存储在哪.这是个问题.所以特来逆向玩玩.

二丶逆向过程

首先我的思路是直接windbg 挂载win7. 然后找到对应的函数进行
uf 反汇编. 来静态查看. 如果那里有疑问则自己进行动态查看.
过程很快.因为逆向过 进程回调监控.所以这个也就很快了.慢慢学习经验.

1.逆向PsSetLoadImageNotifyRoutine

3f809b3 8bff            mov     edi,edi

83f809b5 55              push    ebp

83f809b6 8bec            mov     ebp,esp

83f809b8 53              push    ebx

83f809b9 56              push    esi

83f809ba 57              push    edi

83f809bb 33ff            xor     edi,edi

83f809bd 57              push    edi

83f809be ff7508          push    dword ptr [ebp+8]                    参数1压栈: 参数1 = 我们设置的回调函数地址.

83f809c1 e8113d0200      call    nt!ExAllocateCallBack (83fa46d7)    逆向一下ExAllocateCallBack        

83f809c6 8bd8            mov     ebx,eax

83f809c8 3bdf            cmp     ebx,edi

83f809ca 7425            je      nt!PsSetLoadImageNotifyRoutine+0x3e (83f809f1)        //内部会申请一个结构体内存.保存我们的函数指针 以及 参数 结果给eax.

nt!PsSetLoadImageNotifyRoutine+0x19:

83f809cc be802bf583      mov     esi,offset nt!PspLoadImageNotifyRoutine (83f52b80)//得出回调函数数组.

nt!PsSetLoadImageNotifyRoutine+0x1e:

83f809d1 6a00            push    0                                    0

83f809d3 8bcb            mov     ecx,ebx                            ecx = 结构体指针

83f809d5 8bc6            mov     eax,esi                            eax = 回调函数数组.

                                                                    ExCompareExchangeCallBack(函数数组,结构体指针,0); 根据函数名可以得知 比较交换回调函数指针. 逆向志之 在下面观看.

83f809d7 e82a3d0200      call    nt!ExCompareExchangeCallBack (83fa4706)

83f809dc 84c0            test    al,al

83f809de 751d            jne     nt!PsSetLoadImageNotifyRoutine+0x4a (83f809fd)

nt!PsSetLoadImageNotifyRoutine+0x2d:

83f809e0 83c704          add     edi,4

83f809e3 83c604          add     esi,4

83f809e6 83ff20          cmp     edi,20h

83f809e9 72e6            jb      nt!PsSetLoadImageNotifyRoutine+0x1e (83f809d1)

nt!PsSetLoadImageNotifyRoutine+0x38:

83f809eb 53              push    ebx

83f809ec e824b71000      call    nt!SepFreeCapturedString (8408c115)

nt!PsSetLoadImageNotifyRoutine+0x3e:

83f809f1 b89a0000c0      mov     eax,0C000009Ah

nt!PsSetLoadImageNotifyRoutine+0x43:

83f809f6 5f              pop     edi

83f809f7 5e              pop     esi

83f809f8 5b              pop     ebx

83f809f9 5d              pop     ebp

83f809fa c20400          ret     4

nt!PsSetLoadImageNotifyRoutine+0x4a:

83f809fd 33c9            xor     ecx,ecx

83f809ff b8a02bf583      mov     eax,offset nt!PspLoadImageNotifyRoutineCount (83f52ba0)

83f80a04 41              inc     ecx

83f80a05 f00fc108        lock xadd dword ptr [eax],ecx

83f80a09 a1782bf583      mov     eax,dword ptr [nt!PspNotifyEnableMask (83f52b78)]

83f80a0e a801            test    al,1

83f80a10 750a            jne     nt!PsSetLoadImageNotifyRoutine+0x69 (83f80a1c)

nt!PsSetLoadImageNotifyRoutine+0x5f:

83f80a12 b8782bf583      mov     eax,offset nt!PspNotifyEnableMask (83f52b78)

83f80a17 f00fba2800      lock bts dword ptr [eax],0

nt!PsSetLoadImageNotifyRoutine+0x69:

83f80a1c 33c0            xor     eax,eax

83f80a1e ebd6            jmp     nt!PsSetLoadImageNotifyRoutine+0x43 (83f809f6)

通过逆向次函数.可以得出我们的回调函数数组. 以及我们申请的回调函数指针.

注意:上传附件及图片大小不得大于30M。

⚠️ 版权声明:
本博客所有内容(含教程、源码、工具)仅供个人技术学习与研究交流使用,严禁商用、倒卖、二次分发及非法用途
未经作者书面授权,任何组织或个人不得转载、复制或用于其他平台,违者将追究相关责任。

0 0 0 举报
复制成功