none
Difficulty getting Windows Internals 7th Edition code to work RRS feed

  • Question

  • Hello, this code in Windows Internals 7th edition is not working

    lkd> !for_each_process .if @@(((nt!_EPROCESS*)${@#Process})->Pcb.SecurePid) {
    .printf "Trustlet: %ma (%p)\n", @@(((nt!_EPROCESS*)${@#Process})->ImageFileName),
    @#Process }

    It keeps giving me a "Type does not have given member error"

    Please advise


    • Edited by adelhi Tuesday, September 15, 2020 3:09 PM
    Tuesday, September 15, 2020 3:08 PM

All replies

  • I don't have the book handy, so don't know what the writer was trying to realize, but the nt!_EPROCESS type doesn't contain the SecurePid field:

     kd> dt nt!_EPROCESS Pcb..
       +0x000 Pcb   :
          +0x000 Header :
             +0x000 Lock  : Int4B
             +0x000 LockNV : Int4B
             +0x000 Type  : UChar
             +0x001 Signalling : UChar
             +0x002 Size  : UChar
             +0x003 Reserved1 : UChar
             +0x000 TimerType : UChar
             +0x001 TimerControlFlags : UChar
             +0x001 Absolute : Pos 0, 1 Bit
             +0x001 Wake  : Pos 1, 1 Bit
             +0x001 EncodedTolerableDelay : Pos 2, 6 Bits
             +0x002 Hand  : UChar
             +0x003 TimerMiscFlags : UChar
             +0x003 Index : Pos 0, 6 Bits
             +0x003 Inserted : Pos 6, 1 Bit
             +0x003 Expired : Pos 7, 1 Bit
             +0x000 Timer2Type : UChar
             +0x001 Timer2Flags : UChar
             +0x001 Timer2Inserted : Pos 0, 1 Bit
             +0x001 Timer2Expiring : Pos 1, 1 Bit
             +0x001 Timer2CancelPending : Pos 2, 1 Bit
             +0x001 Timer2SetPending : Pos 3, 1 Bit
             +0x001 Timer2Running : Pos 4, 1 Bit
             +0x001 Timer2Disabled : Pos 5, 1 Bit
             +0x001 Timer2ReservedFlags : Pos 6, 2 Bits
             +0x002 Timer2ComponentId : UChar
             +0x003 Timer2RelativeId : UChar
             +0x000 QueueType : UChar
             +0x001 QueueControlFlags : UChar
             +0x001 Abandoned : Pos 0, 1 Bit
             +0x001 DisableIncrement : Pos 1, 1 Bit
             +0x001 QueueReservedControlFlags : Pos 2, 6 Bits
             +0x002 QueueSize : UChar
             +0x003 QueueReserved : UChar
             +0x000 ThreadType : UChar
             +0x001 ThreadReserved : UChar
             +0x002 ThreadControlFlags : UChar
             +0x002 CycleProfiling : Pos 0, 1 Bit
             +0x002 CounterProfiling : Pos 1, 1 Bit
             +0x002 GroupScheduling : Pos 2, 1 Bit
             +0x002 AffinitySet : Pos 3, 1 Bit
             +0x002 Tagged : Pos 4, 1 Bit
             +0x002 EnergyProfiling : Pos 5, 1 Bit
             +0x002 SchedulerAssist : Pos 6, 1 Bit
             +0x002 ThreadReservedControlFlags : Pos 7, 1 Bit
             +0x003 DebugActive : UChar
             +0x003 ActiveDR7 : Pos 0, 1 Bit
             +0x003 Instrumented : Pos 1, 1 Bit
             +0x003 Minimal : Pos 2, 1 Bit
             +0x003 Reserved4 : Pos 3, 2 Bits
             +0x003 AltSyscall : Pos 5, 1 Bit
             +0x003 UmsScheduled : Pos 6, 1 Bit
             +0x003 UmsPrimary : Pos 7, 1 Bit
             +0x000 MutantType : UChar
             +0x001 MutantSize : UChar
             +0x002 DpcActive : UChar
             +0x003 MutantReserved : UChar
             +0x004 SignalState : Int4B
             +0x008 WaitListHead : _LIST_ENTRY
          +0x018 ProfileListHead :
             +0x000 Flink : Ptr64 _LIST_ENTRY
             +0x008 Blink : Ptr64 _LIST_ENTRY
          +0x028 DirectoryTableBase : Uint8B
          +0x030 ThreadListHead :
             +0x000 Flink : Ptr64 _LIST_ENTRY
             +0x008 Blink : Ptr64 _LIST_ENTRY
          +0x040 ProcessLock : Uint4B
          +0x044 ProcessTimerDelay : Uint4B
          +0x048 DeepFreezeStartTime : Uint8B
          +0x050 Affinity :
             +0x000 Count : Uint2B
             +0x002 Size  : Uint2B
             +0x004 Reserved : Uint4B
             +0x008 Bitmap : [32] Uint8B
          +0x158 ReadyListHead :
             +0x000 Flink : Ptr64 _LIST_ENTRY
             +0x008 Blink : Ptr64 _LIST_ENTRY
          +0x168 SwapListEntry :
             +0x000 Next  : Ptr64 _SINGLE_LIST_ENTRY
          +0x170 ActiveProcessors :
             +0x000 Count : Uint2B
             +0x002 Size  : Uint2B
             +0x004 Reserved : Uint4B
             +0x008 Bitmap : [32] Uint8B
          +0x278 AutoAlignment : Uint4B
          +0x278 DisableBoost : Uint4B
          +0x278 DisableQuantum : Uint4B
          +0x278 DeepFreeze : Uint4B
          +0x278 TimerVirtualization : Uint4B
          +0x278 CheckStackExtents : Uint4B
          +0x278 CacheIsolationEnabled : Uint4B
          +0x278 PpmPolicy : Uint4B
          +0x278 VaSpaceDeleted : Uint4B
          +0x278 ReservedFlags : Uint4B
          +0x278 ProcessFlags : Int4B
          +0x27c ActiveGroupsMask : Uint4B
          +0x280 BasePriority : Char
          +0x281 QuantumReset : Char
          +0x282 Visited : Char
          +0x283 Flags :
             +0x000 ExecuteDisable : Pos 0, 1 Bit
             +0x000 ExecuteEnable : Pos 1, 1 Bit
             +0x000 DisableThunkEmulation : Pos 2, 1 Bit
             +0x000 Permanent : Pos 3, 1 Bit
             +0x000 ExecuteDispatchEnable : Pos 4, 1 Bit
             +0x000 ImageDispatchEnable : Pos 5, 1 Bit
             +0x000 DisableExceptionChainValidation : Pos 6, 1 Bit
             +0x000 Spare : Pos 7, 1 Bit
             +0x000 ExecuteOptions : UChar
             +0x000 ExecuteOptionsNV : UChar
          +0x284 ThreadSeed : [32] Uint2B
          +0x2c4 IdealProcessor : [32] Uint2B
          +0x304 IdealNode : [32] Uint2B
          +0x344 IdealGlobalNode : Uint2B
          +0x346 Spare1 : Uint2B
          +0x348 StackCount :
             +0x000 Value : Int4B
             +0x000 State : Pos 0, 3 Bits
             +0x000 StackCount : Pos 3, 29 Bits
          +0x350 ProcessListEntry :
             +0x000 Flink : Ptr64 _LIST_ENTRY
             +0x008 Blink : Ptr64 _LIST_ENTRY
          +0x360 CycleTime : Uint8B
          +0x368 ContextSwitches : Uint8B
          +0x370 SchedulingGroup :
          +0x378 FreezeCount : Uint4B
          +0x37c KernelTime : Uint4B
          +0x380 UserTime : Uint4B
          +0x384 ReadyTime : Uint4B
          +0x388 UserDirectoryTableBase : Uint8B
          +0x390 AddressPolicy : UChar
          +0x391 Spare2 : [71] UChar
          +0x3d8 InstrumentationCallback :
          +0x3e0 SecureState :
             +0x000 SecureHandle : Uint8B
             +0x000 Flags : <unnamed-tag>
          +0x3e8 KernelWaitTime : Uint8B
          +0x3f0 UserWaitTime : Uint8B
          +0x3f8 LastRebalanceQpc : Uint8B
          +0x400 PerProcessorCycleTimes :
          +0x408 EndPadding : [6] Uint8B

    There is a SecureState field under the Pcb structure but I don't think it is related

    I cannot find anywhere the field SecurePid..

    This is on Windows 10, version 10.0.20211.1000 

    Maybe that is referred to a previous OS version..

    HTH
    -mario

    Thursday, September 17, 2020 12:53 PM