吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1773|回复: 13
收起左侧

[求助] Windows内核API PsGetCurrentThread

[复制链接]
一身白 发表于 2020-4-17 11:58
请教一下!!
这里的  PsGetCurrentThread  
为什么会报错 说不能指向不完整的类型 ,我参考WINDOWS 2003公开的代码  写法也是这样子写   开源系统ReaceOs 里面也是这样的写法  为啥我这项目里面不行!!! 项目配置问题??
JJ%_M16MXNDJ4)`35U)~OVC.png
image.png

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

古月不傲 发表于 2020-4-17 12:53
PETHREAD的成员变量是透明的 你只能用+xxx偏移的方式 或者自己把PETHREAD重新照着windbg 定义一下结构
klamauk 发表于 2020-4-17 13:23
ETHREAD的地址就是KTHREAD的地址,第一个参数直填CurrentThread就可以了。
 楼主| 一身白 发表于 2020-4-17 17:09
klamauk 发表于 2020-4-17 13:23
ETHREAD的地址就是KTHREAD的地址,第一个参数直填CurrentThread就可以了。

我定义了ETHREAD结构体  里面放一个UNION   Tcb   编译就通过了~~  既然第一个参数可以直接填 为什么这么多代码示例都要指针指向呢
 楼主| 一身白 发表于 2020-4-17 17:11
本帖最后由 一身白 于 2020-4-17 17:13 编辑
古月不傲 发表于 2020-4-17 12:53
PETHREAD的成员变量是透明的 你只能用+xxx偏移的方式 或者自己把PETHREAD重新照着windbg 定义一下结构

我定义了 _ETHREAD  结构体 里面放了UNION  Tcb  编译就通过了, 偏移来访问?改怎么写~  为什么《Windows情景分析》书中能这样子写  还有Windows2003  源代码里面也是这样子写
klamauk 发表于 2020-4-17 18:59
那是因为是源代码,但你在编写驱动时,微软提供给你的WDK是没有这样的结构的,但你可以自己定义。至于书中的代码示例使用指针指向那是提高可阅读性。
 楼主| 一身白 发表于 2020-4-17 19:01
klamauk 发表于 2020-4-17 18:59
那是因为是源代码,但你在编写驱动时,微软提供给你的WDK是没有这样的结构的,但你可以自己定义。至于书中 ...

行吧,明白了
klamauk 发表于 2020-4-17 19:14
至于使用偏移来访问就像这样
PUCHAR CurrentThread = (PUCHAR)PsGetCurrentThread();
KeSetPriorityThread((PKTHREAD)(CurrentThread + 0), LOW_REALTIME_PRIORITY + 3);
把CurrentThread 定义为PUCHAR是保证CurrentThread+1后指向下一个字节。

对照对应的系统的ETHREAD使用就可以
0: kd> dt _ETHREAD
ntdll!_ETHREAD
   +0x000 Tcb              : _KTHREAD
   +0x1c0 CreateTime       : _LARGE_INTEGER
   +0x1c0 NestedFaultCount : Pos 0, 2 Bits
   +0x1c0 ApcNeeded        : Pos 2, 1 Bit
   +0x1c8 ExitTime         : _LARGE_INTEGER
   +0x1c8 LpcReplyChain    : _LIST_ENTRY
   +0x1c8 KeyedWaitChain   : _LIST_ENTRY
   +0x1d0 ExitStatus       : Int4B
   ......
 楼主| 一身白 发表于 2020-4-17 19:43
klamauk 发表于 2020-4-17 19:14
至于使用偏移来访问就像这样
PUCHAR CurrentThread = (PUCHAR)PsGetCurrentThread();
KeSetPriorityThrea ...

感谢感谢!!
 楼主| 一身白 发表于 2020-4-17 22:10
klamauk 发表于 2020-4-17 18:59
那是因为是源代码,但你在编写驱动时,微软提供给你的WDK是没有这样的结构的,但你可以自己定义。至于书中 ...

大佬 碰到个新问题  PsGetCurrentThread()->Tcb.Win32Thread; 错误:表达式必须包涵结构或联合类型 这该怎么解决~~!!
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-26 19:24

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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