转载自:https://blog.csdn.net/weixin_33980459/article/details/90068357

首先介绍PEB和TEB概念:

PEB(Process Environment Block,进程环境块)存放进程信息,每个进程都有自己的PEB信息。位于用户地址空间。

TEB(Thread Environment Block,线程环境块)系统在此TEB中保存频繁使用的线程相关的数据。位于用户地址空间,在比 PEB 所在地址低的地方。进程中的每个线程都有自己的一个TEB。

调试的程序的时候,了解PEB和TEB往往对分析很有帮助。 WinDBG中 !peb 和 !teb 命令可以用来显示PEB和TEB:

0:000> !peb
PEB at 7ffd6000
    InheritedAddressSpace:    No
    ReadImageFileExecOptions: No
    BeingDebugged:            Yes
    ImageBaseAddress:         01000000
    Ldr                       001a1ea0
    Ldr.Initialized:          Yes
    Ldr.InInitializationOrderModuleList: 001a1f58 . 001a2850
    Ldr.InLoadOrderModuleList:           001a1ee0 . 001a2840
    Ldr.InMemoryOrderModuleList:         001a1ee8 . 001a2848
            Base TimeStamp                     Module
         1000000 3b7d8475 Aug 17 13:54:13 2001 C:\WINDOWS\system32\winmine.exe
        7c900000 4802a12c Apr 13 17:11:24 2008 C:\WINDOWS\system32\ntdll.dll
        7c800000 4802a12c Apr 13 17:11:24 2008 C:\WINDOWS\system32\kernel32.dll
        77c10000 4802a188 Apr 13 17:12:56 2008 C:\WINDOWS\system32\msvcrt.dll
        77dd0000 4802a0b2 Apr 13 17:09:22 2008 C:\WINDOWS\system32\ADVAPI32.dll
        77e70000 4802a106 Apr 13 17:10:46 2008 C:\WINDOWS\system32\RPCRT4.dll
        77fe0000 4802a11b Apr 13 17:11:07 2008 C:\WINDOWS\system32\Secur32.dll
        77f10000 49006fbe Oct 23 05:36:14 2008 C:\WINDOWS\system32\GDI32.dll
        7e410000 4802a11b Apr 13 17:11:07 2008 C:\WINDOWS\system32\USER32.dll
        7c9c0000 48e1c4d9 Sep 29 23:19:05 2008 C:\WINDOWS\system32\SHELL32.dll
        77f60000 4802a116 Apr 13 17:11:02 2008 C:\WINDOWS\system32\SHLWAPI.dll
        76b40000 4802a13c Apr 13 17:11:40 2008 C:\WINDOWS\system32\WINMM.dll
        773d0000 4802a094 Apr 13 17:08:52 2008 C:\WINDOWS\WinSxS\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.2600.5512_x-ww_35d4ce83\COMCTL32.dll
    SubSystemData:     00000000
    ProcessHeap:       000a0000
    ProcessParameters: 00020000
    WindowTitle:  'C:\WINDOWS\system32\winmine.exe'
    ImageFile:    'C:\WINDOWS\system32\winmine.exe'
    CommandLine:  'winmine'
    DllPath:      'C:\WINDOWS\system32;C:\WINDOWS\system32;C:\WINDOWS\system;C:\WINDOWS;.;C:\Program Files\WinDbg\winext\arcade;C:\Tools\Perl\site\bin;C:\Tools\Perl\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\PROGRA~1\CA\SHARED~1\SCANEN~1;C:\Program Files\CA\eTrust Antivirus;C:\Program Files\Java\jdk1.5.0_14\bin;C:\Program Files\Apache-ant\bin;C:\Program Files\WinDbg;C:\Tools;C:\Program Files\TortoiseSVN\bin'
    Environment:  00010000
        =::=::\
        ALLUSERSPROFILE=C:\Documents and Settings\All Users
        ANT_HOME=C:\Program Files\Apache-ant
        APPDATA=C:\Documents and Settings\WinGeek\Application Data
        AVENGINE=C:\PROGRA~1\CA\SHARED~1\SCANEN~1
        CommonProgramFiles=C:\Program Files\Common Files
        COMPUTERNAME=QI
        ComSpec=C:\WINDOWS\system32\cmd.exe
        FP_NO_HOST_CHECK=NO
        HOMEDRIVE=C:
        HOMEPATH=\Documents and Settings\WinGeek
        INOCULAN=C:\Program Files\CA\eTrust Antivirus
        JAVA_HOME=C:\Program Files\Java\jdk1.5.0_14
        LOGONSERVER=\\QI
        NUMBER_OF_PROCESSORS=2
        OS=Windows_NT
        Path=C:\Program Files\WinDbg\winext\arcade;C:\Tools\Perl\site\bin;C:\Tools\Perl\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\PROGRA~1\CA\SHARED~1\SCANEN~1;C:\Program Files\CA\eTrust Antivirus;C:\Program Files\Java\jdk1.5.0_14\bin;C:\Program Files\Apache-ant\bin;C:\Program Files\WinDbg;C:\Tools;C:\Program Files\TortoiseSVN\bin
        PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH
        PROCESSOR_ARCHITECTURE=x86
        PROCESSOR_IDENTIFIER=x86 Family 6 Model 15 Stepping 2, GenuineIntel
        PROCESSOR_LEVEL=6
        PROCESSOR_REVISION=0f02
        ProgramFiles=C:\Program Files
        SESSIONNAME=Console
        SystemDrive=C:
        SystemRoot=C:\WINDOWS
        TEMP=C:\DOCUME~1\WinGeek\LOCALS~1\Temp
        TMP=C:\DOCUME~1\WinGeek\LOCALS~1\Temp
        USERDOMAIN=QI
        USERNAME=WinGeek
        USERPROFILE=C:\Documents and Settings\WinGeek
        VS80COMNTOOLS=C:\Program Files\Microsoft Visual Studio 8\Common7\Tools\
        VS90COMNTOOLS=C:\Program Files\Microsoft Visual Studio 9.0\Common7\Tools\
        WINDBG_DIR=C:\Program Files\WinDbg
        windir=C:\WINDOWS

从以上!PEB输出结果,我们可以了解到进程的ImageBaseAddress,进程的堆(Heap)起始地址, 装载了那些DLL,命令行参数,系统的环境变量等等 。。。

0:000> !teb
TEB at 7ffdf000
    ExceptionList:        0007fd0c
    StackBase:            00080000
    StackLimit:           0007c000
    SubSystemTib:         00000000
    FiberData:            00001e00
    ArbitraryUserPointer: 00000000
    Self:                 7ffdf000
    EnvironmentPointer:   00000000
    ClientId:             000014a8 . 000014ac
    RpcHandle:            00000000
    Tls Storage:          00000000
    PEB Address:          7ffd6000
    LastErrorValue:       0
    LastStatusValue:      0
    Count Owned Locks:    0
    HardErrorMode:        0

从以上!TEB输出结果,我们可以了解到栈(stack)的起始地址,Tls Storage 的地址, 异常处理的地址,LastError的值等等。。。

本文转自 陈本峰 51CTO博客,原文链接:http://blog.51cto.com/wingeek/273991,如需转载请自行联系原作者

WinDBG 技巧:显示进程/线程环境参数(!peb 和 !teb 命令)相关推荐

  1. linux进程的查看和查找 ps命令解析

    一.PS 概述 1.ps命令用于显示当前进程 (process) 的状态信息数据. 2.ps命令适用于进程的一次性的查看,如果想对进程时间连续性的监控,可以用top命令 top命令使用地址  http ...

  2. Linux中的如何对当前进程进行查看和监控——ps命令和pgrep命令

    Linux中进程的查看.监测 PID进程号 ps命令 pgrep命令 LINUX下PS -EF和PS AUX的区别及格式详解 top命令 推荐一个Linux命令的查询手册:Linux命令大全(手册) ...

  3. 进程线程001 进程线程结构体和KPCR

    文章目录 前言 EPROCESS KPROCESS主要成员 EPROCESS其他成员 ETHREAD KTHREAD主要成员介绍 ETHREAD其他成员介绍 KPCR KPCR介绍 _NT_TIB主要 ...

  4. windows内核情景分析---进程线程1

    本篇主要讲述进程的启动过程.线程的调度与切换.进程挂靠 一.进程的启动过程: BOOL CreateProcess ( LPCTSTR lpApplicationName,               ...

  5. linux的进程/线程/协程系列5:协程的发展复兴与实现现状

    协程的发展复兴与实现现状 前言 本篇摘要: 1. 协同制的发展史 1.1 协同工作制的提出 1.2 自顶向下,无需协同 1.3 协同式思想的应用 2. 协程的复兴 2.1 高并发带来的问题 2.2 制 ...

  6. linux 编程 调度,Linux的进程线程及调度

    搜索热词 本文为宋宝华<Linux的进程.线程以及调度>学习笔记. 1 进程概念 1.1 进程与线程的定义 操作系统中的经典定义: 进程:资源分配单位. 线程:调度单位. 操作系统中用PC ...

  7. Java多线程复习:3(在操作系统中查看和杀死进程线程)

    此博客是记录自己学习过程的记录,仅做参考 Windows下查看和杀死进程线程 查看所有进程 tasklist 查看指定关键字的进程 tasklist | findstr + 关键字 Java程序运行的 ...

  8. Linux查看进程线程个数

    1.根据进程号进行查询: # pstree -p 进程号 # top -Hp 进程号 2.根据进程名字进行查询: # pstree -p `ps -e | grep server | awk '{pr ...

  9. linux命令作为子进程标记,Linux基础命令---显示进程ps

    ps ps指令可以显示系统中当前进程的信息,它的输出结果是高度可定制的.如果您希望重复更新所选内容和显示的信息,请使用top(1)代替. 请注意,"ps-aux"与"ps ...

最新文章

  1. postgresql高可用_Postgresql高可用实现方案
  2. 基于迭代次数的多中心定位分类法
  3. kafka 怎么样连接图形化界面_图形化编程有多简单,点亮LED不到一分钟
  4. nssl1488-上升子序列【贪心,dp】
  5. 玩转oracle 11g(44):数据库发展历史
  6. electron 打包把node代理服务打包进去_专题:让C++给node做技术加持(三)编译electron本地模块踩坑记
  7. 浅谈文字识别:新观察、新思考、新机遇
  8. 如何在PHP里面连接数据库?
  9. Linux shell 脚本入门教程+实例
  10. C/C++位域知识小结
  11. 【动态规划刷题笔记】线性dp:合唱队形(最长递增子序列的变体)
  12. 关于v8 Javascript engine 的使用方法研究 (二)转
  13. Julia :where
  14. Matlab2020b的注释在低版本上乱码
  15. 中国生物能源行业运行现状调研及未来发展前景预测报告2022-2028年版
  16. 键盘上的prtsc,scrlk,pause键作用
  17. 用matlab求roc曲线的面积Auc,sklearn计算ROC曲线下面积AUC
  18. 张孝祥张老师一路走好!
  19. android 仿微信聊天气泡显示图片,怎么实现微信聊天时的气泡图(一)
  20. virtualbox启动时报错 虚拟电脑控制台错误

热门文章

  1. python 保障系统(一)
  2. 「书评」聊聊打CTF的那本书
  3. 基于虚拟筛选,从头设计的方法对蛋白酪氨酸酶1B,4-噻唑啉酮类抑制剂的研究
  4. python外星人入侵游戏图片_[Python]简单的外星人入侵游戏
  5. 51青海湖,鸟岛,塔尔寺旅游攻略
  6. 常用网络图片url地址
  7. 处理动态图的图神经网络
  8. linux tar的排除,Tar命令排除指定目录(常用Linux命令整理)
  9. 机器学习实战(1)—— 机器学习基础
  10. Ubuntu16.04LTS部署CEPH文件存储集群