**一分钟感言**

2005.07.27. 今天又看了下利用钩子拦截API函数的代码,发现它拦截的其实是函数的调转代码,因为API在

编译的时候会形如: CALL  XXXX  

                          XXXX:  JMP  YYYY

这个时候我们其实是将JMP YYYY都换成自己的JMP MYFUNC.这里有个疑问,如果真是这样,那我们完全可以只修改XXXX地址下的后四个字节,而不是五个;而如果不是,那就是说是形如CALL YYYY; 我们的修改是直接

在函数内部了,这个时候有平衡堆栈的情况要考虑。 我没有试验过,但是感觉后者是正确的。

2005.09.16

关于内存映射文件
     1.读取磁盘文件大小
     2.保存虚拟的地址空间为这个大小(但是这个时候没有提交内存页)
     3.隐藏的映射机构保证在需要使用到文件中的某个数据时或者提出页中断或者直接把已在内存中的数据读出
     4.在分配时按照页为最小粒度
     5.为什么书上说对于一个磁盘文件的倒序存储,如果用映射机构的话讲是0内存,0缓冲。我猜想这是因为映射机构记录了对磁盘文件的最新访问方式,原本是文件的地址1000(长度2000)映射到虚拟空间的2000,则倒序的时候就是把1000映射到4000,这个映射机构只要记住并且在外部程序调用到1000到4000地址内的数据的时候能够转化后加载就可以了。实现了运行时加载。
     6.更进一步,读取任何地址时都需要这个映射机构。
     PS:文中的隐藏的映射机构是我对这种机制的理解,不见于任何公开文档中。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值