飘灵儿 发表于 2015-1-18 11:35:51

IOS制作之iOS7的静态库注进仓酷云

管理你的ViewController的层次可以自己写View切换的动画关掉他默认的动画文档:还有个蛋疼的UIWindow都快忘了他了因为iOS是从MacosX过来的很多工具直接拿来用这个UIWindow就是在iOS里每个App独占屏幕所以同时存在的只有一个UIWindowiOS体系不休晋级,布局不休调剂,以是我们能够使用的静态库注进办法也依据体系版本的分歧而分歧。
在此之前,我们能够使用情况变量DYLD_INSERT_LIBRARY来增加静态库,iOS7被乐成逃狱后,我们必要本人往探究理论iOS7静态库注进的体例。
本文将在iOS7.0.4情况下,以hook付出宝app程序中ALPLauncherController的视图加载办法为例,先容在iOS7下,怎样完成静态库注进打击。
相干工具地位信息

先总结排列一下相干编译、链接工具的地位路径信息,在列位自行下载的iOSSDK中
clang:/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang
gcc:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/arm-apple-darwin10-llvm-gcc-4.2
ld:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/ld
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld
sdk:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.0.sdk/
静态库源程序

我们编写一个hook付出宝app程序中ALPLauncherController的viewDidLoad办法,详细办法是使用MethodSwizzling。
不熟习MethodSwizzling的话,能够参看我之前的这篇文章:Objective-C的hook计划(一):MethodSwizzling

[*]#import<UIKit/UIKit.h>
[*]#import<objc/runtime.h>
[*]
[*]@implementationUIViewController(HookPortal)
[*]
[*]-(void)myViewDidLoad
[*]{
[*]NSLog(@"-----------------------myViewDidLoad----------------------");
[*]}
[*]
[*]@end
[*]
[*]staticvoid__attribute__((constructor))initialize(void)
[*]{
[*]NSLog(@"=======================initialize========================");
[*]
[*]Classclass=objc_getClass("ALPLauncherController");
[*]Methodori_Method=class_getInstanceMethod(class,@selector(viewDidLoad));
[*]Methodmy_Method=class_getInstanceMethod(class,@selector(myViewDidLoad));
[*]method_exchangeImplementations(ori_Method,my_Method);
[*]}
编译dylib

我们能够使用xcode间接协助编译.o,大概本人手动利用clang编译,然先手动ld:

[*]ld-dylib-lsystem-lobjc-syslibroot/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.0.sdk/-olibwq.dylibxxx.o
安装、考证dylib

将编译好的libwq.dylib拷贝到iPhone文件体系中/Library/MobileSubstrate/DynamicLibraries/下
假如不宁神库是不是能一般事情,能够加一步考证操纵,写一个demo实验翻开本人的库:

[*]voidvoid*handle=(void*)dlopen("/Library/MobileSubstrate/DynamicLibraries/libwq.dylib",0x2);
[*]handle=dlsym(handle,"myViewDidLoad");
[*]if(handle){
[*]NSLog(@"++++");
[*]}else{
[*]NSLog(@"----");
[*]}
运转查验效果

到了考证效果的时分,重启设备后者实行:

[*]killallSpringBoard
启动付出宝app,然后察看log信息:

[*]Portal<Notice>:MS:Notice:Injecting:com.alipay.iphoneclient(847.21)
[*]Portal<Notice>:MS:Notice:Loading:/Library/MobileSubstrate/DynamicLibraries/libwq.dylib
[*]Portal<Warning>:=======================initialize========================
[*]Portal<Warning>:-----------------------myViewDidLoad----------------------
[*]证实我们的静态库已被加载,我们的Hook同样成功了。
剩下的就要本人往思索了,除加句无聊的Log,我们还能够做点甚么呢?


很少去思考,没有去多问几个为什么。这是学习的大忌,我认识到了自己学习方法上的错误。孔子说,学而不思则罔,思而不学则殆。一点也没错,学和思是要结合的,这样才能进步。现在回想一下,我学到了什么?自己也无言以对了。

再见西城 发表于 2015-1-19 19:24:15

近期由于IOS7的发布,所以应用的适配潮可谓是都搞的锣鼓喧天,甚是热闹,因此呢,因适配IOS7而产生的问题也是铺天盖地的卷来,

精灵巫婆 发表于 2015-2-1 20:47:27

最后在做项目的时候一定要认真对待,毕竟这个直接和你的就业挂钩,这也是锻炼你实际操作的能力。

山那边是海 发表于 2015-2-1 22:49:41

培训的时候很痛苦,每天要待12个小时,上午讲课,下午和晚自习解决作业,看文档,学习的时候感觉就是资料太少,而且看着资料也不明所以,非常痛苦,

海妖 发表于 2015-2-6 16:08:57

特别是在校的学生,都存在一个小小的尴尬——虽然学习iOS开发的热情高涨,但由于没有多余的银子购买昂贵的Mac电脑而踟蹰不前。其实,针对初学者,如果想进入iOS开发的天地

第二个灵魂 发表于 2015-2-8 19:38:29

因为我们老师也是自学的,给我们讲课说的最多的就是百度,谷歌,查文档。

愤怒的大鸟 发表于 2015-2-25 23:02:55

有办法利用自己手头的电脑立刻开始这个美妙旅程的。

仓酷云 发表于 2015-3-8 10:03:10

在百度搜索你想要了解的类名(苹果的cocoa和cocoatouch框架的类名很有特点很容易搜到,前缀都是NS or UI),看别人写的博客详解

爱飞 发表于 2015-3-10 19:11:00

中国如今已然发展成为一个软件大国,软件人才的数量跃居全球之首。当然,在苹果平台的开发领域,也保持了相当强劲的发展势头。然而,很多初入iOS开发门槛的开发者,

变相怪杰 发表于 2015-3-17 09:10:34

iPhone文件系统NSFileManager讲解是本文要介绍的内容,主要是通过iphone文件系统来学习NSFileManager的使用方法,具体内容来看本文详解。

乐观 发表于 2015-3-20 07:34:51

开始的时候甚至想放弃,不过想想自己的未来,只能咬牙坚持,课下就不停的缠着老师。放学就补基础,这些基础的东西没有速成的,只有刻苦努力。我是后来发现的,转变自己的心态,不要读书看资料当成一种痛苦

活着的死人 发表于 2015-3-30 08:36:35

边吃零食边看Stanford的视频教程

兰色精灵 发表于 2015-4-1 00:08:23

中国如今已然发展成为一个软件大国,软件人才的数量跃居全球之首。当然,在苹果平台的开发领域,也保持了相当强劲的发展势头。然而,很多初入iOS开发门槛的开发者,

莫相离 发表于 2015-4-15 04:57:25

自从苹果公司开放iOS SDK以来,大量的国内外的软件开发者将关注的目光聚集在苹果的iOS平台上。由于iPhone和iPad自一出现就给人带来了颠覆性的感觉

深爱那片海 发表于 2015-4-22 09:54:40

好处就是运行速度会变快,ios6针对系统的优化进一步加强了,很多网友测试ios6,第一感觉就是速度快,而且ios69会有一些新功能,新浪微博,facetime支持3G网等等。。弊端就是,现在的ios6只能算是正式版本的第一个版本,bug很多,不少人刷完ios6都出现了很多毛病,开不开机,缺少图标等等。。最好现在不要升级,等官网放出下一个版本的时候,再选择升级。。。

柔情似水 发表于 2015-4-26 04:07:58

看完这个你就可以有多种选择来踏入做应用的阶段

透明 发表于 2015-4-26 15:10:43

学习ios没什么捷径,关键在于多动手敲,曾看到前辈开玩笑说怎么快速学会某技术,答案是:“提高打字速度,快点写代码就能快点学会了”。

飘飘悠悠 发表于 2015-4-30 04:14:03

重要的是,放眼全球也的确找不到第二个如苹果iOS平台这样健壮、完整、先进而且为开发者带来真实收益的开发平台来。

不帅 发表于 2015-5-4 21:37:11

以上可以同时进行,学习过程中尽量不要纠结细节和底层,要知道ios是封闭的、OC是高级语言,我们不可能过多地去了解它的原理,至少在新手阶段没有必要。用迭代的方式更新你的知识,而不是死抠一个知识点。

谁可相欹 发表于 2015-6-7 09:16:58

有办法利用自己手头的电脑立刻开始这个美妙旅程的。
页: [1]
查看完整版本: IOS制作之iOS7的静态库注进仓酷云