воскресенье, 25 ноября 2012 г.

Правильно считаем смещение функции в Mach-O binary

Несколько более грамотный подход. Допустим удалось определить, что искомая функция начинается по адресу 0x000A36E0 (речь об i386), - самое время рассматривать Mach-O Header


Запоминаем - Fat binary, контент i386 части начинается со смещения 0x129000
Loading command на __TEXT,__text сегмент, секцию


File offset - 0x1880
Address offset - 0x2880

Итак:

i386 __TEXT,__text file offset start: 0x129000 + 0x1880 = 0x12A880
Function address offset from section start: 0xA36E0 - 0x2880 = 0xA0E60

Function file offset from start: 0x12A880+0xA0E60 = 0x1CB6E0

P.S. Все адреса и смещения вымышлены, любое совпадение с реальными - случайно (на самом деле нет)

Комментариев нет: