读书频道 > 网站 > 网页设计 > iOS应用逆向工程(第2版)
2.2.2 Dynamic Library
15-06-17    下载编辑
收藏    我要投稿   

本文所属图书 > iOS应用逆向工程(第2版)

仔细阅读了本书从字里行间可以感受到作者的认真,在当今这个浮躁的大环境中,这是非常难得的,单从认真这点来看,这本书绝不是一本水货,强烈推荐大家阅读,尤其是初学者。本书的前六章侧重于理论的介绍,但又不立即去当当网订购
大部分iOS开发者的日常工作应该都是写App,估计很少有人写过dylib,因此对dylib的概念很陌生。殊不知,在Xcode工程里导入的各种framework,链接的各种lib,其实本质都是dylib。可以用“file”命令验证一下,如下:
 
snakeninnysiMac:~ snakeninny$ file /Users/snakeninny/Code/iOSSystemBinaries/8.1.1_iPhone5/System/Library/Frameworks/UIKit.framework/UIKit 
/Users/snakeninny/Code/iOSSystemBinaries/8.1.1_iPhone5/System/Library/Frameworks/UIKit.framework/UIKit: Mach-O dynamically linked shared library arm

 

如果把焦点转移到越狱iOS中,Cydia里的各种tweak无一不是以dylib的形式工作的,正是这些tweak的存在让我们能够随意定制自己的iOS。在逆向工程中,我们会频繁接触各种dylib,因此有必要了解一些相关知识。
 
在iOS中,lib分为static和dynamic两种,其中static lib在编译阶段成为App可执行文件的一部分,会增加可执行文件的大小。因为App尺寸变大,启动时需要加载的内容变多,所以可能会导致App启动变慢。dylib则相对“智能”一些,它不会改变可执行文件的大小,只有当App需要用到这个dylib时,iOS才会把它加载进内存,成为App进程的一部分。
 
值得一提的是,dylib虽然充斥在iOS的各个角落,是逆向工程的重要目标类型,但其本身并不是可执行文件,不能独立运行,只能为别的进程服务,而且它们寄生在别的进程里,成为了这个进程的一部分。因此,dylib的权限是由它寄生的那个App决定的,同一个dylib寄生在系统App和StoreApp里时的权限是不同的。例如,你写了一个Instagram的tweak,用来把喜欢的图片保存在本地,如果保存目录是/var/mobile/Containers/Data/下App对应的Documents目录,那么因为Instagram是一个StoreApp,这样的操作是没有问题的,tweak能够正常工作。而如果保存目录是/var/mobile/Documents,那么在兴高采烈地保存了一大堆美图,准备回头细细品味时,你就会发现/var/mobile/Documents里啥图片也没有——操作都被sandbox给禁掉了。
点击复制链接 与好友分享!回本站首页
分享到: 更多
您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:1.3 功能
下一篇:1.5 小结
相关文章
图文推荐
JavaScript网页动画设
1.9 响应式
1.8 登陆页式
1.7 主题式
排行
热门
文章
下载
读书

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训
版权所有: 红黑联盟--致力于做最好的IT技术学习网站