首页
社区
课程
招聘
SSDT代码编译问题
发表于: 2014-3-22 18:46 3786

SSDT代码编译问题

2014-3-22 18:46
3786
最近看了一套天道酬勤过驱动保护的视频教程,其中里面有一段是关于SSDT的,但是代码却编译不通过。编译环境为Win7 64bits VS2008
代码如下:
driver.h文件
................
(省略。。。)
..................
extern "C" LONG KeServiceDescriptorTable;
................
.........

.cpp文件
................
(省略。。。)
..................

extern "C" NTSTATUS DriverEntry (
                         IN PDRIVER_OBJECT pDriverObject,
                         IN PUNICODE_STRING pRegPath )
{
        NTSTATUS status;
        //ULONG SSDT_NtOpenProcess_Addr;
        //ULONG Cur,Old;
        KdPrint(("Enter DriverEntry\n"));

        //读取SSDT中NTOpenProcess地址
        _asm
        {
                int 3
                push eax
                push ebx
                move eax,KeServiceDescriptorTable
                move eax,[eax]
                move ebx,0xBE
                shl        ebx,2
                add eax,ebx
                move eax,[eax]
                pop ebx
                pop eax
        }
        //KdPrint(("读取SSDT _NtOpenProcess address:%x\n",SSDT_NtOpenProcess_Addr));
        //////////////////////////
        //注册回调函数入口
        pDriverObject->DriverUnload = DriverUnload;
        pDriverObject->MajorFunction[IRP_MJ_CREATE] = DriverDispatchRoutine;
        pDriverObject->MajorFunction[IRP_MJ_CLOSE]        = DriverDispatchRoutine;
        pDriverObject->MajorFunction[IRP_MJ_WRITE]        = DriverDispatchRoutine;
        pDriverObject->MajorFunction[IRP_MJ_READ]        = DriverDispatchRoutine;
        //创建设备对象
        status = CreateDevice(pDriverObject);
        KdPrint(("Leave DriverEntry\n"));
        return status;
}

其中红色的编译,会出现如下的错误
error C2400: inline assembler syntax error in 'opcode'; found 'eax'
希望有知道原因的,给指导下,谢谢

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 19
活跃值: (1086)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
move 是什么指令?我都没见过
2014-3-22 19:05
0
雪    币: 11
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
64位禁止内联汇编
而且64位KeServiceDescriptorTable未导出
你这个程序注定就没法用
2014-3-22 19:28
0
雪    币: 40
活跃值: (701)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
不好意思,打错了。
谢谢哈,我说怎么没通过呢
2014-3-22 19:31
0
雪    币: 46
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
就是因为mov打错了吗??你能编译通过了???
2014-3-22 20:56
0
雪    币: 36
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
3L 正解。
2014-3-22 21:25
0
雪    币: 40
活跃值: (701)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
编译是可以的,但是却运行不了,64位下,还是需要另寻其他方法的
2014-3-23 12:36
0
游客
登录 | 注册 方可回帖
返回
//