восстановление символов, удаленных из двоичного кода Mach-O
Вопрос
Используя Mac OS X 10.5, я пытаюсь понять, как использовать dtrace для отслеживания выполнения двоичного файла Mach-O.Однако, похоже, что все символы удалены, поэтому любые попытки использовать зонды, основанные на внутренних именах классов/методов, терпят неудачу.
Мне удалось использовать дамп классов, чтобы выгрузить классы, имена методов и адреса, по которым они реализованы, поэтому я предполагаю, что вы можете использовать это для восстановления символов в двоичном формате.Возможно ли это вообще, и если да, знает ли кто-нибудь какие-нибудь инструменты, которые могли бы помочь в этом, или какие-нибудь материалы для чтения, которые помогли бы мне лучше понять это?
Это моя первая попытка работы с двоичными файлами на таком уровне, поэтому буду благодарен за любую помощь.
Решение
Реконструкция символов Objective-C для использования в GDB возможна, см. мой ответ по адресу Импортируйте информацию о дампе класса в GDB..
Другие советы
Нет, это невозможно.Когда символы удаляются, теряется информация о том, где именно начинается код каждого метода.Чтобы восстановить эту информацию, вам придется дизассемблировать код.Если вы просто знаете, каковы методы каждого класса, вы все равно не знаете, где они расположены в коде, а это то, что нужно dtrace.