Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >GDB -修改C字符串

GDB -修改C字符串
EN

Stack Overflow用户
提问于 2011-11-18 16:29:48
回答 1查看 441关注 0票数 1

我得到了一些汇编程序代码,它使用sprintf()创建格式化的字符串。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
...
0x00304272: call   0x557b2 <dyld_stub___sprintf_chk>
...

我试图找出字符串是如何被格式化的,所以我找到了格式参数"%s%s",它存储在$ecx寄存器中。现在,我不知道一个字符串在哪里结束,下一个字符串在哪里开始,所以我想将格式参数更改为"%s@%s"

我尝试过使用set $ecx = "%s@%s" (根据print (char *) $ecx的说法,这似乎有效),但出于某种原因,sprintf()使用旧的格式字符串而不是新的字符串。

我错过什么了吗?如何修改格式字符串?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-11-19 14:51:08

我尝试使用set $ecx = "%s@%s“

如果您处于32位模式(我假设您使用的是ecx而不是rcx),到您在call ...sprintf上停止时,sprintf的参数已经被填充到堆栈上。

如果参数来自%ecx,则需要在将该值推送到堆栈之前重新为%ecx分配新值。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8190861

复制
相关文章

相似问题

添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文