一个菜鸟的猜想...关于内存的 和hook

supeng4676 2018-01-04 04:05:12
我们用OD调试一个exe,比如一个按钮,事件是一个messageboxA ,我们下断点,进入系统领空,该函数的地址是一个指针,也就是一个虚拟地址.如果我们找到messageboxA的物理地址,把此处地址修改掉,不就成就了全局hook了吗?
如何获取物理地址?我想是否能通过CR3寄存器存放的页目录基址找到页目录,然后计算得出真实的物理地址.然后修改入口,从而实现劫持?

都是猜测,不知道合不合理?
有没有大神来
...全文
1525 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
天际抓根宝 2019-02-28
  • 打赏
  • 举报
回复
引用 7 楼 caozhy 的回复:
知道什么叫做刻舟求剑么?内核态是水,应用态是船,你在船上标记河底的位置是没有意义的。

喜欢钻研没错,但是你基础太差,找个正规大学的教材学习下计算机组成原理吧。


这个比喻好厉害,一下子就明白了,厉害
CubieZhou 2019-02-23
  • 打赏
  • 举报
回复
32位Windows系统及以后版本,都是在保护模式而非实模式下运行。保护模式下,无论你是用户态程序还是内核态程序,所访问的地址其实都是虚拟地址。虚拟地址通过段寄存器与段描述符表映射到线性地址,线性地址再通过分页机制映射到物理地址。所以无论是采用内核态程序方式还是用户态程序方式,你都无法直接访问或者修改物理地址。
threenewbee 2018-11-23
  • 打赏
  • 举报
回复
知道什么叫做刻舟求剑么?内核态是水,应用态是船,你在船上标记河底的位置是没有意义的。 喜欢钻研没错,但是你基础太差,找个正规大学的教材学习下计算机组成原理吧。
  • 打赏
  • 举报
回复
你直接劫持dll就行了,或者分析下user32dll,然后内存注入就行了,还找什么物理地址
weixin_42904142 2018-08-07
  • 打赏
  • 举报
回复
首先 你需要对dll文件格式有一定的了解,在找到messageboxA的代码段进行替换,这样的操作可能会影响其他软件的运行,而且想恢复原来的dll需要重新下载,建议不要这样操作,,全局hook不会对原来的dll造成影响,,退出hook程序后 还能继续使用以前的函数
凉子不会玩 2018-08-05
  • 打赏
  • 举报
回复
是全局hook的,做的好可以直接改写msg全局参数和类型,但我不会
海鸥软件 2018-02-28
  • 打赏
  • 举报
回复
看该函数调用是那个api文件,然后通过查看dll函数的程序(网上有),打开那个dll文件,里边有实际的函数地址,然后在调试中更换掉即可,不过可不是简单的更换,有的直接更换了可以,有的不行,因为原来那个有返回,还有原来的堆栈数据,一般先push 调用完了再pos就不会出错啦,这是经验,顺便告诉你。
aabbabababaa 2018-01-14
  • 打赏
  • 举报
回复
太底层了,都是高手。。。

9,515

社区成员

发帖
与我相关
我的任务
社区描述
Windows专区 安全技术/病毒
社区管理员
  • 安全技术/病毒社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧