找回密码
 加入我们

QQ登录

只需一步,快速开始

搜索
查看: 7369|回复: 7

[求助] WIN64汇编基础教程[3-3]遇到的问题

[复制链接]

3

主题

23

回帖

0

精华

铜牌会员

积分
64
发表于 2016-1-11 15:21:03 | 显示全部楼层 |阅读模式


        加载作者编译好的MyDriver.sys,没有任何问题。把同样的代码,复制,自己重新编译生成的sys文件,却是蓝屏的。
        我的用的编译环境:WDK8.1+VS2013
        发生蓝屏的代码是shellcode中的一句汇编:movsxd r11,dword ptr [r10+rax*4]
       
        执行过程及执行代码后寄存器的值:
        格式:代码
              执行代码后寄存器值

        代码:        mov rax, rcx ;rcx=index
        寄存器:        rax=0000000000000023,        r10=fffff80001a0d888,        rdx=fffff8000187eff2
        代码:        lea r10,[rdx] ;rdx=ssdt
        寄存器:        r10=fffff8000187eff2,         eax=23,                edi=d
        代码:        mov edi,eax
        寄存器:        edi=23
        代码:        shr edi,7
        寄存器:        edi=0
        代码:        and edi,20h
        寄存器:        edi=0
        代码:        mov r10, qword ptr [r10+rdi]
        寄存器:        r10=4c00237847158d4c
        代码:        movsxd r11,dword ptr [r10+rax*4]       
        寄存器:        *** Fatal System Error: 0x0000007e
                       (0xFFFFFFFFC0000005,0xFFFFFA801B6E8532,0xFFFFF88001FD96A8,0xFFFFF88001FD8F00)---蓝屏

3

主题

23

回帖

0

精华

铜牌会员

积分
64
 楼主| 发表于 2016-1-11 15:24:35 | 显示全部楼层
dump文件
ADDITIONAL_DEBUG_TEXT:  
You can run '.symfix; .reload' to try to fix the symbol path and load symbols.

MODULE_NAME: GetSSDT(我自己改了,不是MyDriver了)
FAULTING_MODULE: fffff8000180e000 nt

DEBUG_FLR_IMAGE_TIMESTAMP:  569307ba

EXCEPTION_CODE: (NTSTATUS) 0xc0000005 - 0x%08lx

FAULTING_IP:
+416d320
fffffa80`1b6e8532 4d631c82        movsxd  r11,dword ptr [r10+rax*4]

EXCEPTION_RECORD:  fffff88001fd96a8 -- (.exr 0xfffff88001fd96a8)
ExceptionAddress: fffffa801b6e8532
   ExceptionCode: c0000005 (Access violation)
  ExceptionFlags: 00000000
NumberParameters: 2
   Parameter[0]: 0000000000000000
   Parameter[1]: ffffffffffffffff
Attempt to read from address ffffffffffffffff

CONTEXT:  fffff88001fd8f00 -- (.cxr 0xfffff88001fd8f00;r)
rax=0000000000000023 rbx=0000000000000000 rcx=0000000000000023
rdx=fffff8000187eff2 rsi=fffffa8019cfe000 rdi=0000000000000000
rip=fffffa801b6e8532 rsp=fffff88001fd98e8 rbp=0000000000000000
r8=fffffa801b6e8520  r9=fffff80001a0d9f0 r10=4c00237847158d4c
r11=fffff88001fd98e8 r12=0000000000000001 r13=ffffffff800006e4
r14=fffffa801b51d0b0 r15=000000000000001c
iopl=0         nv up ei pl zr na po nc
cs=0010  ss=0018  ds=002b  es=002b  fs=0053  gs=002b             efl=00010346
fffffa80`1b6e8532 4d631c82        movsxd  r11,dword ptr [r10+rax*4] ds:002b:4c002378`47158dd8=????????
Last set context:
rax=0000000000000023 rbx=0000000000000000 rcx=0000000000000023
rdx=fffff8000187eff2 rsi=fffffa8019cfe000 rdi=0000000000000000
rip=fffffa801b6e8532 rsp=fffff88001fd98e8 rbp=0000000000000000
r8=fffffa801b6e8520  r9=fffff80001a0d9f0 r10=4c00237847158d4c
r11=fffff88001fd98e8 r12=0000000000000001 r13=ffffffff800006e4
r14=fffffa801b51d0b0 r15=000000000000001c
iopl=0         nv up ei pl zr na po nc
cs=0010  ss=0018  ds=002b  es=002b  fs=0053  gs=002b             efl=00010346
fffffa80`1b6e8532 4d631c82        movsxd  r11,dword ptr [r10+rax*4] ds:002b:4c002378`47158dd8=????????
Resetting default scope

CUSTOMER_CRASH_COUNT:  1

DEFAULT_BUCKET_ID:  WIN7_DRIVER_FAULT

BUGCHECK_STR:  0x7E

CURRENT_IRQL:  0

ANALYSIS_VERSION: 6.3.9600.16384 (debuggers(dbg).130821-1623) amd64fre

LAST_CONTROL_TRANSFER:  from fffff88007d50166 to fffffa801b6e8532

STACK_TEXT:  
fffff880`01fd98e8 fffff880`07d50166 : 00000000`00000000 fffff800`0187eff2 00000000`00000080 fffff800`018bcec0 : 0xfffffa80`1b6e8532
fffff880`01fd98f0 00000000`00000000 : fffff800`0187eff2 00000000`00000080 fffff800`018bcec0 fffff880`00000000 : GetSSDT+0x1166


FOLLOWUP_IP:
GetSSDT+1166
fffff880`07d50166 ??              ???

SYMBOL_STACK_INDEX:  1

SYMBOL_NAME:  GetSSDT+1166

FOLLOWUP_NAME:  MachineOwner

IMAGE_NAME:  GetSSDT.sys

STACK_COMMAND:  .cxr 0xfffff88001fd8f00 ; kb

BUCKET_ID:  WRONG_SYMBOLS

FAILURE_BUCKET_ID:  WRONG_SYMBOLS

ANALYSIS_SOURCE:  KM

FAILURE_ID_HASH_STRING:  km:wrong_symbols

FAILURE_ID_HASH:  {70b057e8-2462-896f-28e7-ac72d4d365f8}

3

主题

23

回帖

0

精华

铜牌会员

积分
64
 楼主| 发表于 2016-1-11 15:29:08 | 显示全部楼层
请前辈帮忙看看
movsxd r11,dword ptr [r10+rax*4]
movsxd32位扩展为64位,具体是怎么实现的?网上都是一句带过,不知道原理

3

主题

23

回帖

0

精华

铜牌会员

积分
64
 楼主| 发表于 2016-1-11 15:36:14 | 显示全部楼层
movsxd带符号扩展为64位
movsxd oper,immed
如果immed=0x0000000012345678
或者immed=0xFFFFFFFF12345678
执行后oper=?

3

主题

23

回帖

0

精华

铜牌会员

积分
64
 楼主| 发表于 2016-1-11 17:18:52 | 显示全部楼层
找到原因了,是我手太欠,做调试的时候,改了GetSSDTAddress函数,忘了改回来。

857

主题

2632

回帖

2

精华

管理员

此生无悔入华夏,  长居日耳曼尼亚。  

积分
36130
发表于 2016-1-12 22:05:51 | 显示全部楼层
我猜都是代码被改了。。。
顺带用那一坨SHELLCODE计算地址只是为了演示,实际上计算地址是不需要那一坨SHELLCODE的。

3

主题

23

回帖

0

精华

铜牌会员

积分
64
 楼主| 发表于 2016-1-13 15:27:36 | 显示全部楼层
学这个太有深度了,一篇教程,调试了2天,才勉强明白。

1

主题

14

回帖

0

精华

铜牌会员

积分
40
发表于 2018-5-27 22:10:18 | 显示全部楼层
[求助] WIN64汇编基础教程[3-3]遇到的问题
发生蓝屏的代码是shellcode中的一句汇编:movsxd r11,dword ptr [r10+rax*4]
这一句是怎么得到的。还有下面的汇编代码是怎么得到的?

我也遇到一样的问题了,加载作者编译好的MyDriver.sys,没有任何问题。把同样的代码,复制,自己重新编译生成的sys文件,却是蓝屏的。我没有改任何代码。
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

快速回复 返回顶部 返回列表