gpt4 book ai didi

gdb - 使用 gdb 运行进程并将其分离

转载 作者:行者123 更新时间:2023-12-03 23:28:43 25 4
gpt4 key购买 nike

是否可以使用 gdb 运行进程? ,修改一些内存然后detach从之后的过程?

我无法从 gdb 外部启动进程因为我需要在执行第一条指令之前修改内存。

当您detach从以 gdb 开始的进程, gdb会挂,但是会杀 gdb来自另一个进程使被调试的进程仍在运行。

我目前使用以下脚本来启动该过程:

echo '# custom gdb function that finds the entry_point an assigns it to $entry_point_address
entry_point
b *$entry_point_address
run
set *((char *)0x100004147) = 0xEB
set *((char *)0x100004148) = 0xE2
detach # gdb hangs here
quit # quit never gets executed
' | gdb -quiet "$file"

这发生在我的 gdb 中版本:
GNU gdb 6.3.50-20050815 (Apple version gdb-1824)
GNU gdb 6.3.50-20050815 (Apple version gdb-1822 + reverse.put.as patches v0.4)

最佳答案

我很确定你不能脱离直接在 gdb 下启动的劣质进程。 ,但是,以下内容可能对您有用,这是基于最近的 gdb ,我不知道这在 6.3 版本上有多大作用。

创建一个小的 shell 脚本,如下所示:

#! /bin/sh
echo $$
sleep 10
exec /path/to/your/program arg1 arg2 arg3

现在启动它,从 echo $$ 中找出 pid ,并像这样附加到 shell 脚本 gdb -p PID .连接后,您可以:
(gdb) set follow-fork-mode child
(gdb) catch exec
(gdb) continue
Continuing.
[New process NEW-PID]
process NEW-PID is executing new program: /path/to/your/program
[Switching to process NEW-PID]

Catchpoint 1 (exec'd /path/to/your/program), 0x00007f40d8e9fc80 in _start ()
(gdb)

您现在可以根据需要修改子进程。完成后,只需执行以下操作:
(gdb) detach

/path/to/your/program应该恢复(或在这种情况下开始)运行。

关于gdb - 使用 gdb 运行进程并将其分离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17583241/

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