首页
论坛
课程
招聘
[原创]分析PsSetLoadImageNotifyRoutine
2021-10-5 14:46 5765

[原创]分析PsSetLoadImageNotifyRoutine

2021-10-5 14:46
5765

PsSetLoadImageNotifyRoutine



先看看ExAllocateCallBack 做了什么


申请一个0x18字节的内存 3个8字节

第一个8字节=0

第二个8字节=回调地址

第三个8字节=0



接下来看ExCompareExchangeCallBack 做了什么


这里简单表诉ExAcquireRundownProtectionEx 干了什么


*(a2*)=0x10*2;


到ExCompareExchangeCallBack了。先理理思维


a1=&PspLoadImageNotifyRoutine

a2=一个18字节大小的指针 //里面第二个8字节 就是回调地址 就是PsSetLoadImageNotifyRoutine的参数1


开始分析emmm不知道咋开口 讲的跟看的是一个意思=。=


ULONG64* _R10=(ULONG64*)a1;
ULONG64 i=*_R10;
a1=a2|0xF; //这里将a2的第一个单字节设置为0xF
v7= *_R10;
if( _R10==i )
{
_R10=a1;//这里就设置好了 回调函数地址
}


来看看数组 深刻理解一下吧


发现了有什么一样的地方吗


以8字节的数值格式  第一个单字 就是0xF

跟代码里设置的一样嘛


手动找一下自己的回调函数地址:


我们的回调call地址是fffff880`070883e0


接下来一个个看里面的数值。一共有8个指针


前面五个没有我们的函数地址。


在最后一个指针里面找到了



里面的第二个8字节就存储着我们函数call地址fffff880`070883e0

跟代码实现是一样的数值


第一个8字节 在后面的代码修改成0x20了




emmm这样就能找到别人的回调函数地址了。也能定位到 回调函数地址 所在的哪个驱动里面。可以在别人的回调函数里面+jmp进行hook

所以。是哪个函数把PspLoadImageNotifyRoutine当参数用,来实现监视的功能呢



【公告】【iPhone 13、ipad、iWatch】11月15日中午12:00,看雪·众安 2021 KCTF秋季赛 正式开赛【攻击篇】!!!文末有惊喜~

收藏
点赞0
打赏
分享
最新回复 (2)
雪    币: 5892
活跃值: 活跃值 (1397)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
黑洛 活跃值 1 2021-10-8 07:26
2
2
借你个回调用用不过分吧
雪    币: 635
活跃值: 活跃值 (735)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
killleer 活跃值 2021-10-9 11:58
3
1
黑洛 借你个回调用用不过分吧
这就是vt上一大堆随机名杀软监控驱动的原因吗?爱了爱了
游客
登录 | 注册 方可回帖
返回