gpt4 book ai didi

assembly - 如何在gdb中调用程序集?

转载 作者:行者123 更新时间:2023-12-04 14:34:24 25 4
gpt4 key购买 nike

在 gdb 中我可以使用 call运行函数,但如果我想运行一些额外的程序集怎么办?

最佳答案

在 GCC 5 (1) 之前,我不知道运行任意机器代码的方法,除非您实际将机器代码输入内存然后运行它。

如果你想运行已经在内存中的代码,你可以将指令指针设置为开始,在末尾设置一个断点,然后继续。然后,在断点之后,将指令指针改回其原始值。

但我实际上看不到这个用例。这并不意味着没有,只是你可以通过运行代码来做任何事情,你也可以通过直接修改寄存器、标志、内存等来实现。

例如,命令:

info registers

将转储寄存器的当前值,同时:
set $eax = 42

将更改 eax注册到 42 .

您还可以通过这种方式更改内存:
set *((char*)0xb7ffeca0) = 4

这会将单个字节写入内存位置 0xb7ffeca0您还可以使用相同的方法来存储更广泛的数据类型。

(1) GCC 5 允许您使用 compile code 编译和执行任意代码命令,如文档所示 here .

关于assembly - 如何在gdb中调用程序集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5480868/

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