版块
论坛
喜欢
话题
应用
搜索
登录
注册
yetty的个人空间
访问量
0
新鲜事
帖子
资料
http://bbs3.driverdevelop.com/index.php?m=space&uid=73736
如何拦截gdi.dll中的api函数StartDocA或StartDocW
这两个函数打印相关。不要以为这可以在应用层做,----呵呵,我指的是98哦。那么在内核怎么实现呢?关于vxd,大家都知道如何截获文件的api操作如删除啦改名啦等等。但是,打印是不一样的,这里截获的是一个进程的打印api,我也不太懂,还望高手指点啊。
回复
(
29
)
2004-05-26 10:59
来自版块 -
内核编程
◆
◆
表情
告诉我的粉丝
提 交
AllenZh
:
但我想MS应该吸取以前的教训,做的聪明些 这样就会比16位到32位简单了
(2004-06-13 18:38)
回复
AllenZh
:
是呀,但是当64位真正大规模使用时,32位到64位转换也成为一个很大的事了。
(2004-06-13 18:37)
回复
wowocock
:
16位和32位同时处理,很麻烦的,所以在64位以后,所有的内核64位的,避免了无谓的烦琐。。。。。。
(2004-06-02 21:14)
回复
yetty
:
惭愧,你说的很多我都不知道是什么东西,毕竟是一月前真正开始编程,读硕的年代都是用matlab做数学计算。当然也是自己不学无术。 离题了。。。。。。
(2004-06-02 12:51)
回复
AllenZh
:
另外需要将自己的代码注入修改的模块,这也有很多办法, 如果对16位和32位同时处理,需要使用thunk等老掉牙的技术
(2004-06-02 11:54)
回复
AllenZh
:
实现思路(当然也有其它方法)是在函数入口增加一条跳转指令,跳到你的函数地方,然后你处理,然后恢复指令并执行,执行后修改为跳转。 这只是实现该方法的一个办法,当然还有很多其他方法。
(2004-06-02 11:51)
回复
yetty
:
再顶一下 下面是SnowStart得到api的地址方法,我知道这是在应用层才能用,没关系,我的想法是现在应用层得到api的地址,然后再vxd中去写内存,所以这段代码还是可以借鉴的。但是一个新的问题出现了,就是gdi32.dll被进程调用的时候,它是映射到该进程的地址空间的,所以...
(2004-06-02 10:19)
回复
driversupport
:
我也很想知道,ring0级还是很难的。
(2004-06-01 13:18)
回复
AllenZh
:
由于该技术已经过失,并且很繁琐,所以这里不想多说了。 只是提供一个实现实现需要注意的地方。 首先需要vc1.5恐怕现在很少有人有了,95ddk,还有对DPMI非常熟悉,对16位的内存管理熟习等等。
(2004-05-31 22:48)
回复
yetty
:
还是AllenZh说的对。 其实也不是16位与32位的区别,只是98与2000的区别。 对于2000,核心编程那本书上讲得非常详细,我也实现了。 但是核心编程书上同时也说了很多2000与98区别,结果我用同样的办法在98下实现,却出现系统崩溃现象。 就是常见的什么你做了非...
(2004-05-31 19:40)
回复
1
2
3
下一页 »
yetty
加关注
写私信
0
关注
0
粉丝
36
帖子
返回顶部