首页
社区
课程
招聘
[讨论]ASM汇编加载驱动强制关闭进程
发表于: 2008-10-20 16:14 6344

[讨论]ASM汇编加载驱动强制关闭进程

2008-10-20 16:14
6344
驱动关键部分:
     pDriverObj->MajorFunction[IRP_MJ_CREATE] = DispatchCreate;
        pDriverObj->MajorFunction[IRP_MJ_CLOSE] = DispatchClose;
        pDriverObj->MajorFunction[IRP_MJ_DEVICE_CONTROL] = DispatchIoctl;
        pDriverObj->DriverUnload = DriverUnload;

汇编代码(I/O操作):
IOControl proc hWin:HWND
        local adwInBuffer[1]:DWORD
        lea esi, adwInBuffer
        assume esi:ptr DWORD
        invoke GetDlgItemText,hWin,1006,addr Testdb,255
        invoke wsprintf,offset PID,offset Strfmt,offset Testdb
        lea eax,offset PID
        mov [esi][0*(sizeof DWORD)], eax
        invoke CreateFile,offset DriverName,GENERIC_READ+GENERIC_WRITE,0,NULL,TRUNCATE_EXISTING,0,0
        .if eax != NULL
                mov hFile,eax
                invoke MessageBox,hWin,addr Testdb,$CTA0("进程PID:"),MB_OK
                mov eax,offset Testdb
                invoke DeviceIoControl,hFile,99h,esi,sizeof DWORD,NULL,NULL,NULL,NULL
                .if eax>0
                        invoke MessageBox,hWin,addr PID,$CTA0("调用I/O并返回成功"),MB_OK
                .endif
               
                invoke CloseHandle,hFile
               
        .endif
       
        ret

IOControl endp

问题:我用汇编写加载控制程序,驱动安装、启动、停止、卸载,功能正常,只有在I/O操作时,调用DeviceIoControl函数,老是失败,通过DebugView可以看到执行了DispatchCreate和
DispatchClose,而DispatchIoctl执行不到,用delphi全部正常,不知道汇编里面这个函数需要注意什么,请各位大哥大姐批评指教。完整代码联系QQ:4595464(验证:pediy)

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 112
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
自己先顶。。。。。
2008-10-20 16:43
0
雪    币: 112
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
没人知道吗??????
2008-10-20 22:33
0
雪    币: 206
活跃值: (186)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
IOCTL_ABCD equ CTL_CODE(FILE_DEVICE_EVENT, 99h, METHOD_BUFFERED, FILE_ANY_ACCESS)

invoke DeviceIoControl,hFile,IOCTL_ABCD,esi,sizeof DWORD,NULL,NULL,NULL,NULL

我一般都是这样写的,没试过你那种写法。
2008-10-21 02:23
0
雪    币: 231
活跃值: (45)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
qdk
5
是不是你CreateFile
连接驱动的时候符号连接写错了??
导致根本没有连接到驱动。
我开始的时候也遇到过这种问题。

看看CreateFile的返回值是不是空
2008-10-21 12:42
0
雪    币: 112
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
这个问题已经解决,控制指令构造问题,
ASMIOCTL_PID equ CTL_CODE(FILE_DEVICE_UNKNOWN, 88h, METHOD_BUFFERED, FILE_ANY_ACCESS)
用这个就对了,谢谢大家
2008-10-21 21:11
0
游客
登录 | 注册 方可回帖
返回
//