Ответ 1
Все, что вы используете для получения разборки, пытается быть полезным, предоставляя цель вызова как смещение от некоторого символа, о котором он знает, - но учитывая, что смещение настолько велико, оно, вероятно, запутано.
Фактическая цель вызова может быть рассчитана следующим образом:
-
E8
- этоcall
с относительным смещением. - В сегменте 32-битного кода смещение задается как 32-битное знаковое значение.
- Это значение находится в порядке порядка байтов.
- Смещение измеряется по адресу следующей инструкции.
например.
<some address> E8 32 F6 FF FF call <somewhere>
<some address>+5 (next instruction)
- Смещение
0xFFFFF632
. - Интерпретируется как подписанное 32-битное значение, это
-0x9CE
. - Инструкция
call
находится в<some address>
и имеет длину 5 байтов; следующая инструкция находится в<some address> + 5
. - Таким образом, целевой адрес вызова
<some address> + 5 - 0x9CE
.