当我用GDB调试时,我可以打印字符串:
x/s $r0
输出为
IDog123456
我想更改该值,以便在打印x/s $r0时看到
ICat45555
我曾尝试:
set $r0+1 ={int} 0x43617434 #Cat4 set $r0+5 ={int} 0x35353535 #5555
但它不工作,我怎么能做到这一点没有malloc?只有十六进制字符串请?
ubbxdtey1#
一般来说,gdb表达式解析器的操作与当前语言类似,因此,在上面的代码中,当您编写:
set $r0+1 ={int} 0x43617434 #Cat4
左手是整型常量,不能赋值。相反,您应该像在C中那样编写此代码:
set *($r0+1) = (int) 0x43617434
应该可以了。有时候,您可能也需要强制转换LHS的指针,如下所示:
set *((int *) ($r0+1)) = (int) 0x43617434
但我想你的情况会很好。
1条答案
按热度按时间ubbxdtey1#
一般来说,gdb表达式解析器的操作与当前语言类似,因此,在上面的代码中,当您编写:
左手是整型常量,不能赋值。
相反,您应该像在C中那样编写此代码:
应该可以了。
有时候,您可能也需要强制转换LHS的指针,如下所示:
但我想你的情况会很好。