VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 166|回复: 1

全局HOOK msgbox函数的疑问

[复制链接]
86_avatar_middle
最佳答案
0 
online_vip 发表于 2020-3-22 15:43:07 | 显示全部楼层 |阅读模式


目的:HOOK 全局 user32.dll 里的messageboxA  让所有的三环程序都被挂钩

实验环境:VM winxp sp3  10-10-12内存分页

实现:驱动和三环通讯程序

原理实现:
user32.dll 中的函数映射到进程空间时,当前的内存属性为可读,不可写状态,当我们要进行hook写入钩子地址时,系统会重新给我备份一份内存让我们去写入。
而我们可以去修改内存属性改成可读、可写。这样能达到全局挂钩的目的。

详细实现:

1.驱动程序提供钩子函数 myMsgBox()

2 驱动程序为三环程序构造中断门提权,方法是写入idt表

3 三环程序通过驱动构造好的中断int 21 拿到权限,然后查找messageboxA的内存PTE属性

4 修改内存PTE属性,改成可写。然后在函数头部添加钩子 int 0x22(0xCD 0x21) int 0x22 指向驱动的myMsgBox()函数

5 恢复PTE属性,改成不可写



程序实现:

通过代码编写可以达到全局hook的目的,hook和停止hook都正常。
但是出现了两个bug,这也正是我疑惑的地方。

疑问:
1.当三环程序开始hook时并不成功,经检查为msgbox函数地址的PTE为0.我们在三环程序中调用一次msgbox时PTE才会出现正常数值。
调用一次msgbox后,在进行hook就正常

疑问1:PTE为0 说明操作系统并没有给msgbox函数写到内存中去 , 但是我为什么用OD/CE能查到线性地址确实是有数值的

2 经测试 三环的所有程序都正常运行,多次重新打开都没问题,但是三环的通讯程序在重新运行后点击msgbox会蓝屏

疑问2:不知道为什么会出现这个情况 百思不得其解 一点思路都没有  

全局HOOK msgbox函数的疑问

全局HOOK msgbox函数的疑问
全局HOOK msgbox函数的疑问 驱动通信.rar (135.49 KB, 下载次数: 0)




上一篇:GetFileSize中高端大小和低端大小合并
下一篇:问一下这个地方的输出出现了什么问题?
00_avatar_middle
最佳答案
2 
在线会员 发表于 2020-4-23 23:23:47 | 显示全部楼层
hello 那天研究研究 哈哈
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

×【发帖 友情提示】
1、请回复有意义的内容,请勿恶意灌水;
2、纯数字、字母、表情等无意义的内容系统将自动删除;
3、若正常回复后帖子被自动删除,为系统误删的情况,请重新回复其他正常内容或等待管理员审核通过后会自动发布;
4、感谢您对VC驿站一如既往的支持,谢谢合作!

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号 )|网站地图wx_jqr

GMT+8, 2020-12-2 13:51

Powered by CcTry.CoM

© 2009-2020 cctry.com

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