首页 > 解决方案 > 如何使用 gdb 获取 xmm0 注册原始数据?

问题描述

我使用 gdb 将随机 bitnflips 注入代码中。我选择指令的操作数,读取值,更改一位并将其写回。这很好用,除了 xmm 寄存器。

如果我写:

-data-evaluate-expression $xmm0
^done,value="{v4_float = {0, 0, 0, 0}, v2_double = {0, 0}, v16_int8 = {0 <repeats 16 times>}, v8_int16 = {0, 0, 0, 0, 0, 0, 0, 0}, v4_int32 = {0, 0, 0, 0}, v2_int64 = {0, 0}, uint128 = 0}"

我得到了寄存器的可能解释,但我需要原始数据(在这种情况下,我认为它会是0x00000000

此外,我不知道如何使用原始数据设置 xmm 寄存器,因为这不起作用

-gdb-set $xmm0=0x5d080000
^error,msg="Invalid cast."

有没有办法获取和设置原始数据,还是我必须找到解决方法?

标签: gdb

解决方案


我相信你想要:

-data-evaluate-expression $xmm0.uint128
-gdb-set $xmm0.uint128=0x5d080000

推荐阅读