JIURL玩玩Win2k进程线程篇 PEB

获取其他进程启动参数方法 获取其他进程启动参数方法 c++代码 IFEO办法等 立即下载

JIURL玩玩Win2k进程线程篇 PEB

作者: JIURL

                主页: http://jiurl.yeah.net

    日期: 2003-7-30


    PEB,Process Environment Block ,进程环境块。位于用户地址空间。在地址 0x7FFDF000 处。所以用户进程可以直接访问自己的 PEB 结构。Win2k Build 2195 中进程的 EPROCESS 结构偏移+1b0 处的 *Peb 也指向 PEB 结构。在 undocumented.ntinternals.net (需要注意的是这是个非官方的站点)我们可以找到 PEB 及其相关结构的定义。我们首先列出结构的定义,然后对一些内容进行说明。

typedef struct _PEB {
BOOLEAN InheritedAddressSpace;
BOOLEAN ReadImageFileExecOptions;
BOOLEAN BeingDebugged;
BOOLEAN Spare;
HANDLE Mutant;
PVOID ImageBaseAddress;
PPEB_LDR_DATA LoaderData;
PRTL_USER_PROCESS_PARAMETERS ProcessParameters;
PVOID SubSystemData;
PVOID ProcessHeap;
PVOID FastPebLock;
PPEBLOCKROUTINE FastPebLockRoutine;
PPEBLOCKROUTINE FastPebUnlockRoutine;
ULONG EnvironmentUpdateCount;
PPVOID KernelCallbackTable;
PVOID EventLogSection;
PVOID EventLog;
PPEB_FREE_BLOCK FreeList;
ULONG TlsExpansionCounter;
PVOID TlsBitmap;
ULONG TlsBitmapBits[0x2];
PVOID ReadOnlySharedMemoryBase;
PVOID ReadOnlySharedMemoryHeap;
PPVOID ReadOnlyStaticServerData;
PVOID AnsiCodePageData;
PVOID OemCodePageData;
PVOID UnicodeCaseTableData;
ULONG NumberOfProcessors;
ULONG NtGlobalFlag;
BYTE Spare2[0x4];
LARGE_INTEGER CriticalSectionTimeout;
ULONG HeapSegmentReserve;
ULONG HeapSegmentCommit;
ULONG HeapDeCommitTotalFreeThreshold;
ULONG HeapDeCommitFreeBlockThreshold;
ULONG NumberOfHeaps;
ULONG MaximumNumberOfHeaps;
PPVOID *ProcessHeaps;
PVOID GdiSharedHandleTable;
PVOID ProcessStarterHelper;
PVOID GdiDCAttributeList;
PVOID LoaderLock;
ULONG OSMajorVersion;
ULONG OSMinorVersion;
ULONG OSBuildNumber;
ULONG OSPlatformId;
ULONG ImageSubSystem;
ULONG ImageSubSystemMajorVersion;
ULONG ImageSubSystemMinorVersion;
ULONG GdiHandleBuffer[0x22];
ULONG PostProcessInitRoutine;
ULONG TlsExpansionBitmap;
BYTE TlsExpansionBitmapBits[0x80];
ULONG SessionId;
} PEB, *PPEB;

typedef void (*PPEBLOCKROUTINE)(PVOID PebLock); 

typedef struct _PEB_LDR_DATA {
ULONG Length;
BOOLEAN Initialized;
PVOID SsHandle;
LIST_ENTRY InLoadOrderModuleList;
LIST_ENTRY InMemoryOrderModuleList;
LIST_ENTRY InInitializationOrderModuleList;
} PEB_LDR_DATA, *PPEB_LDR_DATA;

typedef struct _LDR_MODULE {
LIST_ENTRY InLoadOrderModuleList;
LIST_ENTRY InMemoryOrderModuleList;
LIST_ENTRY InInitializationOrderModuleList;
PVOID BaseAddress;
PVOID EntryPoint;
ULONG SizeOfImage;
UNICODE_STRING FullDllName;
UNICODE_STRING BaseDllName;
ULONG Flags;
SHORT LoadCount;
SHORT TlsIndex;
LIST_ENTRY HashTableEntry;
ULONG TimeDateStamp;
} LDR_MODULE, *PLDR_MODULE;

typedef struct _UNICODE_STRING {
USHORT Length;
USHORT MaximumLength;
PWSTR Buffer;
} UNICODE_STRING, *PUNICODE_STRING;

typedef struct _RTL_USER_PROCESS_PARAMETERS {
ULONG MaximumLength;
ULONG Length;
ULONG Flags;
ULONG DebugFlags;
PVOID ConsoleHandle;
ULONG ConsoleFlags;
HANDLE StdInputHandle;
HANDLE StdOutputHandle;
HANDLE StdErrorHandle;
UNICODE_STRING CurrentDirectoryPath;
HANDLE CurrentDirectoryHandle;
UNICODE_STRING DllPath;
UNICODE_STRING ImagePathName;
UNICODE_STRING CommandLine;
PVOID Environment;
ULONG StartingPositionLeft;
ULONG StartingPositionTop;
ULONG Width;
ULONG Height;
ULONG CharWidth;
ULONG CharHeight;
ULONG ConsoleTextAttributes;
ULONG WindowFlags;
ULONG ShowWindowFlags;
UNICODE_STRING WindowTitle;
UNICODE_STRING DesktopName;
UNICODE_STRING ShellInfo;
UNICODE_STRING RuntimeData;
RTL_DRIVE_LETTER_CURDIR DLCurrentDirectory[0x20];
} RTL_USER_PROCESS_PARAMETERS, *PRTL_USER_PROCESS_PARAMETERS;

typedef struct _RTL_DRIVE_LETTER_CURDIR {
USHORT Flags;
USHORT Length;
ULONG TimeStamp;
UNICODE_STRING DosPath;
} RTL_DRIVE_LETTER_CURDIR, *PRTL_DRIVE_LETTER_CURDIR;

typedef struct _PEB_FREE_BLOCK {
_PEB_FREE_BLOCK *Next;
ULONG Size;
} PEB_FREE_BLOCK, *PPEB_FREE_BLOCK;

我写了一个叫 JiurlPebSee 的程序来分析指定进程的 PEB。下面我结合 JiurlPebSee 的输出来对 PEB 及其相关结构的一些内容进行说明。

ProcessId(Decimal): 516
Explorer.exe:

PEB at 0x7ffdf000

LoaderData: 0x00071e90
ProcessParameters: 0x00020000
ProcessHeap: 0x00070000
NumberOfHeaps: 11
MaximumNumberOfHeaps: 16
*ProcessHeaps: 0x77fce380

7ffdf000: 00000000 ffffffff 00400000 00071e90
7ffdf010: 00020000 00000000 00070000 77fcd170
7ffdf020: 77f8aa4c 77f8aa7d 00000001 77e14380
7ffdf030: 00000000 00000000 00000000 00000000
7ffdf040: 77fcd1a8 03cfffff 00000000 7f6f0000
7ffdf050: 7f6f0000 7f6f0688 7ffa0000 7ffa0000
7ffdf060: 7ffd1000 00000001 00000000 00000000
7ffdf070: 079b8000 ffffe86d 00100000 00002000
7ffdf080: 00010000 00001000 0000000b 00000010
7ffdf090: 77fce380 00350000 00000000 00000014
7ffdf0a0: 77fcd348 00000005 00000000 00000893
7ffdf0b0: 00000002 00000002 00000004 00000000
7ffdf0c0: 00000000 00000000 00000002 00000000
7ffdf0d0: 00000004 00000000 b51003ba 391001e4
7ffdf0e0: 00000000 00000000 00000000 00000000
7ffdf0f0: 00000000 00000000 00000000 00000000
7ffdf100: 00000000 00000000 00000000 00000000
7ffdf110: 00000000 00000000 00000000 00000000
7ffdf120: 8204019c 7004019b cf04019e a104019d
7ffdf130: 00000000 00000000 00000000 00000000
7ffdf140: 00000000 00000000 00000000 00000000
7ffdf150: 77fcdcc0 00000000 00000000 00000000
7ffdf160: 00000000 00000000 00000000 00000000
7ffdf170: 00000000 00000000 00000000 00000000
7ffdf180: 00000000 00000000 00000000 00000000
7ffdf190: 00000000 00000000 00000000 00000000
7ffdf1a0: 00000000 00000000 00000000 00000000
7ffdf1b0: 00000000 00000000 00000000 00000000
7ffdf1c0: 00000000 00000000 00000000 00000000
7ffdf1d0: 00000000 00000000 00000000 00020000
7ffdf1e0: 7f6f06c2 00000000 00000000 00000000
7ffdf1f0: 00000000 00000000 00000000 00000000
7ffdf200: 00000000 00000000 00000000 00000000
...

我们以进程 Explorer.exe 进行分析。
LoaderData 是指向 PEB_LDR_DATA 的指针,通过 PEB_LDR_DATA ,我们可以找到进程载入的所有模组。
ProcessParameters 是指向 RTL_USER_PROCESS_PARAMETERS 的指针,RTL_USER_PROCESS_PARAMETERS 中是一些进程的参数。
进程通常有多个用户堆。ProcessHeap 是进程堆(默认的那个)的首地址。NumberOfHeaps 是当前进程的堆的个数。MaximumNumberOfHeaps 是进程的堆的最大个数。*ProcessHeaps 是一个堆指针数组的首地址,每个数组元素长4个字节,是一个堆的指针。


LoaderData at 0x00071e90

Length: 36 Bytes
Initialized: 1
SsHandle: 0x00000000
InLoadOrderModuleList
Flink: 0x00071ec0 Blink: 0x000a0508
InMemoryOrderModuleList
Flink: 0x00071ec8 Blink: 0x000a0510
InInitializationOrderModuleList
Flink: 0x00071f48 Blink: 0x000a0518

Module at 0x00071ec0
FullDllName: D:/WINNT/Explorer.exe
BaseDllName: Explorer.exe
BaseAddress: 0x00400000
SizeOfImage: 0x0003c000

Module at 0x00071f38
FullDllName: D:/WINNT/System32/ntdll.dll
BaseDllName: ntdll.dll
BaseAddress: 0x77f80000
SizeOfImage: 0x00079000

Module at 0x00072470
FullDllName: D:/WINNT/system32/ADVAPI32.DLL
BaseDllName: ADVAPI32.DLL
BaseAddress: 0x77d90000
SizeOfImage: 0x0005a000

...

从PEB可以找到 PEB_LDR_DATA ,PEB_LDR_DATA 中有三个双向循环链表的表头,分别是 InLoadOrderModuleList,InMemoryOrderModuleList,InInitializationOrderModuleList。
每个链表项都是一个 LDR_MODULE 结构。

ProcessParameters at 0x00020000

MaximumLength: 0x00001000
Length: 0x00000838
...


Environment at 0x00010000

00010000: 004c0041 0055004c 00450053 00530052 A.L.L.U.S.E.R.S.
00010010: 00520050 0046004f 004c0049 003d0045 P.R.O.F.I.L.E.=.
00010020: 003a0049 0044005c 0063006f 006d0075 I.:./.D.o.c.u.m.
00010030: 006e0065 00730074 00610020 0064006e e.n.t.s. .a.n.d.
00010040: 00530020 00740065 00690074 0067006e .S.e.t.t.i.n.g.
...
00010340: 00640075 00000065 0069006c 003d0062 u.d.e...l.i.b.=.
00010350: 003a0047 004d005c 00630069 006f0072 G.:./.M.i.c.r.o.
00010360: 006f0073 00740066 00560020 00730069 s.o.f.t. .V.i.s.
00010370: 00610075 0020006c 00740053 00640075 u.a.l. .S.t.u.d.
...
00010a70: 005c0031 00650054 0070006d 00540000 1./.T.e.m.p...T.
...
00010b80: 003a0044 0057005c 004e0049 0054004e D.:./.W.I.N.N.T.
00010b90: 00000000 00000000 00000000 00000000 ................
...
00010ff0: 00000000 00000000 00000000 00000000 ................

RTL_USER_PROCESS_PARAMETERS 中的 PVOID Environment; 指明了环境变量的地址。


从结构定义中就可以看出 是象 StdInputHandle,ImagePathName 这样的参数。


ProcessHeaps at 0x77fce380

ProcessHeaps[0]: 0x00070000
ProcessHeaps[1]: 0x00170000
ProcessHeaps[2]: 0x008c0000
ProcessHeaps[3]: 0x00cd0000
ProcessHeaps[4]: 0x00ed0000
ProcessHeaps[5]: 0x00f10000
ProcessHeaps[6]: 0x01290000
ProcessHeaps[7]: 0x013e0000
ProcessHeaps[8]: 0x01ce0000
ProcessHeaps[9]: 0x01f50000
ProcessHeaps[10]: 0x03bf0000

77fce380: 00070000 00170000 008c0000 00cd0000
77fce390: 00ed0000 00f10000 01290000 013e0000
77fce3a0: 01ce0000 01f50000 03bf0000 00000000
77fce3b0: 00000000 00000000 00000000 00000000

从 ProcessHeaps 数组,我们可以找到进程的每一个堆。

为了方便观察某个进程地址空间中内容,我写了一个叫 JiurlProcessMemSee 的程序,可以获得指定进程地址空间中的内容。

使用 KD(内核调试器) 我们也可以找到 PEB 及其相关结构的定义。

kd> !strct PEB
!strct PEB
struct _PEB (sizeof=488)
+000 byte InheritedAddressSpace
+001 byte ReadImageFileExecOptions
+002 byte BeingDebugged
+003 byte SpareBool
+004 void *Mutant
+008 void *ImageBaseAddress
+00c struct _PEB_LDR_DATA *Ldr
+010 struct _RTL_USER_PROCESS_PARAMETERS *ProcessParameters
+014 void *SubSystemData
+018 void *ProcessHeap
+01c void *FastPebLock
+020 void *FastPebLockRoutine
+024 void *FastPebUnlockRoutine
+028 uint32 EnvironmentUpdateCount
+02c void *KernelCallbackTable
+030 uint32 SystemReserved[2]
+038 struct _PEB_FREE_BLOCK *FreeList
+03c uint32 TlsExpansionCounter
+040 void *TlsBitmap
+044 uint32 TlsBitmapBits[2]
+04c void *ReadOnlySharedMemoryBase
+050 void *ReadOnlySharedMemoryHeap
+054 void **ReadOnlyStaticServerData
+058 void *AnsiCodePageData
+05c void *OemCodePageData
+060 void *UnicodeCaseTableData
+064 uint32 NumberOfProcessors
+068 uint32 NtGlobalFlag
+070 union _LARGE_INTEGER CriticalSectionTimeout
+070 uint32 LowPart
+074 int32 HighPart
+070 struct __unnamed3 u
+070 uint32 LowPart
+074 int32 HighPart
+070 int64 QuadPart
+078 uint32 HeapSegmentReserve
+07c uint32 HeapSegmentCommit
+080 uint32 HeapDeCommitTotalFreeThreshold
+084 uint32 HeapDeCommitFreeBlockThreshold
+088 uint32 NumberOfHeaps
+08c uint32 MaximumNumberOfHeaps
+090 void **ProcessHeaps
+094 void *GdiSharedHandleTable
+098 void *ProcessStarterHelper
+09c uint32 GdiDCAttributeList
+0a0 void *LoaderLock
+0a4 uint32 OSMajorVersion
+0a8 uint32 OSMinorVersion
+0ac uint16 OSBuildNumber
+0ae uint16 OSCSDVersion
+0b0 uint32 OSPlatformId
+0b4 uint32 ImageSubsystem
+0b8 uint32 ImageSubsystemMajorVersion
+0bc uint32 ImageSubsystemMinorVersion
+0c0 uint32 ImageProcessAffinityMask
+0c4 uint32 GdiHandleBuffer[34]
+14c function *PostProcessInitRoutine
+150 void *TlsExpansionBitmap
+154 uint32 TlsExpansionBitmapBits[32]
+1d4 uint32 SessionId
+1d8 void *AppCompatInfo
+1dc struct _UNICODE_STRING CSDVersion
+1dc uint16 Length
+1de uint16 MaximumLength
+1e0 uint16 *Buffer

kd> !strct PEB_LDR_DATA
!strct PEB_LDR_DATA
struct _PEB_LDR_DATA (sizeof=36)
+00 uint32 Length
+04 byte Initialized
+08 void *SsHandle
+0c struct _LIST_ENTRY InLoadOrderModuleList
+0c struct _LIST_ENTRY *Flink
+10 struct _LIST_ENTRY *Blink
+14 struct _LIST_ENTRY InMemoryOrderModuleList
+14 struct _LIST_ENTRY *Flink
+18 struct _LIST_ENTRY *Blink
+1c struct _LIST_ENTRY InInitializationOrderModuleList
+1c struct _LIST_ENTRY *Flink
+20 struct _LIST_ENTRY *Blink

kd> !strct RTL_USER_PROCESS_PARAMETERS
!strct RTL_USER_PROCESS_PARAMETERS
struct _RTL_USER_PROCESS_PARAMETERS (sizeof=656)
+000 uint32 MaximumLength
+004 uint32 Length
+008 uint32 Flags
+00c uint32 DebugFlags
+010 void *ConsoleHandle
+014 uint32 ConsoleFlags
+018 void *StandardInput
+01c void *StandardOutput
+020 void *StandardError
+024 struct _CURDIR CurrentDirectory
+024 struct _UNICODE_STRING DosPath
+024 uint16 Length
+026 uint16 MaximumLength
+028 uint16 *Buffer
+02c void *Handle
+030 struct _UNICODE_STRING DllPath
+030 uint16 Length
+032 uint16 MaximumLength
+034 uint16 *Buffer
+038 struct _UNICODE_STRING ImagePathName
+038 uint16 Length
+03a uint16 MaximumLength
+03c uint16 *Buffer
+040 struct _UNICODE_STRING CommandLine
+040 uint16 Length
+042 uint16 MaximumLength
+044 uint16 *Buffer
+048 void *Environment
+04c uint32 StartingX
+050 uint32 StartingY
+054 uint32 CountX
+058 uint32 CountY
+05c uint32 CountCharsX
+060 uint32 CountCharsY
+064 uint32 FillAttribute
+068 uint32 WindowFlags
+06c uint32 ShowWindowFlags
+070 struct _UNICODE_STRING WindowTitle
+070 uint16 Length
+072 uint16 MaximumLength
+074 uint16 *Buffer
+078 struct _UNICODE_STRING DesktopInfo
+078 uint16 Length
+07a uint16 MaximumLength
+07c uint16 *Buffer
+080 struct _UNICODE_STRING ShellInfo
+080 uint16 Length
+082 uint16 MaximumLength
+084 uint16 *Buffer
+088 struct _UNICODE_STRING RuntimeData
+088 uint16 Length
+08a uint16 MaximumLength
+08c uint16 *Buffer
+090 struct _RTL_DRIVE_LETTER_CURDIR CurrentDirectores[32]
uint16 Flags
uint16 Length
uint32 TimeStamp
struct _STRING DosPath
uint16 Length
uint16 MaximumLength
char *Buffer

kd> !strct RTL_DRIVE_LETTER_CURDIR
!strct RTL_DRIVE_LETTER_CURDIR
struct _RTL_DRIVE_LETTER_CURDIR (sizeof=16)
+00 uint16 Flags
+02 uint16 Length
+04 uint32 TimeStamp
+08 struct _STRING DosPath
+08 uint16 Length
+0a uint16 MaximumLength
+0c char *Buffer

kd> !strct PEB_FREE_BLOCK
!strct PEB_FREE_BLOCK
struct _PEB_FREE_BLOCK (sizeof=8)
+0 struct _PEB_FREE_BLOCK *Next
+4 uint32 Size

欢迎交流,欢迎交朋友,
欢迎访问 http://jiurl.yeah.net http://jiurl.cosoft.org.cn/forum


下载 JiurlPebSee 可执行文件及源程序
下载 JiurlProcessMemSee 可执行文件及源程序



AI 代码赋能短视频带货:服装及多赛道批量内容生产全流程实操 本文聚焦 AI 技术在短视频带货领域的落地应用,以服装赛道为核心,延伸至花卉绿植、图书、茶具等热门领域,系统拆解 AI 工具在选品、素材处理、视频制作(含动态效果、场景搭建)、运营优化等环节的实操方法。针对从业者普遍面临的 “内容生产低效”“无专业技术难出优质视频”“流量运营踩坑” 等痛点,提供从基础工具使用到高阶视频制作的全流程技术方案,助力相关从业者借助 AI 实现批量、高效的短视频内容产出。 阅读详情

相关推荐

2025数学建模美赛C题完整建模思路——奥运会奖牌榜的模型

2025数学建模美赛C题完整建模思路——奥运会奖牌榜的模型

Yilu264的博客 1万+

windows核心编程-如何获取进程命令行信息

如何获取其他进程命令行信息 每一个进程都有一个PEB数据块(PEB:Process Environment Block),这个进程环境块信息(如下结构体), 每个PEB中有_RTL_USER_PROCESS_PARAMETERS   结构体,是一个指针,指向一个结构体,这个结构体里面有一个CommandLine 命令行参数。所以要获得其他进程的命令行参数CommandLine,首先要获得其他

qq_22423659的博客 4885

《第二十二篇》Cross-Attention:注意力机制详解-代码实现和公式详解《二》

本文详细介绍了Cross-Attention的原理、公式和实现。Cross-Attention用于Transformer解码器和Encoder-Decoder结构,通过查询向量(Q)与键、值向量(K、V)的交互实现序列对齐。核心公式为softmax(QK^T/√d_k)V,其中Q来自Decoder,K、V来自Encoder。文章还给出了多头注意力机制公式和PyTorch实现代码,包括投影计算、注意力分数计算和输出处理。代码示例展示了如何构建一个完整的Cross-Attention模块,并演示了其在解码器查询

guoguozgw的博客 2210

通过修改peb中的命令行参数字段实现进程创建的劫持

之前分析过的一些恶意软件中会使用这种方法来进行浏览器的主页劫持,其原理就是在进程创建回调函数中处理进程的创建消息。下面示例展示了如何修改命令行参数:以abcdefg.exe进程为例,其完整文件路径为:"C:\Users\1909\Desktop\abcdefg.exe";进修改后变为:"C:\Users\1909\Desktop\abcdefg.exe" -124,当然也可以变为:"C:\Users\1909\Desktop\abcd.exe" -124。

pureman_mega的博客 603

c764-基于Vue的实时温湿度监控系统

🌟 毕业设计指导交流 🌟 同学们好!作为一名计算机专业的技术爱好者,我在毕业设计领域积累了一些经验,希望能和大家分享交流。从选题到答辩,欢迎一起探讨技术问题。💡 技术方向: 熟悉Java全栈(SSM/Spring Boot)、Python数据分析、微信小程序/安卓开发等技术栈,可以互相学习项目开发经验。📂 学习资源: 整理了一些开源项目案例(含代码和文档),需要参考的同学可以留言讨论,也欢迎分享你的项目经验。🛠 交流内容:✨ 欢迎在评论区留言讨论,一起进步!记得遵守社区规范,保持学术

weixin_39513710的博客 1069

MCP详解:手把手教你理解和如何使用各种开源MCP服务

MCP 作为一种开放协议,为 AI 模型与外部世界的连接提供了标准化的解决方案。它不仅降低了开发门槛,还极大地扩展了 AI 应用的边界。无论是开发者还是普通用户,都可以通过 MCP 更高效地利用 AI 技术,实现更多智能化的功能。

王哥儿聊AI的博客 6055

进程伪装详解

当我们获取到一台主机的权限过后,拿到了自己想要搜集的信息,这时候我们就会留一个后门进行权限维持,权限维持的学问其实很深,今天就主要介绍其中一种比较简单的权限维持的方法 -- 进程伪装。我们知道在windows里面有很多系统进程,如。

星星我啊,已经很努力在学习了, 有人一起学习吗?Ziansec-1 2845

【AI就业干货12】机器学习八股文速通:从损失函数到 XGBoost,一篇带走全部面试点

本文总结了机器学习面试的核心知识点,涵盖监督与非监督学习、线性模型、正则化、决策树、KNN/K-means、SVM、集成学习、梯度下降、评估指标、特征工程、降维、概率模型等内容。重点包括:损失函数选择(MSE/交叉熵)、正则化作用(L1稀疏/L2平滑)、决策树划分准则、集成学习方法(Bagging降方差/Boosting降偏差)、XGBoost优化等。提供了30秒速记口诀和XGBoost代码示例,帮助快速掌握面试要点。全文采用公式+代码+口诀的形式,系统梳理了机器学习从理论到实践的常见考点。

m0_51738372的博客 731

Delphi 获取进程命令行参数方法

适合D2007 x86版本 unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Edit1: TEdit; Edit2: TEdit; Button1: TButton; procedure Button1Clic

wh445306 2089

《网络安全自学教程》- SQL注入之报错注入原理+步骤+实战操作

这篇文章为大家解析报错注入的实现原理,结合实战案例讲解报错注入的使用步骤。

wangyuxiang946的博客 1万+

《测绘综合能力》——大地测量

《测绘综合能力》大地测量 部分重要(常考)知识点(精简版)。

C_xxy's blog 803

fs:[0]到底表示什么?fs段寄存器在WINDOWS系统中的作用

fs:[0]到底表示什么?TEB,PEB,TIB,PCRB结构的表示。 fs段寄存器在WINDOWS系统中的作用

CharlesPrince的专栏 1万+

RagFlow专题三、RagFlow 关键技术(向量数据库、文档分块、Prompt 设计与召回排序优化)

FAISS 是由 Meta(Facebook)开源的高效向量检索库,适用于大规模向量搜索任务。,并了解了如何通过 RagFlow 机制优化信息检索和生成质量。(FAISS、Milvus、ES)用于高效存储和检索语义向量。提高 LLM 生成效果,增强 RagFlow 任务质量。(分块)策略,将文档拆分成更小的片段,提高检索效率。提高检索精准度,避免文本过长导致信息丢失。提升检索结果的相关性,提高生成质量。当多个检索结果被返回时,我们需要一个。在前一篇文章中,我们详细探讨了。在 RagFlow 任务中,

xiaoqi270620903的专栏 3040

JIURL玩玩Win2k进程线程篇 PEB(转)

JIURL玩玩Win2k进程线程篇 PEB 作者: JIURL 主页: http://jiurl.yeah.net PEB,Process Environment Block ,进程环境块。位于用户地址空间。在地址 0x7FFDF000 处。所以用户进程可以直接访问自己的 PEB 结构。Win2k Build 2195 中进程的 EPROCESS 结构偏移+1b0 处的 *Peb

ruder's blog 1209

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

JIURL玩玩Win2k进程线程篇 PEB http://blog.youkuaiyun.com/imquestion/archive/2003/08/18/16421.aspx

JIURL玩玩Win2k进程线程篇 PEB 作者: JIURL

xu的blog 1921

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

JIURL玩玩Win2k进程线程篇 TEB

JIURL玩玩Win2k进程线程篇 TEB作者: JIURL                 主页: http://jiurl.yeah.net     日期: 2003-7-30     TEB,Thread Environment Block,线程环境块。位于用户地址空间。在比

jiurl的专栏 2714

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

关于进程PEB结构的修改实现

关于进程PEB结构前辈们给出了几篇比较详细的文章。例如:《JIURL玩玩Win2k进程线程篇 PEB》《陆麟 的 WIN2000 SP1的PEB结构》其中JIURL写的那篇是我到现在看到最详细的了。但是他们都没有给出具体的编程实现。所以在这里我就实现了一下PEB结构修改算是一个小小补充吧:)。下面是我的实现代码。关于原理我在里就不多说了,原理的东西可以看上面两个大牛的文章。代码如下:CODE:

eaglenet的专栏 4945

JIURL玩玩Win2k 地址空间的布局

JIURL玩玩Win2k 地址空间的布局作者: JIURL                 主页: http://jiurl.yeah.net     日期: 2003-7-30     地址空间的布局,每个进程有4G的地址空间,其中低2G是用户地址空间,高2G是系统地址空间。用户地

jiurl的专栏 4637

Binary:How to use NtCreateuserProcess创建进程

使用 NtCreateUserProcess to 创建进程 on Windows

fishwheel的博客 897

进程命令行参数欺骗

一些事件记录工具会监视目标进程的创建从而记录进程创建后的一些信息,可以在创建进程的时候使用假的命令行参数进行欺骗,从而误导这些分析工具,还存在一些进程管理工具,比如 Process Hacker 会通过目标进程的 PEB 中获取进程命令行参数信息,它会根据命令行参数的长度读取命令行参数信息,只需要修改命令行参数的长度进而欺骗这些进程管理工具。在进行进程命令行参数欺骗时,注意用于欺骗的命令行参数长度(在创建挂起的进程时传递的参数)要大于真实的命令行参数长度(在运行时修改的命令行参数)。

蛇矛实验室 1222
上一篇: JIURL玩玩Win2k进程线程篇 HANDLE_TABLE
下一篇: JIURL玩玩Win2k进程线程篇 TEB
imquestion
博客等级 码龄25年 50粉丝 34原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值