是否可以反编译Mac内核扩展?
答案 0 :(得分:2)
理论上可以反编译任何二进制代码。
内核扩展有点棘手,因为 a)它们是C ++,因此虚拟方法使代码更难以遵循。 b)链接在内核扩展中的发生方式不同,因此任何反编译器都需要专门设计来处理内核扩展,以便找到依赖项和符号名称。
答案 1 :(得分:1)
您可以使用gdb(建议使用nate c)来检查内核扩展的汇编代码。我不知道具体的内核扩展的任何反编译器。
您可以使用kextload工具创建可以加载到gdb中的符号文件。这将让你看到功能的解码符号名称,& c。这里有一个崩溃(哈哈得到它?)教程:http://praveenmatanam.wordpress.com/2008/05/22/kext-debugging-on-mac/
你为什么要这样做?
答案 2 :(得分:0)
使用hexrays decompiler反编译32位kext是没有问题的。
反编译c ++代码意味着必须以正确的方式定义结构:当对象具有虚方法时,对象中的第一项将是指向对象vtable的指针。 如果你在IDA或hexrays中声明vtable,并确保所有类型的函数指针都是正确的,那么hexrays将产生非常易读的代码。
但是很有可能你感兴趣的kext的部分是用C-like C ++编写的,你根本不需要担心。
答案 3 :(得分:0)
为了反转64位kexts,获取ida pro和x64 Decompiler(任何mac / lin / win)。
此外,您通常可以使用lldb远程设置调试kext(无符号)。 (gdb不见了。)
如果你碰巧在一家大型安全商店工作,那就做歌曲和舞蹈:签署NDA,给出初生的权利,然后获得OSX来源。
此外,这里有一大堆反编译器:
https://en.wikibooks.org/wiki/X86_Disassembly/Disassemblers_and_Decompilers