Почему ptrace(PTRACE_PEEKDATA, ...) возвращает то, что кажется обратным потоком данных?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Почему ptrace(PTRACE_PEEKDATA, ...) возвращает то, что кажется обратным потоком данных?

Сообщение Anonymous »

Это почти наверняка связано с моим непониманием двоичного макета x86, но я использовал ptrace(PTRACE_PEEKDATA, ...) для проверки работающего двоичного файла и столкнулся с этим:
Вот текстовый раздел для основного:

Код: Выделить всё

0000000000001140 :
1140:       55                      push   %rbp
1141:       48 89 e5                mov    %rsp,%rbp
1144:       48 83 ec 10             sub    $0x10,%rsp
1148:       c7 45 fc 00 00 00 00    movl   $0x0,-0x4(%rbp)
114f:       48 8d 3d ae 0e 00 00    lea    0xeae(%rip),%rdi        # 2004 
1156:       b0 00                   mov    $0x0,%al
1158:       e8 d3 fe ff ff          call   1030
115d:       31 c0                   xor    %eax,%eax
115f:       48 83 c4 10             add    $0x10,%rsp
1163:       5d                      pop    %rbp
1164:       c3                      ret
Я нацеливаюсь на адрес 1158 и ожидал, что вызов ptrace вернет: 0xe8d3feffff31c048.
Однако вместо этого я обнаружил обратную ситуацию: это 0x48c031ffffed3e8.
Почему это наоборот? Я ожидал, что PTRACE_PEEKDATA выгрузит 8 байт из запрошенного адреса вперед?
Как я уже говорил, для меня это определенно недопонимание того, как хранятся двоичные данные.
Я бегу Ubuntu 22.04, x86-64.
Спасибо

Подробнее здесь: https://stackoverflow.com/questions/786 ... ed-data-st
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»