一、概念

TEB(Thread Environment Block,线程环境块)系统在此TEB中保存频繁使用的线程相关的数据。位于用户地址空间,在比 PEB 所在地址低的地方。进程中的每个线程都有自己的一个TEB。一个进程的所有TEB都以堆栈的方式,存放在从0x7FFDE000开始的线性内存中,每 4KB为一个完整的TEB,不过该内存区域是向下扩展的。在用户模式下,当前线程的TEB位于独立的4KB段,可通过CPU的FS寄存器来访问该段,一般存储在[FS:0]。在用户态下WinDbg中可用命令$thread取得TEB地址。

PEB(Process Environment Block,进程环境块)存放进程信息,每个进程都有自己的PEB信息。位于用户地址空间。在Win 2000下,进程环境块的地址对于每个进程来说是固定的,在0x7FFDF000处,这是用户地址空间,所以程序能够直接访问。准确的PEB地址应从系统 的EPROCESS结构的0x1b0偏移处获得,但由于EPROCESS在系统地址空间,访问这个结构需要有ring0的权限。还可以通过TEB结构的偏 移0x30处获得PEB的位置,FS段寄存器指向当前的TEB结构:

mov eax,fs:[0x30]mov PEB,eax

在用户态下WinDbg中可用命令$proc取得PEB地址。

二、TEB偏移

FS:[000]   指向SEH链指针

FS:[004]  线程堆栈顶部

FS:[008] 线程堆栈底部

FS:[00C]  SubSystemTib

FS:[010]  FiberData

FS:[014] ArbitraryUserPointer

FS:[018]  指向TEB自身

FS:[020] 进程PID

FS:[024] 线程ID

FS:[02C] 指向线程局部存储指针

FS:[030] PEB结构地址(进程结构)

FS:[034] 上个错误号

三、参考

四、结构

//Thread Environment Block (TEB)

typedef struct_TEB

{

NT_TIB Tib;/*00h*/PVOID EnvironmentPointer;/*1Ch*/CLIENT_ID Cid;/*20h*/PVOID ActiveRpcHandle;/*28h*/PVOID ThreadLocalStoragePointer;/*2Ch*/

struct _PEB *ProcessEnvironmentBlock; /*30h*/ULONG LastErrorValue;/*34h*/ULONG CountOfOwnedCriticalSections;/*38h*/PVOID CsrClientThread;/*3Ch*/

struct _W32THREAD* Win32ThreadInfo; /*40h*/ULONG User32Reserved[0x1A]; /*44h*/ULONG UserReserved[5]; /*ACh*/PVOID WOW32Reserved;/*C0h*/LCID CurrentLocale;/*C4h*/ULONG FpSoftwareStatusRegister;/*C8h*/PVOID SystemReserved1[0x36]; /*CCh*/LONG ExceptionCode;/*1A4h*/

struct _ACTIVATION_CONTEXT_STACK *ActivationContextStackPointer; /*1A8h*/UCHAR SpareBytes1[0x28]; /*1ACh*/GDI_TEB_BATCH GdiTebBatch;/*1D4h*/CLIENT_ID RealClientId;/*6B4h*/PVOID GdiCachedProcessHandle;/*6BCh*/ULONG GdiClientPID;/*6C0h*/ULONG GdiClientTID;/*6C4h*/PVOID GdiThreadLocalInfo;/*6C8h*/ULONG Win32ClientInfo[62]; /*6CCh*/PVOID glDispatchTable[0xE9]; /*7C4h*/ULONG glReserved1[0x1D]; /*B68h*/PVOID glReserved2;/*BDCh*/PVOID glSectionInfo;/*BE0h*/PVOID glSection;/*BE4h*/PVOID glTable;/*BE8h*/PVOID glCurrentRC;/*BECh*/PVOID glContext;/*BF0h*/NTSTATUS LastStatusValue;/*BF4h*/UNICODE_STRING StaticUnicodeString;/*BF8h*/WCHAR StaticUnicodeBuffer[0x105]; /*C00h*/PVOID DeallocationStack;/*E0Ch*/PVOID TlsSlots[0x40]; /*E10h*/LIST_ENTRY TlsLinks;/*F10h*/PVOID Vdm;/*F18h*/PVOID ReservedForNtRpc;/*F1Ch*/PVOID DbgSsReserved[0x2]; /*F20h*/ULONG HardErrorDisabled;/*F28h*/PVOID Instrumentation[14]; /*F2Ch*/PVOID SubProcessTag;/*F64h*/PVOID EtwTraceData;/*F68h*/PVOID WinSockData;/*F6Ch*/ULONG GdiBatchCount;/*F70h*/BOOLEAN InDbgPrint;/*F74h*/BOOLEAN FreeStackOnTermination;/*F75h*/BOOLEAN HasFiberData;/*F76h*/UCHAR IdealProcessor;/*F77h*/ULONG GuaranteedStackBytes;/*F78h*/PVOID ReservedForPerf;/*F7Ch*/PVOID ReservedForOle;/*F80h*/ULONG WaitingOnLoaderLock;/*F84h*/ULONG SparePointer1;/*F88h*/ULONG SoftPatchPtr1;/*F8Ch*/ULONG SoftPatchPtr2;/*F90h*/PVOID*TlsExpansionSlots; /*F94h*/ULONG ImpersionationLocale;/*F98h*/ULONG IsImpersonating;/*F9Ch*/PVOID NlsCache;/*FA0h*/PVOID pShimData;/*FA4h*/ULONG HeapVirualAffinity;/*FA8h*/PVOID CurrentTransactionHandle;/*FACh*/PTEB_ACTIVE_FRAME ActiveFrame;/*FB0h*/PVOID FlsData;/*FB4h*/UCHAR SafeThunkCall;/*FB8h*/UCHAR BooleanSpare[3]; /*FB9h*/} TEB,*PTEB;

//Process Environment Block

typedef struct_PEB

{

UCHAR InheritedAddressSpace;//00h

UCHAR ReadImageFileExecOptions; //01h

UCHAR BeingDebugged; //02h

UCHAR Spare; //03h

PVOID Mutant; //04h

PVOID ImageBaseAddress; //08h

PPEB_LDR_DATA Ldr; //0Ch

PRTL_USER_PROCESS_PARAMETERS ProcessParameters; //10h

PVOID SubSystemData; //14h

PVOID ProcessHeap; //18h

PVOID FastPebLock; //1Ch

PPEBLOCKROUTINE FastPebLockRoutine; //20h

PPEBLOCKROUTINE FastPebUnlockRoutine; //24h

ULONG EnvironmentUpdateCount; //28h

PVOID* KernelCallbackTable; //2Ch

PVOID EventLogSection; //30h

PVOID EventLog; //34h

PPEB_FREE_BLOCK FreeList; //38h

ULONG TlsExpansionCounter; //3Ch

PVOID TlsBitmap; //40h

ULONG TlsBitmapBits[0x2]; //44h

PVOID ReadOnlySharedMemoryBase; //4Ch

PVOID ReadOnlySharedMemoryHeap; //50h

PVOID* ReadOnlyStaticServerData; //54h

PVOID AnsiCodePageData; //58h

PVOID OemCodePageData; //5Ch

PVOID UnicodeCaseTableData; //60h

ULONG NumberOfProcessors; //64h

ULONG NtGlobalFlag; //68h

UCHAR Spare2[0x4]; //6Ch

LARGE_INTEGER CriticalSectionTimeout; //70h

ULONG HeapSegmentReserve; //78h

ULONG HeapSegmentCommit; //7Ch

ULONG HeapDeCommitTotalFreeThreshold; //80h

ULONG HeapDeCommitFreeBlockThreshold; //84h

ULONG NumberOfHeaps; //88h

ULONG MaximumNumberOfHeaps; //8Ch

PVOID** ProcessHeaps; //90h

PVOID GdiSharedHandleTable; //94h

PVOID ProcessStarterHelper; //98h

PVOID GdiDCAttributeList; //9Ch

PVOID LoaderLock; //A0h

ULONG OSMajorVersion; //A4h

ULONG OSMinorVersion; //A8h

ULONG OSBuildNumber; //ACh

ULONG OSPlatformId; //B0h

ULONG ImageSubSystem; //B4h

ULONG ImageSubSystemMajorVersion; //B8h

ULONG ImageSubSystemMinorVersion; //C0h

ULONG GdiHandleBuffer[0x22]; //C4h

PVOID ProcessWindowStation; //???

} PEB, *PPEB;

php滑动teb效果,PEB和TEB资料整合相关推荐

  1. WinDBG 技巧:显示进程/线程环境参数(!peb 和 !teb 命令)

    转载自:https://blog.csdn.net/weixin_33980459/article/details/90068357 首先介绍PEB和TEB概念: PEB(Process Enviro ...

  2. JavaScript 图片滑动展示效果javascript

    javascript 图片滑动展示效果 更新版本:slideview 图片滑动(扩展/收缩)展示效果 看到jquery实例:图片展示效果后,我也想拿来试试,但我不太喜欢用框架,所以自己做了个. 其中的 ...

  3. android tab 悬停效果代码,Android 仿腾讯应用宝 之 Toolbar +Scroolview +tab滑动悬停效果...

    Android 仿腾讯应用宝 之 Toolbar +Scroolview +tab滑动悬停效果 来源:互联网 作者:佚名 时间:2015-02-10 15:36 Android 仿腾讯应用宝 之 To ...

  4. TableView/CollectionView 滑动顶部效果优化

    TableView/CollectionView 滑动顶部效果优化 默认弹簧效果 在使用 UITableView 或者 UICollectionView 时,如果开启弹框效果,下拉是整个内容就会偏移, ...

  5. android仿微信的activity平滑水平切换动画,Android实现简单底部导航栏 Android仿微信滑动切换效果...

    Android实现简单底部导航栏 Android仿微信滑动切换效果 发布时间:2020-10-09 19:48:00 来源:脚本之家 阅读:96 作者:丶白泽 Android仿微信滑动切换最终实现效果 ...

  6. Android UI效果实现——Activity滑动退出效果

    更新说明: 1.在QQ网友北京-旭的提醒下,在SlideFrame的initilize方法中添加了focusable.focusableInTouch.clickable的状态设置,否则会导致部分情况 ...

  7. 高仿微信对话列表滑动删除效果

    前言 用过微信的都知道.微信对话列表滑动删除效果是非常不错的,这个效果我们也能够有. 思路事实上非常easy,弄个ListView.然后里面的每一个item做成一个能够滑动的自己定义控件就可以.由于L ...

  8. 8行代码教你搞定导航控制器全屏滑动返回效果 ————转载

    作者:@吖了个峥 前言 此次文章,讲述的是导航控制器全屏滑动返回效果,而且代码量非常少,10行内搞定. 效果如图: 如果喜欢我的文章,可以关注我,也可以来小码哥,了解下我们的iOS培训课程.陆续还会有 ...

  9. 原生JS实现移动端模块的左右滑动切换效果,基于vue、stylus

    原生JS实现移动端模块的左右滑动动画效果,基于vue.stylus 大概实现方案: 手指touch屏幕的整个过程,会派发touchstart.touchmove.touchend三个事件,对这三个事件 ...

最新文章

  1. 两种方法设置html表格的宽高
  2. iOS开发- 相机(摄像头)获取到的图片自动旋转90度解决办法
  3. NET问答: 如何取消或中止 Task 执行 ?
  4. 转载:常用CSS缩写语法总结
  5. python-常用模块-time、datetime模块
  6. Flex Builder中创建的项目4种
  7. dns预获取(dns-prefetch)link rel="dns-prefetch"优化载入速度
  8. 【历史上的今天】5 月 30 日:Risc 架构之父出生;ATT 宣布推出视频电话系统;Windows NT 3.51 发布
  9. 小米路由修改服务器密码,小米路由器怎么重新设置密码?
  10. js escape()_unescape().html
  11. [心情] 如果有一天
  12. 微信小程序上传体验版并邀请其他人测试体验(小程序的发布上线)
  13. P15-Windows与网络基础-NTFS权限规则
  14. 《世界上最远的距离》 泰戈尔
  15. 【隐私计算笔谈】MPC系列专题(一):安全多方计算应用场景一览
  16. win10字体突然变成了繁体快速解决
  17. 【蓝桥杯单片机笔记】蓝桥杯备赛资料
  18. 如何修改新增物料,客户,供应商时的默认税率
  19. WPF中如何将List<string>数据绑定到DataGrid控件中
  20. 电脑CPU占用率高是什么原因造成的? 与解决方法

热门文章

  1. 教你怎么添加自己QQ为QQ好友 最新方法
  2. vcs 覆盖率收集2——覆盖率选项 + 合并覆盖率
  3. 游戏开发 - 开发流程 - 收集
  4. openssl生成随机密码。
  5. 分布式系统限流策略/秒杀系统限流设计
  6. 中软国际(深圳)招聘FPGA开发工程师
  7. 07 图形学——曲线曲面
  8. 腾讯 WXG 后台开发工程师对 MySQL 索引知识点总结
  9. b500k带开关电位器内部构造_b500k开关摇杆电位器,直滑电位器103
  10. validation检查框架