首页
社区
课程
招聘
[求助]请问:为什么mov [eax].iDr4,ebx这句不能编译?
发表于: 2008-3-25 17:12 4929

[求助]请问:为什么mov [eax].iDr4,ebx这句不能编译?

2008-3-25 17:12
4929
perThread_Handler proc uses ebx pExcept:DWORD,pFrame:DWORD,pContext:DWORD,pDispatch:DWORD        
        mov eax,pContext
        Assume eax:ptr CONTEXT
        mov     [eax].regEcx,20
        mov     [eax].regEip,offset xiu@

        xor     ebx,ebx
        mov     [eax].iDr0,ebx
        mov     [eax].iDr2,ebx
        mov     [eax].iDr3,ebx
;        mov     [eax].iDr4,ebx;这句为什么不能编译?

        mov     eax,0
        ret                    
perThread_Handler endp

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

收藏
免费 0
支持
分享
最新回复 (9)
雪    币: 224
活跃值: (10)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
2
提示什么错误?
2008-3-25 18:16
0
雪    币: 2384
活跃值: (766)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
3
CONTEXT结构中没有iDr4的定义。

CONTEXT STRUCT
  ContextFlags  DWORD      ?
  iDr0          DWORD      ?
  iDr1          DWORD      ?
  iDr2          DWORD      ?
  iDr3          DWORD      ?
  iDr6          DWORD      ?
  iDr7          DWORD      ?
  FloatSave     FLOATING_SAVE_AREA <>
  regGs         DWORD      ?
  regFs         DWORD      ?
  regEs         DWORD      ?
  regDs         DWORD      ?
  regEdi        DWORD      ?
  regEsi        DWORD      ?
  regEbx        DWORD      ?
  regEdx        DWORD      ?
  regEcx        DWORD      ?
  regEax        DWORD      ?
  regEbp        DWORD      ?
  regEip        DWORD      ?
  regCs         DWORD      ?
  regFlag       DWORD      ?
  regEsp        DWORD      ?
  regSs         DWORD      ?
  ExtendedRegisters db MAXIMUM_SUPPORTED_EXTENSION dup(?)
CONTEXT ENDS
2008-3-25 21:11
0
雪    币: 172
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
哈哈,从这个例子里我门可以真正看到seh结构化处理的威力,他不仅恢复了ecx的内容而且使程序按照你想要的顺序执行了,哈哈,如果你对反跟踪很感兴趣的话,你还可以在例程中加入

xor ebx,ebx

mov [eax].iDr0,ebx

mov [eax].iDr2,ebx

mov [eax].iDr3,ebx

mov [eax].iDr4,ebx

清除断点,跟踪者....嘿嘿,不说你也体验过,当然也可以通过检验drx的值来判断是否被跟踪,更复杂地,你可以设置dr6,和dr7产生一些有趣的结果,我就不罗嗦了.


这是 软件加密技术内幕 上的内容。

为什么没有定义idr4,5?
2008-3-26 11:51
0
雪    币: 2384
活跃值: (766)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
5
那是软件加密技术内幕书的笔误。不是没有定义,而是硬件寄存器只有0~3和6~7这6个调试寄存器,没有4~5
2008-3-26 15:35
0
雪    币: 172
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
原来如此,多谢小虾!

     xor     ebx,ebx
        mov     [eax].iDr0,ebx
        mov     [eax].iDr1,ebx
        mov     [eax].iDr2,ebx
        mov     [eax].iDr3,ebx
改成这样后用ollydbg调试,怎么不能清楚断点?
2008-3-26 19:37
0
雪    币: 2384
活跃值: (766)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
7
貌似还必须清除Dr6的值和设置Dr7的值为155h。
2008-3-26 22:08
0
雪    币: 172
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
改成这样还是不行。
这里清除的断点是不是ollydbg中的断点?ollydbg中的断点可以多于4个。
        xor ebx,ebx
        mov [eax].iDr0,ebx
        mov [eax].iDr1,ebx
        mov [eax].iDr2,ebx
        mov [eax].iDr3,ebx
        mov [eax].iDr6,ebx
        mov [eax].iDr7,155h
2008-3-27 14:42
0
雪    币: 224
活跃值: (10)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
9
应该有iDr4和iDr5吧
是不是保留没有使用???
2008-3-27 16:12
0
雪    币: 272
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
保留的,也不能用!除非硬件手册明确说了可以使用,不然就是指令非法故障。
2008-3-27 16:20
0
游客
登录 | 注册 方可回帖
返回