Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 在另一个进程中从加载的动态库读取数据字段_C_Macos_Mono_Dynamic Linking_Mach O - Fatal编程技术网

C 在另一个进程中从加载的动态库读取数据字段

C 在另一个进程中从加载的动态库读取数据字段,c,macos,mono,dynamic-linking,mach-o,C,Macos,Mono,Dynamic Linking,Mach O,我正在编写一个应用程序,试图从另一个进程的内存中读取一些数据。另一个进程正在加载目标数据(程序集)应该驻留的libmono.0.dylib 使用一些基于mach-o的代码,我可以迭代目标进程的加载动态库,并获得上面库的mach头基地址。从这里,我可以得到符号表,该表给出了返回结构和相关数据的函数的地址: 在mono源代码中,它看起来像 MonoDomain* mono_get_root_domain (void) { return mono_root_domain; } 我的假设是否正确,0

我正在编写一个应用程序,试图从另一个进程的内存中读取一些数据。另一个进程正在加载目标数据(程序集)应该驻留的libmono.0.dylib

使用一些基于mach-o的代码,我可以迭代目标进程的加载动态库,并获得上面库的mach头基地址。从这里,我可以得到符号表,该表给出了返回结构和相关数据的函数的地址:

在mono源代码中,它看起来像

MonoDomain* mono_get_root_domain (void) { return mono_root_domain; }
我的假设是否正确,0x18a934的地址包含返回的结构?如果是,这个地址是相对于动态库标题(=header\u addr+addr)的,还是我还需要添加一些幻灯片,或者直接使用它? 当我跟随这个地址时,我遇到的每一个其他地址都是一样的吗

我正在编写一个应用程序,试图从另一个进程的内存中读取一些数据

每个进程都有自己的虚拟内存空间,并受到内核的保护。尽管动态库可以共享,但如果函数返回地址,它将位于调用该函数的进程的虚拟内存映射(VMMap)中

为了将目标进程的内存地址映射到您自己的进程地址空间,您需要目标进程的任务端口。您过去可以调用
task\u以获取进程的pid任务,但由于OS X 10.10(El Capitan)和系统完整性保护(SIP)的引入,这已不再可能


如果数据驻留在加载的动态库中,只需使用将动态库加载到您自己的进程中,并通过调用获取函数的地址。

谢谢您的回答!我已经得到了那个部分,我有加载的头地址和指向符号的指针。正如您在上面看到的,我在反汇编代码的“内部”找到了一个指针,现在如何使用它?如果我读dylib\u base\u address+指针,那么我得到的只是随机的东西。它指向哪个虚拟机区域?