-
-
[原创]X32下逆向PsSetLoadImageNotifyRoutine
-
发表于: 2019-8-3 22:06 4378
-
纯属兴趣爱好.特来逆向玩玩.
PsSetLoadImageNotifyRoutine 是内核中用来监控模块加载.操作系统给我们提供的回调. 我们只需要填写对应的回调函数原型即可进行加监控.
既然可以进行监控.那么我们的回调函数存储在哪.这是个问题.所以特来逆向玩玩.
首先我的思路是直接windbg 挂载win7. 然后找到对应的函数进行
uf 反汇编. 来静态查看. 如果那里有疑问则自己进行动态查看.
过程很快.因为逆向过 进程回调监控.所以这个也就很快了.慢慢学习经验.
通过逆向次函数.可以得出我们的回调函数数组. 以及我们申请的回调函数指针.
伪代码
关于上面的函数逆向.如下:
汇编代码很简单.通过下面进行赋值可以看做是一个结构体
逆向得知,ExAllocateCallBack其实是申请一块内存.
并且转化为一个结构进行赋值
例如下:
但是根据传参得知. UnKnow2 == 我们的回调地址 Unknow3 ==> 我们的参数
然后查看Wrk源码.得出以下结构
逆向这个函数可以得知.最后我们的数组会与 0xFFFFFFF8 进行and操作.操作之后的结果就是我们上面 逆向ExAllocateCallBack
得出的结构体指针原型.
结构体->two 成员就是记录我们想要的回调函数地址.
1.通过逆向 ExAllocateCallBack 我们得出了结构体原型.以及我们的回调函数如何存储
2.通过逆向 ExCompareExchangeCallBack我们得知数组是如何解密的
PEX_CALLBACK_ROUTINE_BLOCK pRoutine = 数组[0] & 0xFFFFFFF8;
pRoutine->Function == 我们要寻找的回调函数
3.简介
从以前的逆向PsSetCreateProcessRoutine得知.他也是通过 & 0xFFFFFFFF8进行解密的.
win64的也有逆向出来. 界面的数值为 & 0xFFFFFFFFFFFFFFF0 进行解密的. 关于64的.后面继续发.
在64位下感觉数组解密应该用的都是 0xFFFFFFFFFFFFFFF0 进行解密的(win7 64)
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课