首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ESP+x值在WinDbg表中的自动打印(char *)

ESP+x值在WinDbg表中的自动打印(char *)
EN

Stack Overflow用户
提问于 2012-01-06 17:47:59
回答 2查看 1.3K关注 0票数 1

我使用WinDbg作为RegOpenKeyExA的软断点

代码语言:javascript
复制
bp RegOpenKeyExA

信息:

代码语言:javascript
复制
int RegOpenKeyExA Lib advapi32.dll (int hKey , char * lpSubKey, int ulOptions, int samDesired, int phkResult)

现在,我想将WinDbg窗口类型广播中第二个参数(lpSubKey) (@esp+8)后面的推送值显示为"char"!:

示例:

http://i.stack.imgur.com/TsMC4.gif

代码语言:javascript
复制
esp = 0018f1b8 

堆叠:

代码语言:javascript
复制
0018f1b8 1d 8c 23 76 02 00 00 80 d8 f1 18 00 00 00 00 00 01 00  ..#v..............
0018f1ca 00 00 d4 f1 18 00 24 f3 18 00 00 00 00 00 53 4f 46 54  ......$.......SOFT
0018f1dc 57 41 52 45 5c 4d 69 63 72 6f 73 6f 66 74 5c 57 69 6e  WARE\Microsoft\Win
0018f1ee 64 6f 77 73 5c 43 75 72 72 65 6e 74 56 65 72 73 69 6f  dows\CurrentVersio
0018f200 6e 5c 53 68 65 6c 6c 43 6f 6d 70 61 74 69 62 69 6c 69  n\ShellCompatibili
0018f212 74 79 5c 4f 62 6a 65 63 74 73 5c 7b 35 36 46 44 46 33  ty\Objects\

esp + 8:

代码语言:javascript
复制
0018f1c0 d8 f1 18 00

现在我尝试将:&(esp + 8) = 0018f1d8类型转换为char。

代码语言:javascript
复制
0018f1ea 5c 57 69 6e 64 6f 77 73 5c 43 75 72 72 65 6e 74 56 65  \Windows\CurrentVe
0018f1fc 72 73 69 6f 6e 5c 53 68 65 6c 6c 43 6f 6d 70 61 74 69  rsion\ShellCompati

结果可能是

*(esp + 8) x 0x0018f1ea“\Windows\CurrentVe.”

EN

回答 2

Stack Overflow用户

发布于 2012-01-06 20:50:03

(char**)(@esp+8)

然后打开这个值。我的示例使用wchar_t**,因为我处理的是Unicode。

票数 4
EN

Stack Overflow用户

发布于 2012-01-06 23:24:37

C++评估器支持指针取消引用,因此您可以:

代码语言:javascript
复制
*((char**)(@esp+8))

并避免不得不扩展值。请注意,您可以使用C++表达式(监视窗口使用的) ??:

代码语言:javascript
复制
0:000> ??(char**)(@esp+8)
char ** 0x001bd1b4
0:000> ??*(char**)(@esp+8)
char * 0x75c0f5f8
 "SOFTWARE\Microsoft\OLEAUT"
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8762122

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档