在GCC 5 (1)之前,我不知道运行任意机器代码的方法,除非您实际将机器代码输入内存然后运行它.
如果你想运行已经在内存中的代码,你可以将指令指针设置为start,最后是断点,然后去.然后,在断点之后,将指令指针更改回其原始值.
但实际上我无法看到这个用例.这并不意味着没有一个,只要通过运行代码可以做任何事情,你也可以通过直接修改寄存器,标志,内存等来实现.
例如,命令:
info registers
Run Code Online (Sandbox Code Playgroud)
将转储寄存器的当前值,同时:
set $eax = 42
Run Code Online (Sandbox Code Playgroud)
将eax寄存器更改为42.
您也可以这样改变内存:
set *((char*)0xb7ffeca0) = 4
Run Code Online (Sandbox Code Playgroud)
这会将单个字节写入内存位置0xb7ffeca0,您也可以使用相同的方法来存储更广泛的数据类型.
(1) GCC 5允许编译和与执行任意代码compile code命令,如记录在这里.