声明:
内容都是书中或baidu的,很多在论坛都有出现,只是觉得有阅读和收藏整理以方便自己使用的必要。另外就是方便自己以后回头看看自己曾经走过的坎坷之路,仅此而已。
软件调试第8章windows概述,讲到了windows历史,进程对象的相关结构信息及windbg查看方法。对于模式切换讲到了int 2E和快速系统调用,而对于这个具体的过程需要自己再看看,目前只是从书中得到概念,实际的切换过程却是需要动手。
脚印:
2011.6.10 软件调试
!prcoess 0[显示所有,-1自身] 0[信息的详细程度,0最少]
Kd>!process 0 0
PROCESS 8242b3e0 SessionId: 0 Cid: 0d9c Peb: 7ffda000 ParentCid: 059c
DirBase: 09a40340 ObjectTable: e16c5fb8 HandleCount: 42.
Image: notepad.exe
SessionId 为每个用户建立的会话ID,在Xp中第二用户登录时会建立SessionId:1,不同的工作场所,互不干扰。在vista及以上系统就有2个SessionId,2个windows子系统进程(CSRSS)在运行
Cid:也就是PID是用户态标识进程,而在内核使用EPROCESS指针
ParentCid:创建该进程的进程ID
DirBase:页目录基地址,即切换到该进程时,Cr3寄存器的内容,低12位为0,高20位又叫页帧编号(PFN),
!ptow 页帧编号 显示对应进程中所有物理地址到虚拟地址间映射
09a40340 -> 1001101001000000 001101000000
ObjectTable:对象表格是该进程的内核对象和句柄表格
在内核调试对话中命令格式为:!handle [要显示的句柄索引] [显示标志[进程ID或Eprocess[类型]]]
kd> !handle 0 0 8242b3e0
processor number 0, process 8242b3e0
PROCESS 8242b3e0 SessionId: 0 Cid: 0d9c Peb: 7ffda000 ParentCid: 059c
DirBase: 09a40340 ObjectTable: e16c5fb8 HandleCount: 42.
Image: notepad.exe
Handle table at e1f9b000 with 42 Entries in use
0004: Object: e1000080 GrantedAccess: 000f0003
0008: Object: e157a030 GrantedAccess: 00000003
在用户调试对话中格式为:!handle [要显示的句柄索引] [显示标志[ [类型]]]
!object 可以进一步查看内核对象的信息
kd> !object e1000080
Object: e1000080 Type: (827b8ad0) KeyedEvent
ObjectHeader: e1000068 (old version)
HandleCount: 26 PointerCount: 27
Directory Object: e1000600 Name: CritSecOutOfMemoryEvent
HandleCount 句柄数量,也就是ObjectTable所包含的表项数。
kd> dt _eprocess 8242b3e0
dt 显示结构,后面跟结构名称,或加上结构地址
nt!_EPROCESS
+0x000 Pcb : _KPROCESS //内核进程块,用来记录任务调度有关的信息
+0x06c ProcessLock : _EX_PUSH_LOCK
+0x070 CreateTime : _LARGE_INTEGER 0x1cc2642`55a83bcc //创建时间
+0x078 ExitTime : _LARGE_INTEGER 0x0 //退出时间
+0x080 RundownProtect : _EX_RUNDOWN_REF
+0x084 UniqueProcessId : 0x00000d9c //PID
……
+0x0b4 SessionProcessLinks : _LIST_ENTRY [ 0xf7ae1014 - 0x8243f6ec ]
+0x0bc DebugPort : (null) //用户态调试端口
+0x0c0 ExceptionPort : 0xe1510918 //异常端口
+0x0c4 ObjectTable : 0xe16c5fb8 _HANDLE_TABLE //对象句柄表
+0x0c8 Token : _EX_FAST_REF //访问令牌
……
+0x11c VadRoot : 0x825f9598 //虚拟地址描述符二叉树的根节点
……
+0x170 Session : 0xf7ae1000 //所属会话对象
+0x174 ImageFileName : [16] "notepad.exe"
+0x184 JobLinks : _LIST_ENTRY [ 0x0 - 0x0 ]
+0x18c LockedPagesList : (null)
+0x190 ThreadListHead : _LIST_ENTRY [ 0x8242bfd4 - 0x8242bfd4 ] //线程列表
……
+0x1a8 DefaultHardErrorProcessing : 1
+0x1ac LastThreadExitStatus : 0
+0x1b0 Peb : 0x7ffda000 _PEB //进程环境块
……
+0x248 ProcessExiting : 0y0 //正在退出标志
+0x248 ProcessDelete : 0y0 //删除标志
+0x248 Wow64SplitPages : 0y0
……
+0x252 SubSystemMinorVersion : 0 ''
+0x253 SubSystemMajorVersion : 0x4 ''
+0x252 SubSystemVersion : 0x400 //环境子系统版本号
+0x254 PriorityClass : 0x2 ''
+0x255 WorkingSetAcquiredUnsafe : 0 ''
+0x258 Cookie : 0x57beca8e
!process 8242b3e0 //显示进程详细信息
kd> !process 8242b3e0
PROCESS 8242b3e0 SessionId: 0 Cid: 0d9c Peb: 7ffda000 ParentCid: 059c
DirBase: 09a40340 ObjectTable: e16c5fb8 HandleCount: 42.
Image: notepad.exe
VadRoot 825f9598 Vads 65 Clone 0 Private 188. Modified 13. Locked 0.
DeviceMap e1c64a98
Token e1e7a388
ElapsedTime 00:18:07.756
UserTime 00:00:00.046
KernelTime 00:00:00.671
QuotaPoolUsage[PagedPool] 62484
QuotaPoolUsage[NonPagedPool] 2600
Working Set Sizes (now,min,max) (886, 50, 345) (3544KB, 200KB, 1380KB)
PeakWorkingSetSize 892
VirtualSize 31 Mb
PeakVirtualSize 36 Mb
PageFaultCount 939
MemoryPriority BACKGROUND
……
显示访问令牌属性
kd> !token e1e7a388 //!process Eprocess地址获得的Token地址
_TOKEN e1e7a388
TS Session ID: 0
User: S-1-5-21-484763869-2111687655-725345543-500
Groups:
00 S-1-5-21-484763869-2111687655-725345543-513
Attributes - Mandatory Default Enabled
01 S-1-1-0
Attributes - Mandatory Default Enabled
02 S-1-5-32-544
Attributes - Mandatory Default Enabled Owner
03 S-1-5-32-545
Attributes - Mandatory Default Enabled
04 S-1-5-4
Attributes - Mandatory Default Enabled
05 S-1-5-11
Attributes - Mandatory Default Enabled
06 S-1-5-5-0-61077
Attributes - Mandatory Default Enabled LogonId
07 S-1-2-0
Attributes - Mandatory Default Enabled
Primary Group: S-1-5-21-484763869-2111687655-725345543-513
Privs:
00 0x000000017 SeChangeNotifyPrivilege Attributes - Enabled Default
01 0x000000008 SeSecurityPrivilege Attributes -
02 0x000000011 SeBackupPrivilege Attributes -
03 0x000000012 SeRestorePrivilege Attributes -
04 0x00000000c SeSystemtimePrivilege Attributes -
05 0x000000013 SeShutdownPrivilege Attributes -
06 0x000000018 SeRemoteShutdownPrivilege Attributes -
07 0x000000009 SeTakeOwnershipPrivilege Attributes -
08 0x000000014 SeDebugPrivilege Attributes -
09 0x000000016 SeSystemEnvironmentPrivilege Attributes -
10 0x00000000b SeSystemProfilePrivilege Attributes -
11 0x00000000d SeProfileSingleProcessPrivilege Attributes -
12 0x00000000e SeIncreaseBasePriorityPrivilege Attributes -
13 0x00000000a SeLoadDriverPrivilege Attributes - Enabled
14 0x00000000f SeCreatePagefilePrivilege Attributes -
15 0x000000005 SeIncreaseQuotaPrivilege Attributes -
16 0x000000019 SeUndockPrivilege Attributes - Enabled
17 0x00000001c SeManageVolumePrivilege Attributes -
18 0x00000001d SeImpersonatePrivilege Attributes - Enabled Default
19 0x00000001e SeCreateGlobalPrivilege Attributes - Enabled Default
Authentication ID: (0,f079)
Impersonation Level: Anonymous
TokenType: Primary
Source: User32 TokenFlags: 0x89 ( Token in use )
Token ID: 50dd6 ParentToken ID: 0
Modified ID: (0, 50dd8)
RestrictedSidCount: 0 RestrictedSids: 00000000
显示令牌对象的地址信息
kd> dt nt!_Token e1e7a388
+0x000 TokenSource : _TOKEN_SOURCE
+0x010 TokenId : _LUID
+0x018 AuthenticationId : _LUID
+0x020 ParentTokenId : _LUID
+0x028 ExpirationTime : _LARGE_INTEGER 0x7fffffff`ffffffff
+0x030 TokenLock : 0x825886b0 _ERESOURCE
+0x038 AuditPolicy : _SEP_AUDIT_POLICY
+0x040 ModifiedId : _LUID
+0x048 SessionId : 0
+0x04c UserAndGroupCount : 9
+0x050 RestrictedSidCount : 0
+0x054 PrivilegeCount : 0x14
+0x058 VariableLength : 0x214
+0x05c DynamicCharged : 0x1f4
+0x060 DynamicAvailable : 0
+0x064 DefaultOwnerIndex : 0
+0x068 UserAndGroups : 0xe1e7a518 _SID_AND_ATTRIBUTES
+0x06c RestrictedSids : (null)
+0x070 PrimaryGroup : 0xe1f45118
+0x074 Privileges : 0xe1e7a428 _LUID_AND_ATTRIBUTES
+0x078 DynamicPart : 0xe1f45118 -> 0x501
+0x07c DefaultDacl : 0xe1f45134 _ACL
+0x080 TokenType : 1 ( TokenPrimary )
+0x084 ImpersonationLevel : 0 ( SecurityAnonymous )
+0x088 TokenFlags : 0x89
+0x08c TokenInUse : 0x1 ''
+0x090 ProxyData : (null)
+0x094 AuditData : (null)
+0x098 OriginatingLogonSession : _LUID
+0x0a0 VariablePart : 0x17
设置当前的隐含进程
kd> .process 8242b3e0
Implicit process is now 8242b3e0
显示进程环境块信息,此信息是内核建立后映射到用户空间的,多个进程的PEB地址可能是同一值
kd> dt _peb 0x7ffda000
nt!_PEB
+0x000 InheritedAddressSpace : 0 ''
+0x001 ReadImageFileExecOptions : 0 ''
+0x002 BeingDebugged : 0 '' //是否被调试
+0x003 SpareBool : 0 ''
+0x004 Mutant : 0xffffffff
+0x008 ImageBaseAddress : 0x01000000 //执行映像(EXE)的基地址
+0x00c Ldr : 0x001a1e90 _PEB_LDR_DATA
+0x010 ProcessParameters : 0x00020000 _RTL_USER_PROCESS_PARAMETERS
+0x014 SubSystemData : (null)
+0x018 ProcessHeap : 0x000a0000 //进程堆
+0x01c FastPebLock : 0x7c99e4c0 _RTL_CRITICAL_SECTION
.....
+0x064 NumberOfProcessors : 1 //Cpu个数
+0x068 NtGlobalFlag : 0 //全局标志
+0x070 CriticalSectionTimeout : _LARGE_INTEGER 0xffffe86d`079b8000
+0x078 HeapSegmentReserve : 0x100000 //默认进程堆的总保留空间,1M
+0x07c HeapSegmentCommit : 0x2000 //默认进程堆已提交空间
+0x080 HeapDeCommitTotalFreeThreshold : 0x10000
+0x084 HeapDeCommitFreeBlockThreshold : 0x1000
+0x088 NumberOfHeaps : 9 //堆的个数
+0x08c MaximumNumberOfHeaps : 0x10 //堆的最多个数
+0x090 ProcessHeaps : 0x7c99de80 -> 0x000a0000 //保存堆句柄的数组地址
+0x094 GdiSharedHandleTable : 0x00470000 //GDI共享句柄表
+0x098 ProcessStarterHelper : (null)
+0x09c GdiDCAttributeList : 0x14
+0x0a0 LoaderLock : 0x7c99c0d8
+0x0a4 OSMajorVersion : 5 //操作系统主版本号
+0x0a8 OSMinorVersion : 1 //操作系统子版本号
+0x0ac OSBuildNumber : 0xa28 //操作系统构建号,即2600
+0x0ae OSCSDVersion : 0x200 //Service pack 版本号
+0x0b0 OSPlatformId : 2 //系统类别,2 Nt,1 9X,3 WinCE
+0x0b4 ImageSubsystem : 2 //环境子系统ID
+0x0b8 ImageSubsystemMajorVersion : 4 //环境子系统主版本号
+0x0bc ImageSubsystemMinorVersion : 0 //环境子系统子版本号
+0x0c0 ImageProcessAffinityMask : 0
+0x0c4 GdiHandleBuffer : [34] 0
+0x14c PostProcessInitRoutine : (null)
+0x150 TlsExpansionBitmap : 0x7c99e478
+0x154 TlsExpansionBitmapBits : [32] 0
+0x1d4 SessionId : 0 //所属会话ID
......
显示PEB结构信息
kd> !peb 0x7ffda000
PEB at 7ffda000
InheritedAddressSpace: No
ReadImageFileExecOptions: No
BeingDebugged: No
ImageBaseAddress: 01000000
Ldr 001a1e90
Ldr.Initialized: Yes
Ldr.InInitializationOrderModuleList: 001a1f28 . 001a2fa0
Ldr.InLoadOrderModuleList: 001a1ec0 . 001a2f90
Ldr.InMemoryOrderModuleList: 001a1ec8 . 001a2f98
Base TimeStamp Module
1000000 41107cc3 Aug 04 14:05:55 2004 ????????????ꆦ?ꆥꡀꡁ?????????????ꡂ
7c920000 4121457c Aug 17 07:38:36 2004 C:\WINDOWS\system32\ntdll.dll
7c800000 4121457c Aug 17 07:38:36 2004 C:\WINDOWS\system32\kernel32.dll
76320000 4121455b Aug 17 07:38:03 2004 C:\WINDOWS\system32\comdlg32.dll
77f40000 41214578 Aug 17 07:38:32 2004 C:\WINDOWS\system32\SHLWAPI.dll
77be0000 412145fe Aug 17 07:40:46 2004 C:\WINDOWS\system32\msvcrt.dll
77ef0000 4121453f Aug 17 07:37:35 2004 C:\WINDOWS\system32\GDI32.dll
77d10000 41214577 Aug 17 07:38:31 2004 C:\WINDOWS\system32\USER32.dll
77da0000 4121454d Aug 17 07:37:49 2004 C:\WINDOWS\system32\ADVAPI32.dll
77e50000 41214569 Aug 17 07:38:17 2004 C:\WINDOWS\system32\RPCRT4.dll
77180000 41214532 Aug 17 07:37:22 2004 C:\WINDOWS\WinSxS\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.2600.2180_x-ww_a84f1ff9\COMCTL32.dll
773a0000 41214573 Aug 17 07:38:27 2004 C:\WINDOWS\system32\SHELL32.dll
72f70000 4121457a Aug 17 07:38:34 2004 C:\WINDOWS\system32\WINSPOOL.DRV
5cc30000 41214576 Aug 17 07:38:30 2004 C:\WINDOWS\system32\ShimEng.dll
58fb0000 41214534 Aug 17 07:37:24 2004 C:\WINDOWS\AppPatch\AcGenral.DLL
76b10000 4121459a Aug 17 07:39:06 2004 C:\WINDOWS\system32\WINMM.dll
.......
74680000 41214596 Aug 17 07:39:02 2004 C:\WINDOWS\system32\MSCTF.dll
73640000 41214597 Aug 17 07:39:03 2004 C:\WINDOWS\system32\msctfime.ime
SubSystemData: 00000000
ProcessHeap: 000a0000
ProcessParameters: 00020000
WindowTitle: '< Name not readable >'
ImageFile: '< Name not readable >'
CommandLine: '< Name not readable >'
DllPath: '○ˮ'
Environment: 00140013
模式切换:
Eax 保存系统服务编号
Edx 保存参数
Int 2E 或快速系统调用切换到内核
kd> !idt 2e
Dumping IDT:
2e: 8053d651 nt!KiSystemService
快速系统调用使用MSR寄存器
IA-32中称为MSR(Model Specific Register)。这里牵涉到3个特殊寄存器:
[code]
SYSENTER_CS_MSR: New code segment selector 0x174
SYSENTER_ESP_MSR: New Stack Pointer 0x175
SYSENTER_EIP_MSR: New Instruction Pointer 0x176
kd> rdmsr 174
msr[174] = 00000000`00000008
kd> dg 8 //CS选择子 KGDT_R0_CODE 8 其他参见winDbg帮助关于Dg
P Si Gr Pr Lo
Sel Base Limit Type l ze an es ng Flags
---- -------- -------- ---------- - -- -- -- -- --------
0008 00000000 ffffffff Code RE 0 Bg Pg P Nl 00000c9a
kd> rdmsr 175
msr[175] = 00000000`f79ef000
kd> rdmsr 176
msr[176] = 00000000`8053d710
kd> x nt!kifastcallentry
8053d710 nt!KiFastCallEntry = <no type information>
下面是百度的
RDMSR 0F 32 不影响标志位 把ECX指定的模型专用寄存器内容送EDX:EAX RDMSR
WRMSR 0F 30 不影响标志位 把EDX:EAX的内容写入ECX指定的模型专用寄存器 WRMSR
//coded by greatcsk
//开启BTS
mov ecx,MSR_DEBUGCTL
mov eax,0x1c
WRMSR
//关闭BTS
mov ecx,MSR_DEBUGCTL
xor eax,eax
WRMSR
1. 装载SYSENTER_CS_MSR 到CS 寄存器,设置目标代码段
2. 装载SYSENTER_EIP_MSR到 EIP寄存器,设置目标指令
3. SYSENTER_CS_MSR+8 装载到SS寄存器 ,设置栈段
4. 装载SYSENTER_ESP_MSR 到ESP寄存器,设置栈帧
5. 切换RING0.
6. 清除 EFLAGS的 VM标志
7. 执行RING0例程
1. SYSENTER_CS_MSR+16装载到 CS寄存器
2. 将EDX的值送入EIP
3. SYSENTER_CS_MSR+24 装载到SS寄存器
4. 将ECX的值送入ESP
5. 切换回RING3
6. 执行EIP处的RING3指令
我们在微软公开的内核WRK中发现关于这三个寄存器的设置,其中SYSENTER_EIP_MSR设置的值是KiFastCallEntry。
代码如下: (后来发现这是pediy的rookit专题里面的
)
VOID KiLoadFastSyscallMachineSpecificRegisters( IN PLONG Context )
/*++
Routine Description: Load MSRs used to support Fast Syscall/return. This routine is
run on all processors.
Arguments: None.
Return Value: None.
--*/
{
PKPRCB Prcb;
UNREFERENCED_PARAMETER (Context);
if (KiFastSystemCallIsIA32) {
Prcb = KeGetCurrentPrcb();
// Use Intel defined way of doing this.
WRMSR(MSR_SYSENTER_CS, KGDT_R0_CODE);
WRMSR(MSR_SYSENTER_EIP, (ULONGLONG)(ULONG)KiFastCallEntry);
WRMSR(MSR_SYSENTER_ESP, (ULONGLONG)(ULONG)Prcb->DpcStack);
}
}
看看我电脑的情况如下:
kd> rdmsr 176
msr[176] = 00000000`8053d710
kd> u 8053d710
nt!KiFastCallEntry:
8053d710 b923000000 mov ecx,23h
8053d715 6a30 push 30h
8053d717 0fa1 pop fs
8053d719 8ed9 mov ds,cx
8053d71b 8ec1 mov es,cx
8053d71d 8b0d40f0dfff mov ecx,dword ptr ds:[0FFDFF040h]
8053d723 8b6104 mov esp,dword ptr [ecx+4]
8053d726 6a23 push 23h
下面是rootkit.com上的一个例子,这个例子有点不厚道,在你卸载的时候会bsod.我简单修改了下,贴代码如下:
#include "ntddk.h"
ULONG d_origKiFastCallEntry; // Original value of ntoskrnl!KiFastCallEntry
VOID OnUnload( IN PDRIVER_OBJECT DriverObject )
{
_asm
{
mov ecx, 0x176
xor edx,edx
mov eax, d_origKiFastCallEntry // Hook function address
wrmsr // Write to the IA32_SYSENTER_EIP register
}
}
// Hook function
__declspec(naked) MyKiFastCallEntry()
{
__asm {
jmp [d_origKiFastCallEntry]
}
}
NTSTATUS DriverEntry( IN PDRIVER_OBJECT theDriverObject, IN PUNICODE_STRING theRegistryPath )
{
theDriverObject->DriverUnload = OnUnload;
__asm {
mov ecx, 0x176 //SYSENTER_EIP_MSR
rdmsr // read the value of the IA32_SYSENTER_EIP register
mov d_origKiFastCallEntry, eax
mov eax, MyKiFastCallEntry // Hook function address
wrmsr // Write to the IA32_SYSENTER_EIP register
}
return STATUS_SUCCESS;
}
Hook的思路就是修改MSR,176的SYSENTER_EIP_MSR所对应的KiFastCallEntry 地址
http://bbs.pediy.com/showthread.php?t=42705
没有实体的进程 系统进程和IDLE进程
系统进程PID为4(>=xp)或8,IDLE进程ID为0
通过显示处理器控制模块来获取IDLE信息
[code]kd> !prcb
PRCB for Processor 0 at ffdff120:
Threads-- Current 827ba8b8 (当前的EThread指针) Next 00000000 Idle 80552920
Number 0 SetMember 1
Interrupt Count -- 00028774
Times -- Dpc 00000068 Interrupt 0000014f
Kernel 0000336d User 0000044b
kd> !thread 80552920
THREAD 80552920 Cid 0000.0000 Teb: 00000000 Win32Thread: 00000000 RUNNING on processor 0
Not impersonating
Owning Process 0 Image: <Unknown>
Attached Process 80552b80 Image: Idle //EPROCESS信息
Wait Start TickCount 3510 Ticks: 10754 (0:00:02:48.031)
Context Switch Count 21950
UserTime 00:00:00.000
KernelTime 00:01:59.703
Stack Init 8054a100 Current 80549e4c Base 8054a100 Limit 80547100 Call 0
Priority 16 BasePriority 0 PriorityDecrement 0 DecrementCount 0
ChildEBP RetAddr Args to Child
80549e54 00000000 0000000e 00000000 00000000 nt!KiIdleLoop+0x5f (FPO: [0,0,0])
kd> dt _eprocess 80552b80
ntdll!_EPROCESS
+0x000 Pcb : _KPROCESS
+0x174 ImageFileName : [16] "Idle"
+0x252 SubSystemVersion : 0
+0x254 PriorityClass : 0 ''
+0x255 WorkingSetAcquiredUnsafe : 0 ''
+0x258 Cookie : 0
kd> !process 80552b80
PROCESS 80552b80 SessionId: none Cid: 0000 Peb: 00000000 ParentCid: 0000
DirBase: 00b1f000 ObjectTable: e1000cc0 HandleCount: 247.
Image: Idle
VadRoot 00000000 Vads 0 Clone 0 Private 0. Modified 0. Locked 0.
DeviceMap 00000000
Token e10017e8
ElapsedTime 00:00:00.000
UserTime 00:00:00.000
KernelTime 00:01:59.703
THREAD 80552920 Cid 0000.0000 Teb: 00000000 Win32Thread: 00000000 RUNNING on processor 0
Not impersonating
Owning Process 0 Image: <Unknown>
Attached Process 80552b80 Image: Idle
Wait Start TickCount 3510 Ticks: 10754 (0:00:02:48.031)
Context Switch Count 21950
UserTime 00:00:00.000
KernelTime 00:01:59.703
用户空间:
会话管理器进程SMSS.exe 系统中第一个根据映像文件创建的进程,加载和初始化win32子系统的内核模块Win32.sys,创建win32子系统服务器进程CSRSS.exe 并创建登录进程WinLogon.exe
Windows子系统服务器进程CSRSS.exe, 负责维护windows子系统的”日常事务”,为子系统中的各个进程提供服务。
登录进程 WinLogon.exe 负责用法登录和安全有关的事务。启动后会创建LSASS进程和系统服务管理进程Services.exe。xp的文件保护功能(WFP)也是在这个进程中实现的(sfc.dll和sfc_os.dll)
本地安全和认证进程 LSASS.exe 负责用户身份验证,LSASS:loacl Security Authority Subsystem Service
服务管理进程 Services.exe 负责启动和管理系统服务程序Spoolsv.exe打印机脱机服务,WmiPrvSE.exe是WMI提供器管理服务,SvcHost.exe是一个通用的服务宿主程序
OS/2子系统和POSIX子系统服务进程,用于咋win系统中运行OS/2和符合OSIX标准的程序
壳程序(Shell) 默认为Explorer.exe,负责显示开始菜单,任务栏和桌面图标等
调试信息的Send时机:
在进程创建时如果没有其他线程就是进程,否则线程标志,在结束线程时如果线程数不为0则线程,否则进程
在LoadDll有NtMap和NtUnmap时都会调用发给调试子系统来判断是否有必要发调试
其他的异常事件都判断是否要发调试信息,在需要发时会关起进程(除被调试线程),调试器处理完返回时,在恢复。
_KTHREAD 中有成员表示当前挂起和解冻的线程数
+0x1b8 FreezeCount : 0 ''
+0x1b9 SuspendCount : 0 ''
+0x1ba IdealProcessor : 0 ''
+0x1bb DisableBoost : 0 ''
kd> dt _KTHREAD freezecount 8242bda8
ntdll!_KTHREAD
+0x1b8 FreezeCount : 0 ''
[CTF入门培训]顶尖高校博士及硕士团队亲授《30小时教你玩转CTF》,视频+靶场+题目!助力进入CTF世界