Assembly 如何直接在gdb中运行程序集?

Assembly 如何直接在gdb中运行程序集?,assembly,gdb,Assembly,Gdb,我可以使用call来运行c函数,但如何直接运行汇编甚至shell代码?我认为gdb不包括汇编程序,所以我不希望能够直接进入汇编程序 您可以使用gdb命令来运行shell命令: (gdb) shell uname -m x86_64 要执行shell代码,可以直接编辑函数的内容: (gdb) b foo Breakpoint 1 at 0x400608 (gdb) run Breakpoint 1, 0x0000000000400608 in foo () (gdb) x/16bx foo 0x

我可以使用
call
来运行c函数,但如何直接运行汇编甚至shell代码?

我认为gdb不包括汇编程序,所以我不希望能够直接进入汇编程序

您可以使用
gdb命令来运行shell命令:

(gdb) shell uname -m
x86_64

要执行shell代码,可以直接编辑函数的内容:

(gdb) b foo
Breakpoint 1 at 0x400608
(gdb) run
Breakpoint 1, 0x0000000000400608 in foo ()
(gdb) x/16bx foo
0x400604 <foo>:        0x55    0x48    0x89    0xe5    0x53    0x48    0x81   0xec
(gdb) set ((unsigned char *)foo)[6] = 0x85
(gdb) x/16bx foo
0x400604 <foo>:        0x55    0x48    0x89    0xe5    0x53    0x48    0x85   0xec
(gdb) cont

但是在c中我们可以直接嵌入assebmly,对吗?这里我指的是像
\x23\x24…
之类的东西,由shell编码由“shell编码”,编译器指的是由CPU执行的一种特定类型的编译。让
设置
之间有什么区别?对不起,这是一个打字错误,它应该是读取
设置的
。我会修正这篇文章。是否有一个用于汇编代码的类似于环境的python shell?
(gdb) p $rax
$1 = 3671197290184
(gdb) set $rax = $rbx
(gdb) p $rax
$2 = 0
(gdb)