xnu

    0热度

    1回答

    我,新来的KEXT编程,所以我的问题是: I,M运行MacOS的10.11.6我已经把SIP断,但是当我尝试加载我 KEXT使用kextload,并使用-v标志我得到我的KEXT加载成功: *Requesting load of /private/tmp/kern.kext. /private/tmp/kern.kext loaded successfully (or already loade

    7热度

    1回答

    我想弄清楚VMMAP过程是如何运作的。 用dtrace运行这个可执行文件后,似乎提取了虚拟内存中每个节的地址空间的proc_regionfilename方法。 所以,我挖得更深一些,发现其在XNU执行文件 libsyscall /包装/ libproc/libproc.c 在函数体中我看到,主要的呼叫是proc_pidinfo下: retval = proc_pidinfo(pid, PROC_P

    1热度

    1回答

    我在调用其中一个iokit命令时正在使用以下函数。它 extern void OSPrintBacktrace(void); 无论如何定义,我的KEXT看来我的KEXT加载失败,因为它找不到这个符号.. 12/26/16 10:02:53.000 AM kernel[0]: kxld[com.my.driver]: The following symbols are unresolved fo

    1热度

    1回答

    这一直困扰着我很长一段时间。 在我的IOkit驱动程序中,我将中断事件源,定时器事件源注册到workloop。我使用GetWorkLoop() - > runAction(pAction)进行硬件访问。因此,来自中断处理程序和定时器处理程序以及我的pAction的所有硬件访问都被序列化。 但是,我从IOCommandGate发现了另一个runAction。我不知道两个runAction的区别。 我

    4热度

    1回答

    当通过kdp调试远程机器驱动程序(kext)时,我想从lldb读取用户空间地址。我知道,在我的代码可以使用copyin以移动代码到内核空间,容易阅读,因此预期当我试图读取用户内存直接失败: (lldb) memory read 0x000070000d15a024 error: kdp read memory failed (error 4) 有一些替代到copyin在运行时调试会话将我的数

    0热度

    1回答

    我正在颠倒iOS固件。有什么方法可以找到内核二进制代码,通过IOConnectCallMethod调用?

    1热度

    1回答

    我工作的OS X 10.11,并生成转储文件以下列方式: 1. ulimit -c unlimited 2. kill -10 5228 (process pid) ,并得到转储文件与滚动属性:642M Jun 26 15:00 core.5228 在此之前,我使用vmmap命令检查了进程总内存空间,尝试并估计预期的转储大小。 然而,估计(238.7Mb)远小于实际大小(642Mb)。 可以

    0热度

    2回答

    在Linux中,我可以使用echo t > /proc/sysrq-trigger来转储系统中所有线程的内核调用堆栈。 Mac OS X中是否有任何方法用于相同目的?或任何方法来转储一个进程的内核堆栈?

    2热度

    1回答

    我需要longjmp/setjmp在OS X的.kext文件中。不幸的是,我不认为XNU中有这些函数的官方支持。有没有什么根本的原因,为什么这不起作用,或者它现在只是没有实施? 任何想法,我可以得到这个工作? 如果有帮助,我想尝试让Lua在OS X内核中运行,但运行时似乎取决于longjmp/setjmp或C++异常,而这两者在XNU中都不可用。

    1热度

    1回答

    我为我的驱动程序创建了卸载程序,它从/Library/LaunchDaemons中删除了匹配的plist文件,以便在下一个引导周期内不会再由launchd加载它。 但是,它似乎并没有对我的驱动程序仍然正常加载后启动机器上的任何影响。 经过对此事的一些研究,我发现kextcache是这种行为的原因,为了清除/无效它,我需要touch安装目标卷的文件夹。但是,它没有任何影响。 我的问题是如何正确无效k