Декомпилировать расширение ядра Mac? - PullRequest
1 голос
/ 14 февраля 2011

Возможно ли декомпилировать расширение ядра Mac?

Ответы [ 4 ]

2 голосов
/ 15 февраля 2011

Теоретически возможно декомпилировать любой двоичный код.

Расширения ядра немного сложнее, потому что а) они C ++, поэтому виртуальные методы затрудняют выполнение кода. б) связывание происходит по-разному в расширениях ядра, поэтому любой декомпилятор должен быть специально разработан для обработки расширений ядра, чтобы найти зависимости и имена символов.

1 голос
/ 10 мая 2011

вы можете использовать gdb (как предложил nate c) для проверки кода сборки расширения ядра. я не знаю ни о каких декомпиляторах для расширений ядра конкретно.

вы можете использовать инструмент kextload для создания файла символов, который вы можете загрузить в GDB. это позволит вам увидеть имена декодированных символов для функций, & c. здесь есть учебник по сбою (хаха понял?): http://praveenmatanam.wordpress.com/2008/05/22/kext-debugging-on-mac/

почему вы хотите это сделать?

0 голосов
/ 14 ноября 2014

Для реверсирования 64-битных кексов приобретите ida pro и x64 Decompiler (любой из mac / lin / win).

Кроме того, вы обычно можете отлаживать kext (без символов), используя удаленную настройку lldb. (GDB ушел.)

Если вам довелось работать в крупном магазине безопасности, поют и танцуют: подпишите NDA, дайте права первенцу и просто получите источник OSX.

Также, вот большой список декомпиляторов:

https://en.wikibooks.org/wiki/X86_Disassembly/Disassemblers_and_Decompilers

0 голосов
/ 13 февраля 2012

Нет проблем декомпилировать 32-битные kext'ы, используя декомпилятор hexrays .

Декомпиляция кода C ++ означает, что вы должны правильно определить свои структуры: когда у объекта есть виртуальные методы, первым элементом в объекте будет указатель на vtable объекта. если вы также объявите vtable в IDA или hexrays и убедитесь, что все типы указателей на функции верны, hexrays создаст вполне читаемый код.

Но есть вероятность, что интересующие вас части kext были написаны на C-подобном C ++, и вам вообще не нужно об этом беспокоиться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...