Windbg命令学习13(ln和伪寄存器)

news/2024/7/6 1:05:38
1. ln

ln 命令显示给定地址处的或者最近的符号。

ln表示list near,ln命令将尽可能地给出与特定地址相关的符号,如果没有符号能够精确地与这个地址匹配,那么调试器将通过指针算法对靠近这地址的符号进行运逄,

并返回运算结果符号

0:000> ln 01012475
(01012475)   calc!WinMainCRTStartup   |  (0101263c)   calc!__CxxFrameHandler
Exact matches:
    calc!WinMainCRTStartup = <no type information>
0:000> ln 01012475+1
(01012475)   calc!WinMainCRTStartup+0x1   |  (0101263c)   calc!__CxxFrameHandler


我们发现,第一个显示为Exact matches:表示精确匹配了一个地址,如果不是精确匹配,我们要小心,是否模块进行了优化,在优化后,一个函数,可能被拆分为多个部分

分别位于不同的地址,经过优化的映像可以通过lm查看:会有perf标识

当你在查看某部分数据,却不知道这部分数据所表示的内容时,这个命名能带来极大的帮助

 

2.伪寄存器

对于那些偶尔使用调试器的用户是很难记得所有平台的指令指针寄存器名字(或其他的名字),为了克服这个问题,调试器的开发团队引入了各种伪寄存器,由调试器把这些伪寄存器对应到不同的硬件架构上,形式为$name,与标准的寄存器一样,如果要在表达式中使用伪寄存器,那么必须使用转义字符@

$exentry
当前进程的入口地址

0:002> r $exentry
$exentry=01012475


 一般可以直接在这下断点,

这个就对应PE文件中的ImageBase+AddressOfEntryPoint(_IMAGE_OPTIONAL_HEADER)

 

$ip

指令指针寄存器

在X86架构上,$ip = eip

在x64架构上,$ip = rip

在Itanium架构上, $ip = iip

 x86/x64/ia-64的区别

0:000> r @$ip
$ip=7c92120e
0:000> r eip
eip=7c92120e

注意到下面显示的分别是$ip,eip,虽然它们在X86下是同一个东东.

$ra

当前函数的返回地址

0:000> r $ra
$ra=7c95e612
0:000> kb
ChildEBP RetAddr  Args to Child              
0012fb1c 7c95e612 7ffdd000 7ffde000 00000000 ntdll!DbgBreakPoint
0012fc94 7c94108f 0012fd30 7c920000 0012fce0 ntdll!LdrpInitializeProcess+0xffa
0012fd1c 7c92e437 0012fd30 7c920000 00000000 ntdll!_LdrpInitialize+0x183
00000000 00000000 00000000 00000000 00000000 ntdll!KiUserApcDispatcher+0x7


其实也是对应当前线程,如果要看所有线程的当前函数的返回地址:

0:000> ~* r $ra
$ra=77d191be
$ra=7c92df2c
$ra=7c92df3c
$ra=7c970010

 

$retreg

主要的值寄存器,在函数调用返回后,函数的结果将放在这个寄存器中,根据处理器架构的不同,$retreg的值分别为

在x86架构上,$retreg = eax

在x64架构上,$retreg = rax

在Itanium架构上,$retreg = ret0

0:000> r $retreg
$retreg=00251eb4
0:000> r eax
eax=00251eb4


$csp

当前的栈指针,根据处理器架构的不同,$csp的值分别为

在x86架构上,$csp = esp

在x64架构上,$csp = rsp

在Itanium架构上,$csp = bsp

0:000> r $csp
$csp=0012fb24
0:000> r esp
esp=0012fb24

 

$tpid

当前进程的标识(PID)

0:000> r $tpid
$tpid=000013f4


$tid

当前线程的标识(TID0

0:000> r $tid
$tid=000014a0



 

转载于:https://www.cnblogs.com/hgy413/archive/2012/05/22/3693517.html


http://www.niftyadmin.cn/n/673096.html

相关文章

求字符串中不含重复字符的最长子串的长度

题目&#xff1a;求字符串最长不含重复字符的子串长度&#xff0c;如abcbec&#xff0c;就返回3. 分析&#xff1a; 利用动态规划(DP)原理&#xff0c;设字符串S的长度为n&#xff0c;考虑i...n-1这个后缀中符合条件的子串&#xff1a;首先需要记录两组数据&#xff0c;第一组数…

理财周报特别策划:关注601开头的大股票

http://www.sina.com.cn 2007年09月09日 20:48 理财周报大象起舞&#xff0c;独步武林。以“601”开头的25只股票&#xff0c;理财周报称之为“601大股票”。 “601”股票代码最早于2006年5月底正式使用。探询“601”的存在意义已无必要&#xff0c;关键是“601”能带来什么。理…

(原)linux下编译microhttpd库(一个c/c++的http服务端库)

下载库&#xff1a; http://www.gnu.org/software/libmicrohttpd/这里有简单的该库介绍以及使用方法&#xff08;简略&#xff09;。下载&#xff1a;$ svn checkout https://gnunet.org/svn/libmicrohttpd/使用手册&#xff1a;http://www.gnu.org/software/libmicrohttpd/mic…

9月10日金股

http://www.jrj.com  2007年09月07日 17:44 金融界网站 【字体&#xff1a;大 中 小】 【页面调色版 】 走 势摘 要 厦华电子&#xff08;行情,资讯&#xff09;(600870)&#xff1a;随着电子行业利润持续、高速增长&#xff0c;特别是数字电视的不断推广&#xff0c;公司…

创业板前夜 比八年前更猛烈的财富冲浪

2007-9-10 8:27:00 代码:作者:朱凯栋 卢山林 李晔斌 来源: 出处: 理财周报加入收藏复制链接给好友跳到低部深交所内部人士向理财周报记者透露&#xff0c;目前创业板指数系统已进入研发阶段&#xff0c;创业板上市推广部已经往西北、华北、东北、华南等区域派驻了工作人员&…

年入10万如何理财 筑巢期组建幸福小家理财计划

[作者]纪红霞 [来源]每日商报 [选稿]summer 2007-09-10 09:53:32 理财顾问 招商银行杭州分行财富管理理财师 阮肖林 理财格言 专业、专注、诚信、创新 理财案例&#xff1a; 刘小姐咨询&#xff1a;我和准老公今年均为26岁&#xff0c;参加工作四年&#xff0c;两人…

滞涨蓝筹一鸣惊人

http://www.jrj.com  2007年09月10日 16:52 金融界网站 【字体&#xff1a;大 中 小】 【页面调色版 】 受外部利淡因素的影响&#xff0c;周一沪深股指跳空低开&#xff0c;上证综指最低运行到5169.91点后振荡回升&#xff0c;并伴随着成交量的支持一路震荡上行&#xff…

AndroidWidget实践 --- EverydayTips开发(4)

接下来就是刷新了.刷新操作的话目测有几种方式(目测 --!) 1.在widget创建线程刷新 2.使用timer刷新(其实也是线程吧?) 3.widget连接Service 在Service创建线程刷新 4.widget连接Service 在Service中使用AlarmManager刷新 Thread比较简单,修改widget代码如下 package com.su.ti…