找回密码
 加入我们

QQ登录

只需一步,快速开始

搜索
查看: 1350|回复: 8

《WIN64驱动教程》补充[24]:不用任何API设置线程CONTEXT

[复制链接]

857

主题

2632

回帖

2

精华

管理员

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

积分
36130
发表于 2014-10-24 20:30:11 | 显示全部楼层 |阅读模式
作者:Tesla.Angela

线程的CONTEXT记录了各种寄存器的数值,包括很多人关心的DRX寄存器的数值。
而获取/设置CONTEXT一般来说是需要进程句柄的,于是游戏保护禁止打开进程就让很多调试器抓狂了。
其实在内核里获取/设置CONTEXT根本不需要句柄,因为它就记录在ETHREAD里。下面以WIN7X64为例:
  1. lkd> dt_kthread
  2. ntdll!_KTHREAD
  3.         +0x000 Header           : _DISPATCHER_HEADER
  4.         //省略无关内容...
  5.         +0x1c8 QueueListEntry   : _LIST_ENTRY
  6.         +0x1d8 TrapFrame        : Ptr64 _KTRAP_FRAME        //这个就是CONTEXT
  7.         +0x1e0 FirstArgument    : Ptr64 Void
  8.         //省略无关内容...
  9.         +0x358 XStateSave       : Ptr64 _XSTATE_SAVE
  10. lkd> dt_KTRAP_FRAME
  11. ntdll!_KTRAP_FRAME
  12.         +0x000 P1Home           : Uint8B
  13.         +0x008 P2Home           : Uint8B
  14.         +0x010 P3Home           : Uint8B
  15.         +0x018 P4Home           : Uint8B
  16.         +0x020 P5               : Uint8B
  17.         +0x028 PreviousMode     : Char
  18.         +0x029 PreviousIrql     : UChar
  19.         +0x02a FaultIndicator   : UChar
  20.         +0x02b ExceptionActive  : UChar
  21.         +0x02c MxCsr            : Uint4B
  22.         +0x030 Rax              : Uint8B
  23.         +0x038 Rcx              : Uint8B
  24.         +0x040 Rdx              : Uint8B
  25.         +0x048 R8               : Uint8B
  26.         +0x050 R9               : Uint8B
  27.         +0x058 R10              : Uint8B
  28.         +0x060 R11              : Uint8B
  29.         +0x068 GsBase           : Uint8B
  30.         +0x068 GsSwap           : Uint8B
  31.         +0x070 Xmm0             : _M128A
  32.         +0x080 Xmm1             : _M128A
  33.         +0x090 Xmm2             : _M128A
  34.         +0x0a0 Xmm3             : _M128A
  35.         +0x0b0 Xmm4             : _M128A
  36.         +0x0c0 Xmm5             : _M128A
  37.         +0x0d0 FaultAddress     : Uint8B
  38.         +0x0d0 ContextRecord    : Uint8B
  39.         +0x0d0 TimeStampCKCL    : Uint8B
  40.         +0x0d8 Dr0              : Uint8B        //大家关心的寄存器
  41.         +0x0e0 Dr1              : Uint8B        //大家关心的寄存器
  42.         +0x0e8 Dr2              : Uint8B        //大家关心的寄存器
  43.         +0x0f0 Dr3              : Uint8B        //大家关心的寄存器
  44.         +0x0f8 Dr6              : Uint8B        //大家关心的寄存器
  45.         +0x100 Dr7              : Uint8B        //大家关心的寄存器
  46.         +0x108 DebugControl     : Uint8B
  47.         +0x110 LastBranchToRip  : Uint8B
  48.         +0x118 LastBranchFromRip : Uint8B
  49.         +0x120 LastExceptionToRip : Uint8B
  50.         +0x128 LastExceptionFromRip : Uint8B
  51.         +0x108 LastBranchControl : Uint8B
  52.         +0x110 LastBranchMSR    : Uint4B
  53.         +0x130 SegDs            : Uint2B
  54.         +0x132 SegEs            : Uint2B
  55.         +0x134 SegFs            : Uint2B
  56.         +0x136 SegGs            : Uint2B
  57.         +0x138 TrapFrame        : Uint8B
  58.         +0x140 Rbx              : Uint8B
  59.         +0x148 Rdi              : Uint8B
  60.         +0x150 Rsi              : Uint8B
  61.         +0x158 Rbp              : Uint8B
  62.         +0x160 ErrorCode        : Uint8B
  63.         +0x160 ExceptionFrame   : Uint8B
  64.         +0x160 TimeStampKlog    : Uint8B
  65.         +0x168 Rip              : Uint8B
  66.         +0x170 SegCs            : Uint2B
  67.         +0x172 Fill0            : UChar
  68.         +0x173 Logging          : UChar
  69.         +0x174 Fill1            : [2] Uint2B
  70.         +0x178 EFlags           : Uint4B
  71.         +0x17c Fill2            : Uint4B
  72.         +0x180 Rsp              : Uint8B
  73.         +0x188 SegSs            : Uint2B
  74.         +0x18a Fill3            : Uint2B
  75.         +0x18c CodePatchCycle   : Int4B
复制代码
代码实现很简单:
游客,如果您要查看本帖隐藏内容请回复

2

主题

23

回帖

0

精华

金牌会员

积分
938
发表于 2014-10-30 20:59:47 | 显示全部楼层
老大这样貌似可以用来加载DLL~!{:soso_e102:}

0

主题

37

回帖

0

精华

铜牌会员

积分
61
发表于 2024-1-4 09:45:39 | 显示全部楼层
学习了

0

主题

21

回帖

0

精华

初来乍到

积分
9
发表于 2024-1-4 11:09:24 | 显示全部楼层
看看!!!!!!!!

0

主题

47

回帖

0

精华

贵宾会员

积分
89
发表于 2024-1-27 00:30:42 | 显示全部楼层
2024补充学习

5

主题

116

回帖

0

精华

铜牌会员

积分
174
发表于 2024-1-27 15:23:04 | 显示全部楼层
我来学习

1

主题

118

回帖

0

精华

金牌会员

积分
856
发表于 2024-3-28 16:59:53 | 显示全部楼层
看看隐藏里面是啥.

0

主题

45

回帖

0

精华

铜牌会员

积分
53
发表于 2024-3-29 13:50:43 | 显示全部楼层
学习一下

0

主题

92

回帖

0

精华

铜牌会员

积分
111
发表于 2025-1-26 11:11:12 | 显示全部楼层
好好学习
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

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