首页 > 解决方案 > 我在使用 GDB 'find' 命令时做错了什么?

问题描述

首先,我正在查看的内存:

(gdb) x/8x 0x108df0
0x108df0:  0x36393735  0x2d007d37  0x65707974  0x6574203a
0x108e00:  0x702f7478  0x6e69616c  0x6863203b  0x65737261

现在,对单词大小的内存块运行 find 可以:

(gdb) find /w 0x108df0, +500, 0x6863203b, 0x65737261
0x108e08
0x108e58
2 patterns found.

但是,就字节而言,运行我认为应该是相同的命令不会:

find /b 0x108df0, +500, 0x68, 0x63, 0x20, 0x3b, 0x65, 0x73, 0x72, 0x61
Pattern not found

find /b1 0x108df0, +500, 0x68, 0x63, 0x20, 0x3b, 0x65, 0x73, 0x72, 0x61
Pattern not found

同样,寻找大词也行不通:

find /g 0x108df0, +500, 0x6863203b65737261
Pattern not found

有人对我在这里做错了什么有任何建议吗?(我通过 python API 来做这件事,以防万一?)

标签: gdb

解决方案


您很可能在一台little-endian机器上执行此练习。

尝试反转字节:

find /b 0x108df0, +500, 0x3b, 0x20, 0x63, 0x68, 0x61, 0x72, 0x73, 0x65

推荐阅读