gpt4 book ai didi

string - 在 gdb 中,如何将字符串写入内存?

转载 作者:行者123 更新时间:2023-12-03 18:07:31 30 4
gpt4 key购买 nike

使用 gdb 将整数或十六进制写入内存地址非常简单:

(gdb) set {int}0x08040000 = 42
(gdb) set {int}0x08040000 = 0xffffffff

但是如何以类似的简单方式将字符或整个字符串写入内存?现在我不得不求助于将字符串转换为十六进制然后输入,这很耗时。

最佳答案

假设您有以下程序:

int main(void){
char[] person = "Bob";
char[] p2 = "Alice";

printf("Hello %s\n");
}

使用 GDB,您可以在 main 中设置断点,并通过以下方式更改人名:
(gdb) set main::person = { 'S', 'a', 'm', 0x00 }

或更直接地
(gdb) set main::person = "Sam"

如果要直接设置内存使用:
set {char [4]} 0x08040000 = "Ace"

我假设,因为你用 gdb 戳内存你知道你在做什么,所以你知道为字符串等设置空字节。请记住,如果你试图更改数组的值并且你尝试放入一个比最初分配的字符串长的字符串,你很有可能会破坏内存。 (例如尝试将 main::person 设置为“Dilbert”会导致问题

关于string - 在 gdb 中,如何将字符串写入内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19503057/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com