天下

记录修行的印记

WinDBG的伪寄存器

WinDBG的伪寄存器

$ea
上一条指令中的有效地址(effective address)

$ea2
上一条指令中的第二个有效地址

$exp
表达式评估器所评估的上一条表达式

$ra
当前函数的返回地址(retrun address)。
例如,可以使用g @$ra返回到上一级函数,与gu(go up)具有同样的效果

$ip
指令指针寄存器。x86中即EIP,x64即eip

$eventip
当前调试事件发生时的指令指针

$previp
上一事件的指令指针

$relip
与当前事件关联的指令指针,例如按分支跟踪时的分支源地址

$scopeip
当前上下文(scope)的指令指针

$exentry
当前进程的入口地址

$retreg
首要的函数返回值寄存器。x86架构使用的是EAX,x64是RAX,安腾是ret0

$retreg64
64位格式的首要函数返回值寄存器,x86中是edx:eax寄存器对

$csp
帧指针,x86中即ESP寄存器,x64是RSP,安腾为BSP

$p
上一个内存显示命令(d
*)所打印的第一个值

$proc
当前进程的EPROCESS结构的地址

$thread
当前线程的ETHREAD结构的地址

$peb
当前进程的进程环境块(PEB)的地址

$teb
当前线程的线程环境块(TEB)的地址

$tpid
拥有当前线程的进程的进程ID(PID)

$tid
当前线程的线程ID

$bpx
x号断点的地址

$frame
当前栈帧的序号

$dbgtime
当前时间,使用.formats命令可以将其显示为字符串值

$callret
使用.call命令调用的上一个函数的返回值,或者使用.fnret命令设置的返回值

$ptrsize
调试目标所在系统的指针类型宽度

$pagesize
调试目标所在系统的内存页字节数


可以直接用上表中的名称来使用伪寄存器,但是更快速的方法是在$前加上一个@符号。这样,WinDBG就知道@后面是一个伪寄存器,不需要搜索其他符号。


使用windbg在程序的入口点下断点
1、bp @$exentry 
使用伪寄存器的方法,也是最常用的方法

2、bp poi(@$peb+8)+poi(poi(@$peb+8)+poi(poi(@$peb+8)+3c)+28)

3、bp $iment(poi(@$peb+8))

posted on 2011-11-03 11:11 天下 阅读(1528) 评论(0)  编辑 收藏 引用 所属分类: 汇编语言逆向工程


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


<2011年11月>
303112345
6789101112
13141516171819
20212223242526
27282930123
45678910

导航

统计

常用链接

留言簿(4)

随笔分类(378)

随笔档案(329)

链接

最新随笔

搜索

最新评论