首页
社区
课程
招聘
未解决 [讨论]iOS运行时获取App加载的所有dylibs/frameworks信息
发表于: 2019-3-14 15:28 2738

未解决 [讨论]iOS运行时获取App加载的所有dylibs/frameworks信息

2019-3-14 15:28
2738
通常我们用如下方式进行获取运行时app依赖库列表:

#import <mach-o/dyld.h>  
void list_dylibs() 
{
   uint32_t count = _dyld_image_count();
    for (uint32_t i = 0; i < count; i ++) {
        const char * name =_dyld_get_image_name(i);
        intptr_t base_addr = _dyld_get_image_vmaddr_slide(i);
        NSLog(@"index[%.4d]--%16p %s", i, (void *)base_addr, name);
    }
}

但是_dyld_image_count, _dyld_get_image_name这些API又很容易被注入后hook掉,还有什么更好的方式去获取运行时依赖库的列表呢?




[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 3279
活跃值: (3331)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
2
判断堆栈调用信息
2019-3-14 16:54
0
雪    币: 351
活跃值: (261)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
小调调 判断堆栈调用信息
能具体点吗?或者说提供点代码片段?
2019-3-14 17:06
0
雪    币: 3279
活跃值: (3331)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
4
    Dl_info info = {0};
    dladdr(__builtin_return_address(0), &info);
    ASLog(@"Stack Log: fname=%s, fbase=%p, sname=%s, saddr=%p, offset=%#08lx, stack=>\n%@\r\n",
          info.dli_fname,
          info.dli_fbase,
          info.dli_sname,
          info.dli_saddr,
          (long)info.dli_saddr - (long)info.dli_fbase,
          [NSThread callStackSymbols]);

2019-11-11 10:05
0
游客
登录 | 注册 方可回帖
返回
//