本帖最后由 十二 于 2011-8-19 12:58 编辑
- nt!PsGetCurrentProcess:
- 8329d344 64a124010000 mov eax,dword ptr fs:[00000124h]
- 8329d34a 8b4050 mov eax,dword ptr [eax+50h]
- 8329d34d c3 ret
- nt!_KPCR
- +0x000 NtTib : _NT_TIB
- +0x000 Used_ExceptionList : Ptr32 _EXCEPTION_REGISTRATION_RECORD
- +0x004 Used_StackBase : Ptr32 Void
- +0x008 Spare2 : Ptr32 Void
- +0x00c TssCopy : Ptr32 Void
- +0x010 ContextSwitches : Uint4B
- +0x014 SetMemberCopy : Uint4B
- +0x018 Used_Self : Ptr32 Void
- +0x01c SelfPcr : Ptr32 _KPCR
- +0x020 Prcb : Ptr32 _KPRCB
- +0x024 Irql : UChar
- +0x028 IRR : Uint4B
- +0x02c IrrActive : Uint4B
- +0x030 IDR : Uint4B
- +0x034 KdVersionBlock : Ptr32 Void
- +0x038 IDT : Ptr32 _KIDTENTRY
- +0x03c GDT : Ptr32 _KGDTENTRY
- +0x040 TSS : Ptr32 _KTSS
- +0x044 MajorVersion : Uint2B
- +0x046 MinorVersion : Uint2B
- +0x048 SetMember : Uint4B
- +0x04c StallScaleFactor : Uint4B
- +0x050 SpareUnused : UChar
- +0x051 Number : UChar
- +0x052 Spare0 : UChar
- +0x053 SecondLevelCacheAssociativity : UChar
- +0x054 VdmAlert : Uint4B
- +0x058 KernelReserved : [14] Uint4B
- +0x090 SecondLevelCacheSize : Uint4B
- +0x094 HalReserved : [16] Uint4B
- +0x0d4 InterruptMode : Uint4B
- +0x0d8 Spare1 : UChar
- +0x0dc KernelReserved2 : [17] Uint4B
- +0x120 PrcbData : _KPRCB
- nt!_KPRCB
- +0x000 MinorVersion : Uint2B
- +0x002 MajorVersion : Uint2B
- +0x004 CurrentThread : Ptr32 _KTHREAD
- +0x008 NextThread : Ptr32 _KTHREAD
- +0x00c IdleThread : Ptr32 _KTHREAD
- +0x010 LegacyNumber : UChar
- +0x011 NestingLevel : UChar
- +0x012 BuildType : Uint2B
- +0x014 CpuType : Char
- +0x015 CpuID : Char
- +0x016 CpuStep : Uint2B
- +0x016 CpuStepping : UChar
- +0x017 CpuModel : UChar
- +0x018 ProcessorState : _KPROCESSOR_STATE
- +0x338 KernelReserved : [16] Uint4B
- +0x378 HalReserved : [16] Uint4B
- .................
- ............
- nt!_KTHREAD
- +0x000 Header : _DISPATCHER_HEADER
- +0x010 CycleTime : Uint8B
- +0x018 HighCycleTime : Uint4B
- +0x020 QuantumTarget : Uint8B
- +0x028 InitialStack : Ptr32 Void
- +0x02c StackLimit : Ptr32 Void
- +0x030 KernelStack : Ptr32 Void
- +0x034 ThreadLock : Uint4B
- +0x038 WaitRegister : _KWAIT_STATUS_REGISTER
- +0x039 Running : UChar
- +0x03a Alerted : [2] UChar
- +0x03c KernelStackResident : Pos 0, 1 Bit
- +0x03c ReadyTransition : Pos 1, 1 Bit
- +0x03c ProcessReadyQueue : Pos 2, 1 Bit
- +0x03c WaitNext : Pos 3, 1 Bit
- +0x03c SystemAffinityActive : Pos 4, 1 Bit
- +0x03c Alertable : Pos 5, 1 Bit
- +0x03c GdiFlushActive : Pos 6, 1 Bit
- +0x03c UserStackWalkActive : Pos 7, 1 Bit
- +0x03c ApcInterruptRequest : Pos 8, 1 Bit
- +0x03c ForceDeferSchedule : Pos 9, 1 Bit
- +0x03c QuantumEndMigrate : Pos 10, 1 Bit
- +0x03c UmsDirectedSwitchEnable : Pos 11, 1 Bit
- +0x03c TimerActive : Pos 12, 1 Bit
- +0x03c Reserved : Pos 13, 19 Bits
- +0x03c MiscFlags : Int4B
- +0x040 ApcState : _KAPC_STATE
- +0x040 ApcStateFill : [23] UChar
- +0x057 Priority : Char
- +0x058 NextProcessor : Uint4B
- +0x05c DeferredProcessor : Uint4B
- +0x060 ApcQueueLock : Uint4B
- +0x064 ContextSwitches : Uint4B
- +0x068 State : UChar
- +0x069 NpxState : Char
- +0x06a WaitIrql : UChar
- +0x06b WaitMode : Char
- +0x06c WaitStatus : Int4B
- +0x070 WaitBlockList : Ptr32 _KWAIT_BLOCK
- +0x074 WaitListEntry : _LIST_ENTRY
- +0x074 SwapListEntry : _SINGLE_LIST_ENTRY
- +0x07c Queue : Ptr32 _KQUEUE
- +0x080 WaitTime : Uint4B
- +0x084 KernelApcDisable : Int2B
- +0x086 SpecialApcDisable : Int2B
- +0x084 CombinedApcDisable : Uint4B
- +0x088 Teb : Ptr32 Void
- +0x090 Timer : _KTIMER
- +0x0b8 AutoAlignment : Pos 0, 1 Bit
- +0x0b8 DisableBoost : Pos 1, 1 Bit
- +0x0b8 EtwStackTraceApc1Inserted : Pos 2, 1 Bit
- +0x0b8 EtwStackTraceApc2Inserted : Pos 3, 1 Bit
- +0x0b8 CalloutActive : Pos 4, 1 Bit
- +0x0b8 ApcQueueable : Pos 5, 1 Bit
- +0x0b8 EnableStackSwap : Pos 6, 1 Bit
- +0x0b8 GuiThread : Pos 7, 1 Bit
- +0x0b8 UmsPerformingSyscall : Pos 8, 1 Bit
- +0x0b8 VdmSafe : Pos 9, 1 Bit
- +0x0b8 ReservedFlags : Pos 10, 22 Bits
- +0x0b8 ThreadFlags : Int4B
- +0x0bc ServiceTable : Ptr32 Void
- +0x0c0 WaitBlock : [4] _KWAIT_BLOCK
- +0x120 QueueListEntry : _LIST_ENTRY
- +0x128 TrapFrame : Ptr32 _KTRAP_FRAME
- +0x12c FirstArgument : Ptr32 Void
- +0x130 CallbackStack : Ptr32 Void
- +0x130 CallbackDepth : Uint4B
- +0x134 ApcStateIndex : UChar
- +0x135 BasePriority : Char
- +0x136 PriorityDecrement : Char
- +0x136 ForegroundBoost : Pos 0, 4 Bits
- +0x136 UnusualBoost : Pos 4, 4 Bits
- +0x137 Preempted : UChar
- +0x138 AdjustReason : UChar
- +0x139 AdjustIncrement : Char
- +0x13a PreviousMode : Char
- +0x13b Saturation : Char
- +0x13c SystemCallNumber : Uint4B
- +0x140 FreezeCount : Uint4B
- +0x144 UserAffinity : _GROUP_AFFINITY
- +0x150 Process : Ptr32 _KPROCESS
- +0x154 Affinity : _GROUP_AFFINITY
- +0x160 IdealProcessor : Uint4B
- +0x164 UserIdealProcessor : Uint4B
- +0x168 ApcStatePointer : [2] Ptr32 _KAPC_STATE
- +0x170 SavedApcState : _KAPC_STATE
- +0x170 SavedApcStateFill : [23] UChar
- +0x187 WaitReason : UChar
- +0x188 SuspendCount : Char
- +0x189 Spare1 : Char
- +0x18a OtherPlatformFill : UChar
- +0x18c Win32Thread : Ptr32 Void
- +0x190 StackBase : Ptr32 Void
- +0x194 SuspendApc : _KAPC
- +0x194 SuspendApcFill0 : [1] UChar
- +0x195 ResourceIndex : UChar
- +0x194 SuspendApcFill1 : [3] UChar
- +0x197 QuantumReset : UChar
- +0x194 SuspendApcFill2 : [4] UChar
- +0x198 KernelTime : Uint4B
- +0x194 SuspendApcFill3 : [36] UChar
- +0x1b8 WaitPrcb : Ptr32 _KPRCB
- +0x194 SuspendApcFill4 : [40] UChar
- +0x1bc LegoData : Ptr32 Void
- +0x194 SuspendApcFill5 : [47] UChar
- +0x1c3 LargeStack : UChar
- +0x1c4 UserTime : Uint4B
- +0x1c8 SuspendSemaphore : _KSEMAPHORE
- +0x1c8 SuspendSemaphorefill : [20] UChar
- +0x1dc SListFaultCount : Uint4B
- +0x1e0 ThreadListEntry : _LIST_ENTRY
- +0x1e8 MutantListHead : _LIST_ENTRY
- +0x1f0 SListFaultAddress : Ptr32 Void
- +0x1f4 ThreadCounters : Ptr32 _KTHREAD_COUNTERS
- +0x1f8 XStateSave : Ptr32 _XSTATE_SAVE
- nt!_KAPC_STATE
- +0x000 ApcListHead : [2] _LIST_ENTRY
- +0x010 Process : Ptr32 _KPROCESS
- +0x014 KernelApcInProgress : UChar
- +0x015 KernelApcPending : UChar
- +0x016 UserApcPending : UChar
- nt!_Eprocess
- +0x000 Pcb : _KPROCESS
- +0x098 ProcessLock : _EX_PUSH_LOCK
- +0x0a0 CreateTime : _LARGE_INTEGER
- +0x0a8 ExitTime : _LARGE_INTEGER
- +0x0b0 RundownProtect : _EX_RUNDOWN_REF
- +0x0b4 UniqueProcessId : Ptr32 Void
- +0x0b8 ActiveProcessLinks : _LIST_ENTRY
- +0x0c0 ProcessQuotaUsage : [2] Uint4B
- +0x0c8 ProcessQuotaPeak : [2] Uint4B
- +0x0d0 CommitCharge : Uint4B
- +0x0d4 QuotaBlock : Ptr32 _EPROCESS_QUOTA_BLOCK
- +0x0d8 CpuQuotaBlock : Ptr32 _PS_CPU_QUOTA_BLOCK
- +0x0dc PeakVirtualSize : Uint4B
- +0x0e0 VirtualSize : Uint4B
- +0x0e4 SessionProcessLinks : _LIST_ENTRY
- +0x0ec DebugPort : Ptr32 Void
- +0x0f0 ExceptionPortData : Ptr32 Void
- +0x0f0 ExceptionPortValue : Uint4B
- +0x0f0 ExceptionPortState : Pos 0, 3 Bits
- +0x0f4 ObjectTable : Ptr32 _HANDLE_TABLE
- +0x0f8 Token : _EX_FAST_REF
- +0x0fc WorkingSetPage : Uint4B
- +0x100 AddressCreationLock : _EX_PUSH_LOCK
- +0x104 RotateInProgress : Ptr32 _ETHREAD
- +0x108 ForkInProgress : Ptr32 _ETHREAD
- +0x10c HardwareTrigger : Uint4B
- +0x110 PhysicalVadRoot : Ptr32 _MM_AVL_TABLE
- +0x114 CloneRoot : Ptr32 Void
- +0x118 NumberOfPrivatePages : Uint4B
- +0x11c NumberOfLockedPages : Uint4B
- +0x120 Win32Process : Ptr32 Void
- +0x124 Job : Ptr32 _EJOB
- +0x128 SectionObject : Ptr32 Void
- +0x12c SectionBaseAddress : Ptr32 Void
- +0x130 Cookie : Uint4B
- +0x134 Spare8 : Uint4B
- +0x138 WorkingSetWatch : Ptr32 _PAGEFAULT_HISTORY
- +0x13c Win32WindowStation : Ptr32 Void
- +0x140 InheritedFromUniqueProcessId : Ptr32 Void
- +0x144 LdtInformation : Ptr32 Void
- +0x148 VdmObjects : Ptr32 Void
- +0x14c ConsoleHostProcess : Uint4B
- +0x150 DeviceMap : Ptr32 Void
- +0x154 EtwDataSource : Ptr32 Void
- +0x158 FreeTebHint : Ptr32 Void
- +0x160 PageDirectoryPte : _HARDWARE_PTE
- +0x160 Filler : Uint8B
- +0x168 Session : Ptr32 Void
- +0x16c ImageFileName : [15] UChar
- +0x17b PriorityClass : UChar
- +0x17c JobLinks : _LIST_ENTRY
- +0x184 LockedPagesList : Ptr32 Void
- +0x188 ThreadListHead : _LIST_ENTRY
- +0x190 SecurityPort : Ptr32 Void
- +0x194 PaeTop : Ptr32 Void
- +0x198 ActiveThreads : Uint4B
- +0x19c ImagePathHash : Uint4B
- +0x1a0 DefaultHardErrorProcessing : Uint4B
- +0x1a4 LastThreadExitStatus : Int4B
- +0x1a8 Peb : Ptr32 _PEB
- +0x1ac PrefetchTrace : _EX_FAST_REF
- +0x1b0 ReadOperationCount : _LARGE_INTEGER
- +0x1b8 WriteOperationCount : _LARGE_INTEGER
- +0x1c0 OtherOperationCount : _LARGE_INTEGER
- +0x1c8 ReadTransferCount : _LARGE_INTEGER
- +0x1d0 WriteTransferCount : _LARGE_INTEGER
- +0x1d8 OtherTransferCount : _LARGE_INTEGER
- +0x1e0 CommitChargeLimit : Uint4B
- +0x1e4 CommitChargePeak : Uint4B
- +0x1e8 AweInfo : Ptr32 Void
- +0x1ec SeAuditProcessCreationInfo : _SE_AUDIT_PROCESS_CREATION_INFO
- +0x1f0 Vm : _MMSUPPORT
- +0x25c MmProcessLinks : _LIST_ENTRY
- +0x264 HighestUserAddress : Ptr32 Void
- +0x268 ModifiedPageCount : Uint4B
- +0x26c Flags2 : Uint4B
- +0x26c JobNotReallyActive : Pos 0, 1 Bit
- +0x26c AccountingFolded : Pos 1, 1 Bit
- +0x26c NewProcessReported : Pos 2, 1 Bit
- +0x26c ExitProcessReported : Pos 3, 1 Bit
- +0x26c ReportCommitChanges : Pos 4, 1 Bit
- +0x26c LastReportMemory : Pos 5, 1 Bit
- +0x26c ReportPhysicalPageChanges : Pos 6, 1 Bit
- +0x26c HandleTableRundown : Pos 7, 1 Bit
- +0x26c NeedsHandleRundown : Pos 8, 1 Bit
- +0x26c RefTraceEnabled : Pos 9, 1 Bit
- +0x26c NumaAware : Pos 10, 1 Bit
- +0x26c ProtectedProcess : Pos 11, 1 Bit
- +0x26c DefaultPagePriority : Pos 12, 3 Bits
- +0x26c PrimaryTokenFrozen : Pos 15, 1 Bit
- +0x26c ProcessVerifierTarget : Pos 16, 1 Bit
- +0x26c StackRandomizationDisabled : Pos 17, 1 Bit
- +0x26c AffinityPermanent : Pos 18, 1 Bit
- +0x26c AffinityUpdateEnable : Pos 19, 1 Bit
- +0x26c PropagateNode : Pos 20, 1 Bit
- +0x26c ExplicitAffinity : Pos 21, 1 Bit
- +0x270 Flags : Uint4B
- +0x270 CreateReported : Pos 0, 1 Bit
- +0x270 NoDebugInherit : Pos 1, 1 Bit
- +0x270 ProcessExiting : Pos 2, 1 Bit
- +0x270 ProcessDelete : Pos 3, 1 Bit
- +0x270 Wow64SplitPages : Pos 4, 1 Bit
- +0x270 VmDeleted : Pos 5, 1 Bit
- +0x270 OutswapEnabled : Pos 6, 1 Bit
- +0x270 Outswapped : Pos 7, 1 Bit
- +0x270 ForkFailed : Pos 8, 1 Bit
- +0x270 Wow64VaSpace4Gb : Pos 9, 1 Bit
- +0x270 AddressSpaceInitialized : Pos 10, 2 Bits
- +0x270 SetTimerResolution : Pos 12, 1 Bit
- +0x270 BreakOnTermination : Pos 13, 1 Bit
- +0x270 DeprioritizeViews : Pos 14, 1 Bit
- +0x270 WriteWatch : Pos 15, 1 Bit
- +0x270 ProcessInSession : Pos 16, 1 Bit
- +0x270 OverrideAddressSpace : Pos 17, 1 Bit
- +0x270 HasAddressSpace : Pos 18, 1 Bit
- +0x270 LaunchPrefetched : Pos 19, 1 Bit
- +0x270 InjectInpageErrors : Pos 20, 1 Bit
- +0x270 VmTopDown : Pos 21, 1 Bit
- +0x270 ImageNotifyDone : Pos 22, 1 Bit
- +0x270 PdeUpdateNeeded : Pos 23, 1 Bit
- +0x270 VdmAllowed : Pos 24, 1 Bit
- +0x270 CrossSessionCreate : Pos 25, 1 Bit
- +0x270 ProcessInserted : Pos 26, 1 Bit
- +0x270 DefaultIoPriority : Pos 27, 3 Bits
- +0x270 ProcessSelfDelete : Pos 30, 1 Bit
- +0x270 SetTimerResolutionLink : Pos 31, 1 Bit
- +0x274 ExitStatus : Int4B
- +0x278 VadRoot : _MM_AVL_TABLE
- +0x298 AlpcContext : _ALPC_PROCESS_CONTEXT
- +0x2a8 TimerResolutionLink : _LIST_ENTRY
- +0x2b0 RequestedTimerResolution : Uint4B
- +0x2b4 ActiveThreadsHighWatermark : Uint4B
- +0x2b8 SmallestTimerResolution : Uint4B
- +0x2bc TimerResolutionStackRecord : Ptr32 _PO_DIAG_STACK_RECORD
复制代码 至此得到Eprocess指针。+B8得到ActiveProcessLinks指针。
- nt!_List_Entry
- +0x000 Flink : Ptr32 _LIST_ENTRY
- +0x004 Blink : Ptr32 _LIST_ENTRY
复制代码 根据Flink得到本进程的后一个进程List_entry和根据Blink得到前一进程的List_entry,修改后一进程的Blink为前一进程的List_enty,同样修改前一进程的Flink为后一进程的List_enty即可。
修改Blink为Flink也行不过,不知道为什么我这么修改后隐藏俩个进程- = 求解
|