编程语言
首页 > 编程语言> > dyld方式遍历模块源码讲解

dyld方式遍历模块源码讲解

作者:互联网

mac ios上遍历模块的有几种方式(其实不叫遍历模块,应该叫做遍历进程内所有的macho可执行文件,看完就知道为什么了)。
这里只看dyld方式遍历的,dyld大家都知道这个是水果支持动态链接启动macho文件用的,也就当你要依赖其它库时dyld会给也把这些坑填了,遍历模块代码是:https://blog.51cto.com/haidragon/2164203
dyld方式遍历模块源码讲解
用到的函数有:

int32_t nModNums= _dyld_image_count();  //获取所有image
pModSlide  = _dyld_get_image_vmaddr_slide(i);//获取单个image随机基址
pszModName = _dyld_get_image_name(i);//名称
pModHeader = _dyld_get_image_header(i); //头

我们直接看dyld源码,因为这些函数都是上面封装的函数dyld是没有的,但是我们可以看下面的真正实现,如图我们可以看到有一个getImageCount();函数。
dyld方式遍历模块源码讲解
看源码,如图所示。
dyld方式遍历模块源码讲解
直接就是返回sAllImages,说明是一个全局变量。
dyld方式遍历模块源码讲解
果然是一个向量。双击它下面就会有对应的引用。

dyld方式遍历模块源码讲解
我们看第一个addImage函数。
dyld方式遍历模块源码讲解

标签:遍历,get,image,源码,模块,dyld
来源: https://blog.51cto.com/haidragon/2406235