yanghaoyun
驱动牛犊
驱动牛犊
  • 注册日期2002-03-22
  • 最后登录2002-08-20
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1448回复:6

请教:在VXD中如何调用32位API函数

楼主#
更多 发布于:2002-03-28 13:59
首先感谢fracker的帮助,上次DeviceIoControl的失败是由于CreateFile的第一个参数前没加 \\\\\\\\.\\\\。再请教一个问题:
我想在我的VXD中调用常用的API函数,但无法使用LoadLibraryA 和 GetProcAddress ,所以也就无法使用常用的API函数,我把VC6下的USER32.LIB和KERNEL32.LIB都包含在工程中,在VXD中将LoadLibraryA声明为外部函数,我的VXD是在VC6下编译的。(有篇文章介绍了如何在VC6下编译VtoolsD的VXD)

最新喜欢:

zackaryzackar...
njhhack
驱动牛犊
驱动牛犊
  • 注册日期2001-12-25
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-03-28 14:49
好象这是不可能的吗
剑影
流氓兔
驱动老牛
驱动老牛
  • 注册日期2001-06-27
  • 最后登录2005-02-28
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-03-29 21:47
哈哈本站有呀
http://www.driverdevelop.com/read.php?t=D&id=24
我是流氓!!!我怕谁!!! 不!!应该是我是老流氓!!!我怕谁!!![img]http://202.98.116.70:888/cgi-bin/newmov/bbs/attachment.cgi?forum=4&topic=25473&postno=1&type=.jpg[/img]
yanghaoyun
驱动牛犊
驱动牛犊
  • 注册日期2002-03-22
  • 最后登录2002-08-20
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-03-30 10:16
本站那篇文章太老啦,16位的API谁不会调用,VtoolsD中有详细的说明,我要问的是如何调用32位的API。我是这样做的,通过DeciceIOControl将User32.dll的地址传给VXD,然后根据PE格式找倒MessageBoxA,MessageBeep等等这些函数的输出表位置,将它改成MyMessageBox的地址,这样别的程序调用MessageBoxA就变成调用我的MyMessageBox。我发现,如果MyMessageBox只调用VXD里的函数,一切正常,若调用MessageBoxA,MessageBeep这些函数(我先保存了这些函数的地址),别的程序也能弹出消息框,但按确定后就异常,每次都如此。
流氓兔
驱动老牛
驱动老牛
  • 注册日期2001-06-27
  • 最后登录2005-02-28
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-03-30 11:15
你是动态修改还是修改输出节表?
你如果是动态修改你确定没有死循环吗?
如果你的目的只是HOOK API进行处理,你可分配一页空间把代码COPY
进去,然后修改API头几字节,转发到你的页面。在你的HOOK中调用原API,必须换原你所调用API头几字节。不然的话可是死循环!
可参看CIH代码。
我是流氓!!!我怕谁!!! 不!!应该是我是老流氓!!!我怕谁!!![img]http://202.98.116.70:888/cgi-bin/newmov/bbs/attachment.cgi?forum=4&topic=25473&postno=1&type=.jpg[/img]
yanghaoyun
驱动牛犊
驱动牛犊
  • 注册日期2002-03-22
  • 最后登录2002-08-20
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-03-30 13:36
请高人指点:
我是修改输出节表的,将输出节表里API函数地址改成我的函数地址,并保存原来的地址,在我的函数里调用了原来的函数,目的当然就是HOOK API 啦。
若按你的方法,分配一页空间把代码COPY进去,然后修改API头几字节,转发到我的页面。我想知道我怎么知道该COPY多少进去呢?如果API函数里面又调用了别的函数,这怎么拷?而且地址也变化了,怎么能拷?
yanghaoyun
驱动牛犊
驱动牛犊
  • 注册日期2002-03-22
  • 最后登录2002-08-20
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2002-03-30 14:00
再请教一下:
若用JMP的方法修改API函数的前5个字节,输入的参数和输出的结果怎么控制呢?比如说,我将MessageBoxA代码的前5个字节改成 JMP MyMessageBox,并保存了原来的前5个字节。我的MyMessageBox怎么获得MessageBoxA的参数,然后再用该参数调用MyMessageBoxA呢?
游客

返回顶部