mikeyredmoon
驱动牛犊
驱动牛犊
  • 注册日期2007-07-25
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分271分
  • 威望55点
  • 贡献值0点
  • 好评度53点
  • 原创分0分
  • 专家分0分
阅读:1480回复:7

驱动向应用传数据的问题

楼主#
更多 发布于:2007-07-31 14:27
我用DeviceIoControl里面定义的输出buffer的方法从驱动向应用传数据,直接
往输出buffer里面写入数据就没问题,要是从驱动一个变量里面strcpy就蓝屏重起,帮忙看看吧
ResultStatus = ObReferenceObjectByHandle(ProcessHandle,PROCESS_ALL_ACCESS,*PsProcessType,UserMode,(PVOID)&process,(PVOID)&info);

DBGPRINT(("%s"),process->ImageFileName ) 这个能打出来,这是个UCHAR[16]的变量
//strcpy(buff,"test")  这样就没问题 , buffer是外面传进来的buffer
strcpy(buff,process->ImageFileName);    这个就蓝屏
mikeyredmoon
驱动牛犊
驱动牛犊
  • 注册日期2007-07-25
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分271分
  • 威望55点
  • 贡献值0点
  • 好评度53点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2007-07-31 16:16
已经蓝屏重起几十次了,帮帮忙吧
tracera
禁止发言
禁止发言
  • 注册日期2006-01-09
  • 最后登录2018-09-25
  • 粉丝8
  • 关注0
  • 积分-5788分
  • 威望135321点
  • 贡献值0点
  • 好评度625点
  • 原创分1分
  • 专家分0分
  • 社区居民
板凳#
发布于:2007-07-31 21:03
用户被禁言,该主题自动屏蔽!
mikeyredmoon
驱动牛犊
驱动牛犊
  • 注册日期2007-07-25
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分271分
  • 威望55点
  • 贡献值0点
  • 好评度53点
  • 原创分0分
  • 专家分0分
地板#
发布于:2007-08-01 09:14
这个代码其实就是hook了Ntcreateprocess以后,想通过handle得到进程名并且把名称传到应用程序,hook那块很多例子可以参考,但是取名称并且传出去没发现有啊
mikeyredmoon
驱动牛犊
驱动牛犊
  • 注册日期2007-07-25
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分271分
  • 威望55点
  • 贡献值0点
  • 好评度53点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2007-08-01 09:19
NTSTATUS NewNtTerminateProcess(
    IN HANDLE ProcessHandle OPTIONAL,
    IN NTSTATUS ExitStatus)
{
    ULONG outhandle;
    NTSTATUS ResultStatus;
    PEPROCESS process;  
    POBJECT_HANDLE_INFORMATION info;
    char* buff;
    char   output[16];

    ResultStatus = ObReferenceObjectByHandle(ProcessHandle,PROCESS_ALL_ACCESS,*PsProcessType,UserMode,(PVOID)&process,(PVOID)&info);        
    buff = process->ImageFileName;
   DBGPRINT(("%s",buff)) //这句能打印出来
    strcpy(output,buff);    //这句就蓝屏
    KeSetEvent(hTerminateProcess,0,FALSE);
    ResultStatus = OldNtTerminateProcess(ProcessHandle,ExitStatus);
    return ResultStatus;
}
tracera
禁止发言
禁止发言
  • 注册日期2006-01-09
  • 最后登录2018-09-25
  • 粉丝8
  • 关注0
  • 积分-5788分
  • 威望135321点
  • 贡献值0点
  • 好评度625点
  • 原创分1分
  • 专家分0分
  • 社区居民
5楼#
发布于:2007-08-01 10:23
用户被禁言,该主题自动屏蔽!
mikeyredmoon
驱动牛犊
驱动牛犊
  • 注册日期2007-07-25
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分271分
  • 威望55点
  • 贡献值0点
  • 好评度53点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2007-08-01 11:57
版主真是热心人啊,我根本不是作驱动的,只不过是一个小任务得调查一下而已,所以很多问题都搞不懂啊,我现在被这个玩意折磨得焦头烂额,上面的问题不是越界的问题,好像感觉是那个process的指针被保护起来了一样,没办法给别的值赋值,我本来想取不到就算了,我返回进程的handle到应用层去取进程名总行了吧,没想到ntterminateprocess这个函数里面的processhandle还可能是空值,说是空值就结束caller的进程,谁知道caller是谁啊,完全晕了。
shangluren
驱动牛犊
驱动牛犊
  • 注册日期2007-07-14
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分170分
  • 威望18点
  • 贡献值0点
  • 好评度17点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2007-08-02 18:29
你的是内核模式驱动马?问题应该出在strcpy函数中
游客

返回顶部