dyld方式遍历模块源码讲解
作者:互联网
mac ios上遍历模块的有几种方式(其实不叫遍历模块,应该叫做遍历进程内所有的macho可执行文件,看完就知道为什么了)。
这里只看dyld方式遍历的,dyld大家都知道这个是水果支持动态链接启动macho文件用的,也就当你要依赖其它库时dyld会给也把这些坑填了,遍历模块代码是:https://blog.51cto.com/haidragon/2164203
用到的函数有:
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();函数。
看源码,如图所示。
直接就是返回sAllImages,说明是一个全局变量。
果然是一个向量。双击它下面就会有对应的引用。
我们看第一个addImage函数。
标签:遍历,get,image,源码,模块,dyld 来源: https://blog.51cto.com/haidragon/2406235