免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 8567 | 回复: 4
打印 上一主题 下一主题

[其他] 动态库中怎么导出隐藏的符号表 [复制链接]

论坛徽章:
39
白银圣斗士
日期:2015-11-24 10:40:40酉鸡
日期:2015-03-20 14:15:44寅虎
日期:2015-03-20 14:13:59午马
日期:2015-03-20 14:13:16白羊座
日期:2015-03-20 14:12:54金牛座
日期:2015-03-20 14:12:09双子座
日期:2015-03-20 14:11:57巨蟹座
日期:2015-03-20 14:11:44狮子座
日期:2015-03-20 14:11:29亥猪
日期:2015-03-20 14:16:24戌狗
日期:2015-03-20 14:16:40申猴
日期:2015-03-20 14:17:05
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-07-29 15:56 |只看该作者 |倒序浏览
30可用积分
        有一个静态库(第三方,无源码),想做成动态库使用,但是里面需要用到的类无法导出。编译的动态库,用ida查看Export表,没有需要的类。
        用nm把a里的符号表导出到文件,只保留需要的类符号,Linking里指定导出表,编译器会包警告,“ld: warning: cannot export hidden symbol _OBJC_CLASS_$_*** from ***.o”
        有什么参数能强制导出隐藏属性符号,或不检查符号属性么?

      

论坛徽章:
0
2 [报告]
发表于 2013-07-30 13:01 |只看该作者
编译的时候隐藏了吧
--version-script

论坛徽章:
39
白银圣斗士
日期:2015-11-24 10:40:40酉鸡
日期:2015-03-20 14:15:44寅虎
日期:2015-03-20 14:13:59午马
日期:2015-03-20 14:13:16白羊座
日期:2015-03-20 14:12:54金牛座
日期:2015-03-20 14:12:09双子座
日期:2015-03-20 14:11:57巨蟹座
日期:2015-03-20 14:11:44狮子座
日期:2015-03-20 14:11:29亥猪
日期:2015-03-20 14:16:24戌狗
日期:2015-03-20 14:16:40申猴
日期:2015-03-20 14:17:05
3 [报告]
发表于 2013-07-30 16:08 |只看该作者
回复 2# Aquester


    没有原文件,只有a文件
    用的clang或ld连接所有a文件导出的o文件,clang和ld都没有--version-script选项

论坛徽章:
39
白银圣斗士
日期:2015-11-24 10:40:40酉鸡
日期:2015-03-20 14:15:44寅虎
日期:2015-03-20 14:13:59午马
日期:2015-03-20 14:13:16白羊座
日期:2015-03-20 14:12:54金牛座
日期:2015-03-20 14:12:09双子座
日期:2015-03-20 14:11:57巨蟹座
日期:2015-03-20 14:11:44狮子座
日期:2015-03-20 14:11:29亥猪
日期:2015-03-20 14:16:24戌狗
日期:2015-03-20 14:16:40申猴
日期:2015-03-20 14:17:05
4 [报告]
发表于 2013-07-31 11:22 |只看该作者
这个需求是在ios上的。目前找到了一种可替代方案。
先说下背景吧:
越狱开发,需要对a提供的class做一个扩展(使用类别或继承都行),hook一个app,这个app可能已经链接了这个a文件,也可能没有链接这个a文件.所以我的项目是必须要a提供的类,但是不能链接进去.
第一感觉就是把a做成dylib,这样既可以用a的提供的类,又可以不链接进去.在写代码的时候判断下当前系统是否有需要的class,没有的话再dlopen下dylib就ok了

现在找到的可行方法是:
还是把a做成一个dylib.第一步查找class.不存在就dlopen这个dylib
然后动态添加一个class继承a中的class.再给新的class添加需要的方法.
最后注册这个新的class就可以正常的使用了.

----------
ios中有个特性,只要dlopen一个dylib,就算close了dlopen打开的句柄,一样可以用objc_getClass得到dylib中的class
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP