Что я делаю не так с использованием команды GDB 'find'? - PullRequest
1 голос
/ 21 апреля 2020

Во-первых, бит памяти, на который я смотрю:

(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, на случай, если это уместно?)

1 Ответ

1 голос
/ 21 апреля 2020

Вы, вероятно, выполняете это упражнение на машине little-endian .

Попробуйте поменять местами байты:

find /b 0x108df0, +500, 0x3b, 0x20, 0x63, 0x68, 0x61, 0x72, 0x73, 0x65
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...