【调试技术】【入门】用户态查看PEB和TEB

windbg获取TEB(线程环境块)信息 windbg下载安装配置符号路径 如果是win10直接下载windbg预览版,预览版只有win10才能用,我的是win7所以下载的是老版本的,老版本去官网中的win10 sdk中下载 链接:https://developer.microsoft.com/zh-cn/windows/downloads/sdk-archive 下载后会有x86和64位两个版本,两个版本都要配置符号路径,否则只能使用... 阅读详情

概述:用户态查看进程 PEB 和 TEB(通过windbg附加或启动调试的exe)

0x01 用户态查看 TEB 和 PEB

在双机调试的时候,可以直接使用 !PEB PID 和 !TEB TID 获取进程和线程的相关信息,在用户态这两个命令就会失效。原因就是用户态不支持大写的 !TEB 和 !PEB 命令。

在用户态调试时获取 teb 和 peb 的命令是小写的。

#获取 peb
!peb

# 获取 teb
!teb

除此之外,这里提供另外一种思路。我们都知道 TEB 结构体中保存了PEB的地址,因此可以通过TEB获取PEB的相关信息。

这里以 notepad.exe 为例演示。

0x02 演示

准备步骤

  1. 运行 notepad.exe, Win+R 输入 notepad 回车即可。
  2. 运行 windbg,并附加到进程 notepad.exe 上。

开始调试

查看当前线程

使用 ~. 查看当前线程(这里其实查看哪个线程都可以,因为当前进程的 PEB 只有一个,所有的 TEB 都指向了同一个 PEB)

0:007> ~.
.  7  Id: b8f4.d5a0 Suspend: 1 Teb: 000000a3`b61d1000 Unfrozen
      Start: ntdll!DbgUiRemoteBreakin (00007ff9`ab83c9c0)
      Priority: 0  Priority class: 32  Affinity: ff

可以看到 Teb 地址为 000000a3‘b61d1000000000a3`b61d1000000000a3‘b61d1000

查看TEB

dt ntdll!_Teb 000000a3`b61d1000

输出如下所示,可以看到 0x060 偏移处为 _PEB:

0:007> dt ntdll!_Teb 000000a3`b61d1000
   +0x000 NtTib            : _NT_TIB
   +0x038 EnvironmentPointer : (null) 
   +0x040 ClientId         : _CLIENT_ID
   +0x050 ActiveRpcHandle  : (null) 
   +0x058 ThreadLocalStoragePointer : (null) 
   +0x060 ProcessEnvironmentBlock : 0x000000a3`b61b8000 _PEB
   +0x068 LastErrorValue   : 0
   +0x06c CountOfOwnedCriticalSections : 0
   +0x070 CsrClientThread  : (null) 
   +0x078 Win32ThreadInfo  : (null) 
   +0x080 User32Reserved   : [26] 0
   +0x0e8 UserReserved     : [5] 0
   +0x100 WOW32Reserved    : (null) 
   +0x108 CurrentLocale    : 0x804
   +0x10c FpSoftwareStatusRegister : 0
   +0x110 ReservedForDebuggerInstrumentation : [16] (null) 
   +0x190 SystemReserved1  : [30] (null) 
   +0x280 PlaceholderCompatibilityMode : 0 ''
   +0x281 PlaceholderHydrationAlwaysExplicit : 0 ''
   +0x282 PlaceholderReserved : [10]  ""
   +0x28c ProxiedProcessId : 0
   +0x290 _ActivationStack : _ACTIVATION_CONTEXT_STACK
   +0x2b8 WorkingOnBehalfTicket : [8]  ""
   +0x2c0 ExceptionCode    : 0n0
   +0x2c4 Padding0         : [4]  ""
   +0x2c8 ActivationContextStackPointer : 0x000000a3`b61d1290 _ACTIVATION_CONTEXT_STACK
   +0x2d0 InstrumentationCallbackSp : 0
   +0x2d8 InstrumentationCallbackPreviousPc : 0
   +0x2e0 InstrumentationCallbackPreviousSp : 0
   +0x2e8 TxFsContext      : 0xfffe
   +0x2ec InstrumentationCallbackDisabled : 0 ''
   +0x2ed UnalignedLoadStoreExceptions : 0 ''
   +0x2ee Padding1         : [2]  ""
   +0x2f0 GdiTebBatch      : _GDI_TEB_BATCH
   +0x7d8 RealClientId     : _CLIENT_ID
   +0x7e8 GdiCachedProcessHandle : (null) 
   +0x7f0 GdiClientPID     : 0
   +0x7f4 GdiClientTID     : 0
   +0x7f8 GdiThreadLocalInfo : (null) 
   +0x800 Win32ClientInfo  : [62] 0
   +0x9f0 glDispatchTable  : [233] (null) 
   +0x1138 glReserved1      : [29] 0
   +0x1220 glReserved2      : (null) 
   +0x1228 glSectionInfo    : (null) 
   +0x1230 glSection        : (null) 
   +0x1238 glTable          : (null) 
   +0x1240 glCurrentRC      : (null) 
   +0x1248 glContext        : (null) 
   +0x1250 LastStatusValue  : 0
   +0x1254 Padding2         : [4]  ""
   +0x1258 StaticUnicodeString : _UNICODE_STRING ""
   +0x1268 StaticUnicodeBuffer : [261]  ""
   +0x1472 Padding3         : [6]  ""
   +0x1478 DeallocationStack : 0x000000a3`b6400000 Void
   +0x1480 TlsSlots         : [64] (null) 
   +0x1680 TlsLinks         : _LIST_ENTRY [ 0x00000000`00000000 - 0x00000000`00000000 ]
   +0x1690 Vdm              : (null) 
   +0x1698 ReservedForNtRpc : (null) 
   +0x16a0 DbgSsReserved    : [2] (null) 
   +0x16b0 HardErrorMode    : 0
   +0x16b4 Padding4         : [4]  ""
   +0x16b8 Instrumentation  : [11] (null) 
   +0x1710 ActivityId       : _GUID {00000000-0000-0000-0000-000000000000}
   +0x1720 SubProcessTag    : (null) 
   +0x1728 PerflibData      : (null) 
   +0x1730 EtwTraceData     : (null) 
   +0x1738 WinSockData      : (null) 
   +0x1740 GdiBatchCount    : 0
   +0x1744 CurrentIdealProcessor : _PROCESSOR_NUMBER
   +0x1744 IdealProcessorValue : 0x3030000
   +0x1744 ReservedPad0     : 0 ''
   +0x1745 ReservedPad1     : 0 ''
   +0x1746 ReservedPad2     : 0x3 ''
   +0x1747 IdealProcessor   : 0x3 ''
   +0x1748 GuaranteedStackBytes : 0
   +0x174c Padding5         : [4]  ""
   +0x1750 ReservedForPerf  : (null) 
   +0x1758 ReservedForOle   : (null) 
   +0x1760 WaitingOnLoaderLock : 0
   +0x1764 Padding6         : [4]  ""
   +0x1768 SavedPriorityState : (null) 
   +0x1770 ReservedForCodeCoverage : 0
   +0x1778 ThreadPoolData   : (null) 
   +0x1780 TlsExpansionSlots : (null) 
   +0x1788 DeallocationBStore : (null) 
   +0x1790 BStoreLimit      : (null) 
   +0x1798 MuiGeneration    : 0
   +0x179c IsImpersonating  : 0
   +0x17a0 NlsCache         : (null) 
   +0x17a8 pShimData        : (null) 
   +0x17b0 HeapData         : 0
   +0x17b4 Padding7         : [4]  ""
   +0x17b8 CurrentTransactionHandle : (null) 
   +0x17c0 ActiveFrame      : (null) 
   +0x17c8 FlsData          : (null) 
   +0x17d0 PreferredLanguages : (null) 
   +0x17d8 UserPrefLanguages : (null) 
   +0x17e0 MergedPrefLanguages : (null) 
   +0x17e8 MuiImpersonation : 0
   +0x17ec CrossTebFlags    : 0
   +0x17ec SpareCrossTebBits : 0y0000000000000000 (0)
   +0x17ee SameTebFlags     : 8
   +0x17ee SafeThunkCall    : 0y0
   +0x17ee InDebugPrint     : 0y0
   +0x17ee HasFiberData     : 0y0
   +0x17ee SkipThreadAttach : 0y1
   +0x17ee WerInShipAssertCode : 0y0
   +0x17ee RanProcessInit   : 0y0
   +0x17ee ClonedThread     : 0y0
   +0x17ee SuppressDebugMsg : 0y0
   +0x17ee DisableUserStackWalk : 0y0
   +0x17ee RtlExceptionAttached : 0y0
   +0x17ee InitialThread    : 0y0
   +0x17ee SessionAware     : 0y0
   +0x17ee LoadOwner        : 0y0
   +0x17ee LoaderWorker     : 0y0
   +0x17ee SkipLoaderInit   : 0y0
   +0x17ee SpareSameTebBits : 0y0
   +0x17f0 TxnScopeEnterCallback : (null) 
   +0x17f8 TxnScopeExitCallback : (null) 
   +0x1800 TxnScopeContext  : (null) 
   +0x1808 LockCount        : 0
   +0x180c WowTebOffset     : 0n0
   +0x1810 ResourceRetValue : (null) 
   +0x1818 ReservedForWdf   : (null) 
   +0x1820 ReservedForCrt   : 0
   +0x1828 EffectiveContainerId : _GUID {00000000-0000-0000-0000-000000000000}

查看PEB

dt ntdll!_PEB 0xa3b61b8000

# 或者使用 dx 命令
dx -r1 ((ntdll!_PEB *)0xa3b61b8000)

输出如下所示,到此就看到了 notepad 的 PEB 了。后文补充了 PEB 结构体中 ProcessParameters 变量的分析和查看。

0:007> dt ntdll!_PEB 0xa3b61b8000
   +0x000 InheritedAddressSpace : 0 ''
   +0x001 ReadImageFileExecOptions : 0 ''
   +0x002 BeingDebugged    : 0x1 ''
   +0x003 BitField         : 0x84 ''
   +0x003 ImageUsesLargePages : 0y0
   +0x003 IsProtectedProcess : 0y0
   +0x003 IsImageDynamicallyRelocated : 0y1
   +0x003 SkipPatchingUser32Forwarders : 0y0
   +0x003 IsPackagedProcess : 0y0
   +0x003 IsAppContainer   : 0y0
   +0x003 IsProtectedProcessLight : 0y0
   +0x003 IsLongPathAwareProcess : 0y1
   +0x004 Padding0         : [4]  ""
   +0x008 Mutant           : 0xffffffff`ffffffff Void
   +0x010 ImageBaseAddress : 0x00007ff7`7ef80000 Void
   +0x018 Ldr              : 0x00007ff9`ab8db4c0 _PEB_LDR_DATA
   +0x020 ProcessParameters : 0x000001a6`50d52540 _RTL_USER_PROCESS_PARAMETERS
   +0x028 SubSystemData    : 0x00007ff9`9f7af1d0 Void
   +0x030 ProcessHeap      : 0x000001a6`50d50000 Void
   +0x038 FastPebLock      : 0x00007ff9`ab8db0e0 _RTL_CRITICAL_SECTION
   +0x040 AtlThunkSListPtr : (null) 
   +0x048 IFEOKey          : (null) 
   +0x050 CrossProcessFlags : 1
   +0x050 ProcessInJob     : 0y1
   +0x050 ProcessInitializing : 0y0
   +0x050 ProcessUsingVEH  : 0y0
   +0x050 ProcessUsingVCH  : 0y0
   +0x050 ProcessUsingFTH  : 0y0
   +0x050 ProcessPreviouslyThrottled : 0y0
   +0x050 ProcessCurrentlyThrottled : 0y0
   +0x050 ProcessImagesHotPatched : 0y0
   +0x050 ReservedBits0    : 0y000000000000000000000000 (0)
   +0x054 Padding1         : [4]  ""
   +0x058 KernelCallbackTable : 0x00007ff9`a9a80070 Void
   +0x058 UserSharedInfoPtr : 0x00007ff9`a9a80070 Void
   +0x060 SystemReserved   : 0
   +0x064 AtlThunkSListPtr32 : 0
   +0x068 ApiSetMap        : 0x000001a6`50c80000 Void
   +0x070 TlsExpansionCounter : 0
   +0x074 Padding2         : [4]  ""
   +0x078 TlsBitmap        : 0x00007ff9`ab8db440 Void
   +0x080 TlsBitmapBits    : [2] 0xffffffff
   +0x088 ReadOnlySharedMemoryBase : 0x00007df4`3dce0000 Void
   +0x090 SharedData       : (null) 
   +0x098 ReadOnlyStaticServerData : 0x00007df4`3dce0750  -> (null) 
   +0x0a0 AnsiCodePageData : 0x00007df5`3fe30000 Void
   +0x0a8 OemCodePageData  : 0x00007df5`3fe30000 Void
   +0x0b0 UnicodeCaseTableData : 0x00007df5`3fe60028 Void
   +0x0b8 NumberOfProcessors : 8
   +0x0bc NtGlobalFlag     : 0
   +0x0c0 CriticalSectionTimeout : _LARGE_INTEGER 0xffffe86d`079b8000
   +0x0c8 HeapSegmentReserve : 0x100000
   +0x0d0 HeapSegmentCommit : 0x2000
   +0x0d8 HeapDeCommitTotalFreeThreshold : 0x10000
   +0x0e0 HeapDeCommitFreeBlockThreshold : 0x1000
   +0x0e8 NumberOfHeaps    : 6
   +0x0ec MaximumNumberOfHeaps : 0x10
   +0x0f0 ProcessHeaps     : 0x00007ff9`ab8d9d40  -> 0x000001a6`50d50000 Void
   +0x0f8 GdiSharedHandleTable : 0x000001a6`51120000 Void
   +0x100 ProcessStarterHelper : (null) 
   +0x108 GdiDCAttributeList : 0x14
   +0x10c Padding3         : [4]  ""
   +0x110 LoaderLock       : 0x00007ff9`ab8d55c8 _RTL_CRITICAL_SECTION
   +0x118 OSMajorVersion   : 0xa
   +0x11c OSMinorVersion   : 0
   +0x120 OSBuildNumber    : 0x4a65
   +0x122 OSCSDVersion     : 0
   +0x124 OSPlatformId     : 2
   +0x128 ImageSubsystem   : 2
   +0x12c ImageSubsystemMajorVersion : 0xa
   +0x130 ImageSubsystemMinorVersion : 0
   +0x134 Padding4         : [4]  ""
   +0x138 ActiveProcessAffinityMask : 0xff
   +0x140 GdiHandleBuffer  : [60] 0
   +0x230 PostProcessInitRoutine : (null) 
   +0x238 TlsExpansionBitmap : 0x00007ff9`ab8db420 Void
   +0x240 TlsExpansionBitmapBits : [32] 1
   +0x2c0 SessionId        : 1
   +0x2c4 Padding5         : [4]  ""
   +0x2c8 AppCompatFlags   : _ULARGE_INTEGER 0x0
   +0x2d0 AppCompatFlagsUser : _ULARGE_INTEGER 0x0
   +0x2d8 pShimData        : 0x000001a6`50cc0000 Void
   +0x2e0 AppCompatInfo    : (null) 
   +0x2e8 CSDVersion       : _UNICODE_STRING ""
   +0x2f8 ActivationContextData : 0x000001a6`50cb0000 _ACTIVATION_CONTEXT_DATA
   +0x300 ProcessAssemblyStorageMap : 0x000001a6`50d5b5c0 _ASSEMBLY_STORAGE_MAP
   +0x308 SystemDefaultActivationContextData : 0x000001a6`50ca0000 _ACTIVATION_CONTEXT_DATA
   +0x310 SystemAssemblyStorageMap : (null) 
   +0x318 MinimumStackCommit : 0
   +0x320 SparePointers    : [4] (null) 
   +0x340 SpareUlongs      : [5] 0
   +0x358 WerRegistrationData : 0x000001a6`52e00000 Void
   +0x360 WerShipAssertPtr : (null) 
   +0x368 pUnused          : (null) 
   +0x370 pImageHeaderHash : (null) 
   +0x378 TracingFlags     : 0
   +0x378 HeapTracingEnabled : 0y0
   +0x378 CritSecTracingEnabled : 0y0
   +0x378 LibLoaderTracingEnabled : 0y0
   +0x378 SpareTracingBits : 0y00000000000000000000000000000 (0)
   +0x37c Padding6         : [4]  ""
   +0x380 CsrServerReadOnlySharedMemoryBase : 0x00007df4`66cb0000
   +0x388 TppWorkerpListLock : 0
   +0x390 TppWorkerpList   : _LIST_ENTRY [ 0x000000a3`b5f0f860 - 0x000000a3`b63ffb70 ]
   +0x3a0 WaitOnAddressHashTable : [128] (null) 
   +0x7a0 TelemetryCoverageHeader : (null) 
   +0x7a8 CloudFileFlags   : 0xe0
   +0x7ac CloudFileDiagFlags : 0
   +0x7b0 PlaceholderCompatibilityMode : 2 ''
   +0x7b1 PlaceholderCompatibilityModeReserved : [7]  ""
   +0x7b8 LeapSecondData   : 0x00007df5`3fe20000 _LEAP_SECOND_DATA
   +0x7c0 LeapSecondFlags  : 0
   +0x7c0 SixtySecondEnabled : 0y0
   +0x7c0 Reserved         : 0y0000000000000000000000000000000 (0)
   +0x7c4 NtGlobalFlag2    : 0

查看 ProcessParameters

为了进一步了解和查看,这里再查看 ProcessParameters 的变量。

查看 PEB 的输出可以看到 ProcessParameters 的结构体名为 _RTL_USER_PROCESS_PARAMETERS,该结构体保存了进程很多基础信息,如环境变量、命令行等等。查看当前 ProcessParameters

dx -r1 ((ntdll!_RTL_USER_PROCESS_PARAMETERS *)0x1a650d52540)

# 或者
dt _RTL_USER_PROCESS_PARAMETERS 0x1a650d52540

输出如下所示:

0:007> dt _RTL_USER_PROCESS_PARAMETERS 0x1a650d52540
ntdll!_RTL_USER_PROCESS_PARAMETERS
   +0x000 MaximumLength    : 0x78a
   +0x004 Length           : 0x78a
   +0x008 Flags            : 0x6001
   +0x00c DebugFlags       : 0
   +0x010 ConsoleHandle    : (null) 
   +0x018 ConsoleFlags     : 0
   +0x020 StandardInput    : (null) 
   +0x028 StandardOutput   : (null) 
   +0x030 StandardError    : (null) 
   +0x038 CurrentDirectory : _CURDIR
   +0x050 DllPath          : _UNICODE_STRING ""
   +0x060 ImagePathName    : _UNICODE_STRING "C:\WINDOWS\system32\notepad.exe"
   +0x070 CommandLine      : _UNICODE_STRING ""C:\WINDOWS\system32\notepad.exe" "
   +0x080 Environment      : 0x000001a6`50d50fe0 Void
   +0x088 StartingX        : 0
   +0x08c StartingY        : 0
   +0x090 CountX           : 0
   +0x094 CountY           : 0
   +0x098 CountCharsX      : 0
   +0x09c CountCharsY      : 0
   +0x0a0 FillAttribute    : 0
   +0x0a4 WindowFlags      : 0x801
   +0x0a8 ShowWindowFlags  : 1
   +0x0b0 WindowTitle      : _UNICODE_STRING "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Accessories\Notepad.lnk"
   +0x0c0 DesktopInfo      : _UNICODE_STRING "Winsta0\Default"
   +0x0d0 ShellInfo        : _UNICODE_STRING ""
   +0x0e0 RuntimeData      : _UNICODE_STRING ""
   +0x0f0 CurrentDirectores : [32] _RTL_DRIVE_LETTER_CURDIR
   +0x3f0 EnvironmentSize  : 0x154e
   +0x3f8 EnvironmentVersion : 3
   +0x400 PackageDependencyData : (null) 
   +0x408 ProcessGroupId   : 0x3ec
   +0x40c LoaderThreads    : 0
   +0x410 RedirectionDllName : _UNICODE_STRING ""
   +0x420 HeapPartitionName : _UNICODE_STRING ""
   +0x430 DefaultThreadpoolCpuSetMasks : (null) 
   +0x438 DefaultThreadpoolCpuSetMaskCount : 0
   +0x43c DefaultThreadpoolThreadMaximum : 0

到这一步,基本上进程的详细信息就都可以看到了。如果是 windbg preview 版本,点几下就能看到一些信息,但是 Environment 环境变量是一个指针,如果需要查看,还是需要输入命令才行。

查看 Environment

在 _RTL_USER_PROCESS_PARAMETERS 结构中有三个成员与 Environment 相关

# 指向环境变量的指针
+0x080 Environment      : 0x000001a6`50d50fe0 Void

# 环境变量的大小
+0x3f0 EnvironmentSize  : 0x154e

# 环境变量的版本
+0x3f8 EnvironmentVersion : 3

通过环境变量指针和大小我们就可以看到环境变量的内容了

db 0x000001a6`50d50fe0 l 0x154e
[逆向工程]什么是TEB 与 PEB(二十九) 阅读详情

相关推荐

深入Windows线程管理:从TEB/PEB结构看进程与线程的‘身份证’系统

本文深入解析Windows线程管理中的TEB(Thread Environment Block)和PEB结构,揭示它们作为线程与进程'身份证'系统的核心作用。从TEB的关键结构成员到实战应用,探讨了线程本地存储、异常处理等机制,为系统级开发者提供调试与性能优化的实用技巧。

weixin_42629815的博客 109

TEB 、PEB 、SEH

从TEB到PEB再到SEH(一)从TEB到PEB再到SEH(二)

墨鱼菜鸡 316

从TEB到PEB:深入理解Windows线程与进程的底层关联(以Windows 10/11为例)

本文深入解析Windows 10/11中线程环境块(TEB)与进程环境块(PEB)的底层关联,揭示线程与进程协作的核心机制。通过现代架构解析、内存隔离机制及实战诊断示例,帮助开发者理解TEB/PEB在系统编程、调试和安全分析中的关键作用,提升Windows系统开发与优化能力。

weixin_28366053的博客 223

四种方法获取Teb和Peb

。

QXinHan的博客 3753

从PEB.BeingDebugged到NtGlobalFlag:Windows反调试技术的底层原理与绕过思路

本文深入解析Windows反调试技术中PEB结构的核心原理,重点探讨BeingDebugged、NtGlobalFlag和ProcessHeap三大关键标志的检测机制与绕过方法。通过内存补丁、API挂钩和内核层修改等实战技巧,帮助安全研究人员有效对抗调试检测,提升逆向工程效率。

weixin_28713947的博客 360

逆向工程师必备:ScyllaHide实战指南——从配置到绕过反调试

本文深入解析了逆向工程反反调试框架ScyllaHide的核心原理与实战应用。作为用户态API钩取与信息伪造框架,ScyllaHide能有效隐藏调试器,对抗IsDebuggerPresent、NtQueryInformationProcess等常见检测。文章提供了从基础配置、高级自定义策略到绕过时间差、硬件断点检测的进阶技巧,并探讨了当工具失效时的组合应对方案,是逆向工程师突破软件保护的必备指南。

weixin_29327525的博客 1402

FS TIB TEB PEB

本篇发表我的TEB 和 PEB的一些见解,我把它图形化了,更形象便于理解。 首先对于TIB TEB PEB的概念我引用一下别人的blog了,以下内容取自看雪: TEB(Thread Environment Block,线程环境块):系统在此TEB中保存频繁使用的线程相关的数据

jiangtongcn的专栏 5232

EtherCAT主站开发(学习笔记一)

摘要:本文介绍了基于STM32H7的EtherCAT主站开发探索。EtherCAT是一种高实时性工业以太网协议,具有低延迟、高带宽利用率等特点。文章详细解析了EtherCAT的协议架构、帧结构和工作原理,重点阐述了PDO数据传输过程及主从站通信机制。同时介绍了CoE、FoE等应用层协议扩展。作者将基于SOEM开源协议栈进行开发,为后续实际应用中的伺服电机控制奠定基础。

weixin_69388007的博客 1472

反调试/反汇编技术、TEB/PEB部分说明

反调试技术 WindowsAPI ISDebuggerPresent 查询PEB进程环境块中的ISDebugged标志 CheckRemoteDebuggerPresent 类似于IsDebuggerPresent函数,但是也可以检查其他进程 NtQueryInfomationProcess 提取一个给定进程的信息,第一个参数是进程句柄,第二个参数告诉我们它需要提取的进程信息类型,参数设置为ProcessDebugPort将会告诉你这个句柄标识的进程是否被调试 手动检查数据结构 (1)检查BeingDebu

网络安全相关文章分享 1738

Camera Sensor接口协议全解析(六)聚焦onsemi HiSPi接口的技术突破与应用实践

摘要: Onsemi HiSPi是一种高速并行接口协议,专为高分辨率图像传感器设计,具备1600 Mbps传输速率、低功耗和高兼容性特点。通过对比DVP、MIPI CSI-2等主流协议,HiSPi在工业/医疗领域表现突出,支持动态功耗控制、多ROI和CRC校验。其创新架构包含多PHY设计,提供分组SP、流SP等多种工作模式,满足灵活传输需求。实际应用中,HiSPi在PCB缺陷检测(5μm精度)和液晶面板检测(0.3% Mura检出率)等场景展现卓越性能,成为高速成像领域的关键技术。

GateWorld的博客 1434

ICC2 实战秘籍:create_workspace 命令全解析

必选项:工作区名称,这可是创建工作区的 “身份证”,必不可少。技术数据选项匹配:优先考虑用 -technology 直接加载技术文件,这是获取最新、最准确技术数据的首选路径;要是已经有合适的技术库了,那 -use_technology_lib 引用现有技术库也能快速上手。精度设置优先规则:技术文件自动配置排在第一位,能自动适配就别手动操心;要是自动配置不理想,那就显式指定 scale_factor;实在没要求,就用默认配置,但得清楚它的精度限制。

weixin_50820814的博客 1123

Windows逆向实战:用OllyDbg与WinDbg剖析PEB结构及反调试标志位

在Windows系统编程与软件安全分析领域,理解进程的内存布局和运行时状态是核心基础。进程环境块(Process Environment Block,PEB)作为操作系统为每个进程维护的关键数据结构,记录了进程的模块列表、堆信息、命令行参数等全局状态。其工作原理在于,Windows内核在进程创建时初始化PEB,并通过线程环境块(TEB)中的指针供用户态访问。掌握PEB的解析具有重要的技术价值,它不仅是深入理解Windows系统机制(如动态链接库加载、进程创建)的窗口,更是软件逆向工程、漏洞挖掘和恶意软件分析

weixin_34200628的博客 377

Windows系统监控实战:Grafana+Prometheus+node_exporter配置全攻略

本文提供了一套完整的Windows系统监控解决方案,详细介绍了如何使用Grafana、Prometheus和node_exporter(Windows版为windows_exporter)构建可视化监控平台。从环境准备、组件安装配置,到数据可视化与常见问题排查,手把手指导您实现从数据采集到仪表盘展示的全过程,帮助您从被动救火转向主动预警,有效保障Windows服务器稳定运行。

assembly8low的博客 246

Windows逆向工程:手动定位PEB与反调试检测实战指南

在Windows系统编程与安全分析领域,进程环境块(PEB)是一个核心数据结构,它存储了进程的关键信息,如加载模块、堆状态和调试标志。理解PEB的定位原理,对于深入分析进程行为、检测恶意软件以及实施反调试对抗至关重要。通过段寄存器(FS/GS)访问线程环境块(TEB),可以间接获取PEB地址,这一机制是Windows内核与用户态交互的基础。掌握手动定位PEB的技术价值在于,它使分析者能够绕过自动化工具的局限性,直接验证底层数据,从而识别并应对反调试手段,例如检测BeingDebugged和NtGlobalF

weixin_29324401的博客 269

【软件介绍】GWAS meta分析软件:METAL

Meta-analysis是对多个GWAS分析结果进行综合评价。METAL是GWAS meta分析最常用的工具之一,本文简单介绍METAL软件基本用法。

hucy_Bioinfo 1万+

麒麟操作系统安装达梦数据库ARM版

Linux安装达梦数据库ARM版

运维@小兵的博客 8767

Windows系统编程:四种获取TEB与PEB的底层方法详解

在Windows系统编程和逆向工程中,理解进程与线程的内部数据结构是深入底层的核心。进程环境块(PEB)和线程环境块(TEB)是操作系统管理进程与线程的关键内部数据结构,它们分别承载了进程全局信息(如加载模块列表、镜像基址)和线程特有信息(如栈地址、异常处理链)。掌握其访问原理,对于开发调试工具、进行安全分析(如检测隐藏模块)以及解决复杂的多线程问题具有重要技术价值。本文聚焦于Windows环境,系统性地解析了通过编译器内置函数、汇编指令直接读取、系统API调用等四种实用方法,来安全、高效地获取这些底层数据

weixin_33922672的博客 369

MFC实现图书管理系统(附完整源码)

MFC实现图书管理系统(附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 799

反调试技术剖析(一):基于 IsDebuggerPresent 与 PEB 标志位检测

在恶意软件分析、逆向工程与商业软件加固的攻防实战中,反调试(Anti-Debugging)是样本抵御动态跟踪与动态沙箱检测的第一道防御工事。攻击者通过检测调试器的存在,使程序静默退出、跳转到虚假逻辑分支,甚至触发反制破坏。Windows 操作系统为了支持调试功能,在进程管理核心数据结构中内置了大量状态位。通过剖析进程环境块(PEB, Process Environment Block)的相关字段,可以清晰理解用户态反调试的最经典实现与绕过方法。

2301_80245214的博客 1886

手把手教你学simulink(16.8)--基于Simulink的小波变换滤波器(Wavelet Transform Filter)项目

基于Simulink的小波变换滤波器(Wavelet Transform Filter)项目的详细实例介绍。这个项目将重点放在小波变换滤波器的设计、实现和仿真上,帮助你理解和应用小波变换滤波器在信号处理中的作用。

MHD0815的博客 534

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

用ollydbg浅识TEB和PEB用来反跟踪

本文目的:借助工具直观接触TEB和PEB。 首先,来了解下什么是TEB和PEB。 TEB(Thread Environment Block,线程环境块):系统在此TEB中保存频繁使用的线程相关的数据。位于用户地址空间。进程中的每个线程都有自己的一个TEB。一个进程的所有TEB都以堆栈的方式,存放在从0x7FFDE000(WinXP,当然,不同的系统可能位于不同的地址)开始的线性内存中,每4KB...

weixin_30267691的博客 328

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

免杀对抗—WinDbg手动遍历Ldr&修改进程PEB

整体不算难,唯一要搞明白的就是,存放结构体或者字段指针的地址,与存放结构体或字段值的地址,这二者是不一样的。最后,以上仅为个人的拙见,如何有不对的地方,欢迎各位师傅指正与补充,有兴趣的师傅可以一起交流学习。

2301_76227305的博客 1017

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

免费网盘直链解析实战:9 大网盘 6 种交付方式,在浏览器里拿走真实直链

LinkSwift(网盘直链下载助手)是一款免费、免注册的浏览器用户脚本:装好后你在任一支持的网盘页面点"下载助手",完成一次网盘直链解析,把真实下载地址交给 IDM 做 IDM 直链下载。按本文走完,你能独立装好脚本并跑通第一次解析,无需任何服务器中转。 ## 先把三条边界说死 先说清楚一件事:这个脚本只换"拿地址的方式",不换"你有多快"。直链相当于给文件发的一张临时门禁卡:卡上带着你的身

gitblog_00697的博客 204

反调试—利用SEH链表

内容摘要:进程在被调试的时候,进程中TEB中的PEB中的BeingDebugged成员的值为1而正常情况下为0,于是通过访问该成员可知道当前是否为调试状态,来决定是否继续执行程序,原理和TLS反调试相似,不过这里把反调试代码放到了SEH中。 在说明该技术前要先来引用相关知识块: TEB(Thread Environment Block,线程环境块)系统在此TEB中保存频繁使用的线程相关的数据。

王二娃的生活的博客 2902

anti-debug0——结构

注:这里的反调试技术主要针对Windows平台 TEB TEB指线程环境块,它是一个结构体,包含进程中运行线程的各种信息,每个线程中都有一个对应的TEB结构体。由于这个结构体实在太复杂,这里只说几个跟调试有关的部分。 +0x30 ProcessEnvironmentBlock 它是指向PEB结构体的指针,PEB是进程控制块,每个进程都有一个对应的PEB +0x00 Nt...

40KO的博客 311

虚拟化反调试技术对比:为什么HyperHide是x64dbg插件中的佼佼者?

在逆向工程与软件调试领域,反调试技术始终是攻防对抗的核心战场。传统反调试工具常因兼容性差、检测手段单一而难以应对现代调试环境,而**HyperHide**作为一款基于虚拟化技术的反反调试插件,正通过创新的硬件辅助方案重新定义调试防护标准。本文将深入对比主流反调试技术,解析HyperHide如何凭借Intel VT-x与EPT技术成为x64dbg/x32dbg插件中的佼佼者。 ## 一、传统反调试

gitblog_00193的博客 1009
上一篇: 【Windows】线程同步之信号量(Semaphores)
下一篇: 【Error】unable to verify the first certificate
欧恩意
博客等级 码龄7年 677粉丝 138原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

欧恩意

如有帮助,感谢打赏!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值