LINUX.ORG.RU

Помогите с дизассемлированием


0

0

вот инструкция в виде hex: ff 15 51 19 00 00 она расположена по адресу: ffffffffa00ee061

это вызов tmp.Объявлено это так ( на си) : int function2(int a); int (*tmp)(int )=function2;

Вот адрес функции и адрес, по которому хранится адрес tmp:ffffffffa00ee070 &tmp:ffffffffa00ef9b8

я никак не могу понять, как формируется смещение. Я попробовал разобраться в этой комманде. mod:0 reg:2 rm:5 смещение:0x00001967

на всякий случай, если поможет - значение регистра rdi :ffffffffa00ee030


Поток сознания, ничё не понял.

mv ★★★★★
()

>как формируется смещение

В 64-битном режиме mod=0 и r/m=101b означают, что смещение должно рассчитываться относительно RIP. Т.е. RIP + знаковое значение 32 битов после ModR/M. Cмещение будет 0x1951, а не 0x1967.

Intel Developer Manual 2A - 2.2.16

http://www.intel.com/products/processor/manuals/

summatus
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.