TransactionNotification逆向与分析

admin 2024年10月28日13:32:39评论10 views字数 838阅读2分47秒阅读模式

在MSDN中有这样一句话,我们尝试在二进制的角度理解一下

TransactionNotification逆向与分析

TransactionNotification逆向与分析

KResourcesManger的结构在+0x098有一个NotificationQueue,按照道理来说就是这个QUEUE了,注意KQUEU的结构是这样,真正的数据在EntryListeHead组织的链表中。

TransactionNotification逆向与分析

在tm.sys模块中定位到一个名为TmpGetNotificationResourceManager的函数队NotificationQueue进行了操作,逆向整理一下伪代码可以发现它的主要逻辑就是从NotificationQueue中取出队首的元素,并把它传入TmpCaptureOrRequeueNotification中    

TransactionNotification逆向与分析

进入到TmpCaptureOrRequeueNotification中可以发现最主要的逻辑是一个memmove操作。逻辑是将qentry_p结构体中的TranscationNotification给复制到了传进来的地址中    

TransactionNotification逆向与分析

经过对qentry_p结构体的创建过程进行逆向,可以确定其结构体大致是这样。

TransactionNotification逆向与分析

TransactionNotification逆向与分析

也就是说当Enlistment执行PrepareComplete,CommitComplete等函数发生状态改变时,KTM会将FullNotification入队到ResourceManager的NotificationQueue中,在我们通过TmpGetNotificationResourceManager等函数查看ResourceManger的Notification时,会将Queue中的队首元素出队    

整个过程如下所示,在Enlisment创建成功后,KTM便已经在QUEUE中入队了三个元素,即三个Notification

TransactionNotification逆向与分析

TransactionNotification逆向与分析

在我们通过TmpGetNotificationResourceManager查看ResourceManger的Notification时发生出队操作    

TransactionNotification逆向与分析

TransactionNotification逆向与分析    

原文始发于微信公众号(3072):TransactionNotification逆向与分析

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年10月28日13:32:39
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   TransactionNotification逆向与分析https://cn-sec.com/archives/3319216.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息