吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 790|回复: 3
上一主题 下一主题
收起左侧

[讨论] 卸载Hook的问题

[复制链接]
跳转到指定楼层
楼主
董督秀 发表于 2024-6-24 08:26 回帖奖励
    情况:
    1.我首先设置了第一个Hook,记成SetHook1();之后设置了第二个Hook,记成SetHook2();最后设置了第三个Hook,记成SetHook3();
    2.对于移除(卸载)Hook,我也写好了对应的函数,UnHook1();表示移除第一个Hook;UnHook2();表示移除第二个Hook;UnHook3();表示移除第三个Hook;

    问题:
    1.卸载Hook的时候,正确的顺序是什么?
    2.为什么要按照这样的顺序?
    3.如果不按照这样的顺序,可能会导致什么后果?
    4.假设设置第一个Hook的内部,包含设置第二个Hook,第二个Hook的内部包含设置第三个Hook,像这种情况,应该如何正确的卸载Hook?

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

沙发
我的爱是你 发表于 2024-6-24 08:51
如果不按照反向安装的顺序卸载Hook,可能会出现以下几种情况:

依赖关系破坏:如果一个Hook依赖于另一个已经卸载的Hook的功能,那么该Hook可能无法正常工作或导致程序崩溃。
资源泄露:某些Hook可能分配了资源(如内存),如果它们没有机会在被依赖的Hook之前正确清理,可能会导致资源泄露。
行为异常:由于Hook之间的交互被不正确地打断,可能导致应用程序表现出意外的行为,包括但不限于崩溃、性能下降或者数据处理错误。
AI的回答,总体钩子如果互相独立,那么卸载先后顺序没区别。

免费评分

参与人数 2吾爱币 +2 热心值 +1 收起 理由
bester + 1 + 1 我很赞同!
董督秀 + 1 谢谢@Thanks!

查看全部评分

3#
woflant 发表于 2024-6-24 10:09
hook回调函数是保存在链表结构体中,每次hook都是在头部节点前面插入一个新节点,也就是说每次hook完成,当前hook相关属性都是存储在头节点

遇到hook事件时,从链表头部开始通知各种hook回调函数

卸载hook时,同样从头节点开始卸载

类似“栈”的数据结构,先入后出

免费评分

参与人数 1吾爱币 +1 收起 理由
董督秀 + 1 用心讨论,共获提升!

查看全部评分

4#
苏紫方璇 发表于 2024-6-24 11:17
1.2.3不分顺序,可以随便卸,哪个不需要了就卸掉。4有嵌套包含的情况,我的理解是按3.2.1卸载,或者直接卸载1,然后由于23是hook的1hook的指令,1被还原了,23就自动不存在了(不过hook程序内存未被正常释放)

免费评分

参与人数 2吾爱币 +1 热心值 +1 收起 理由
610100 + 1 热心回复!
董督秀 + 1 谢谢@Thanks!

查看全部评分

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-11 19:08

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表