lzw
lzw
驱动牛犊
驱动牛犊
  • 注册日期2001-03-23
  • 最后登录2002-10-13
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2653回复:9

关于nt system-call hooking的问题。

楼主#
更多 发布于:2001-06-19 13:33
  

小弟我仿照undoc nt一书的方法hook了几个nt文件系统的函数。

比如NtOpenFile,我想改变访问文件路径到我得一个特殊目录下面。

例如改变访问c:\abc\123.txt到  d:\cdeddddd\123.txt,可是传递过来的参数

的缓冲区很小,我于是只得自己分配缓冲区,但是调用完成后返回错误

STATUS_ACCESS_VIOLATION

似乎是内存访问非法,我怀疑是访问环境不对,比如没有读写权力,可是不知道如何改

变。

请指教!

NTSTATUS NewNtOpenFile( OUT PHANDLE phFile,

    IN ACCESS_MASK DesiredAccess,

     IN POBJECT_ATTRIBUTES ObjectAttributes,

    OUT PIO_STATUS_BLOCK pIoStatusBlock,

     IN ULONG ShareMode,

    IN ULONG OpenMode )

{

  NTSTATUS status = STATUS_SUCCESS;



  OBJECT_ATTRIBUTES  oa;

  oa = *ObjectAttributes;

   status = OldNtOpenFile(phFile,

           DesiredAccess,

           //ObjectAttributes, //原来的对象

            &oa,                //使用我自己分配的对象

           pIoStatusBlock,

          ShareMode,

          OpenMode);

 return status;    // STATUS_ACCESS_VIOLATION

}

--

znsoft
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2023-10-25
  • 粉丝300
  • 关注6
  • 积分910分
  • 威望14796点
  • 贡献值7点
  • 好评度2410点
  • 原创分5分
  • 专家分100分
  • 社区居民
  • 最爱沙发
  • 社区明星
沙发#
发布于:2001-06-19 14:01
能将你的undocument NT上传吗?
http://www.zndev.com 免费源码交换网 ----------------------------- 软件创造价值,驱动提供力量! 淡泊以明志,宁静以致远。 ---------------------------------- 勤用搜索,多查资料,先搜再问。
ppl
ppl
驱动小牛
驱动小牛
  • 注册日期2001-06-13
  • 最后登录2006-05-21
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2001-06-19 17:04
你原来的代码是怎样的?
你现在贴的代码不会出现错误吧

dazzy
驱动中牛
驱动中牛
  • 注册日期2001-03-23
  • 最后登录2008-08-12
  • 粉丝1
  • 关注0
  • 积分0分
  • 威望10点
  • 贡献值1点
  • 好评度10点
  • 原创分0分
  • 专家分0分
地板#
发布于:2001-06-19 17:27
用ExAllocatePool(PagedPool,sizeof(OBJECT_ATTRIBUTES))分配内存
lu0
lu0
论坛版主
论坛版主
  • 注册日期2001-06-10
  • 最后登录2016-04-05
  • 粉丝2
  • 关注0
  • 积分-6311分
  • 威望21111点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2001-06-20 09:13
1.你自己的OA是怎么初始化的?
2.对象的SD是否包括用户的SID?
Regards, Lu Lin Webmaster of Inside Programming http://www.lu0s1.com
lzw
lzw
驱动牛犊
驱动牛犊
  • 注册日期2001-03-23
  • 最后登录2002-10-13
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2001-06-20 18:21
我看了oa的初始化,很简单的,就是填写了几个成员,没有内存分配的问题,我觉得还是sd的问题,可是上面传下来的sd是空的。
请问怎么解决?
谢谢
lu0
lu0
论坛版主
论坛版主
  • 注册日期2001-06-10
  • 最后登录2016-04-05
  • 粉丝2
  • 关注0
  • 积分-6311分
  • 威望21111点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2001-06-20 22:47
OA里的UNICODE_STRING一定会涉及内存问题.
SD为0,则是缺省SD. 当OBJECT是DRIVER创建的时候,用缺省的SD将
无法访问.请给当前用户SE_TCB_NAME特权.或者不要让SYSTEM PROCESS创建OBJ
Regards, Lu Lin Webmaster of Inside Programming http://www.lu0s1.com
lzw
lzw
驱动牛犊
驱动牛犊
  • 注册日期2001-03-23
  • 最后登录2002-10-13
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2001-06-23 01:15
我引用了你的Sec.exe这个小程序。用户具备了
SE_TCP_NAME
特权了没有?  我估计是要在driver里面解决的。不知道有没有什么好办法?

security descripter是一个什么样得结构?没有资料
lu0
lu0
论坛版主
论坛版主
  • 注册日期2001-06-10
  • 最后登录2016-04-05
  • 粉丝2
  • 关注0
  • 积分-6311分
  • 威望21111点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2001-06-26 14:57
SD在MSDN里有讲述。
PSDK/SECURITY
Regards, Lu Lin Webmaster of Inside Programming http://www.lu0s1.com
luojian
驱动牛犊
驱动牛犊
  • 注册日期2001-03-23
  • 最后登录
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2001-07-09 21:17
只要看看Sysinternal的regmon程序的kernel mode源代码!
祥见www.sysinternals.com
游客

返回顶部