仓酷云
标题:
IOS制作之iOS7的静态库注进仓酷云
[打印本页]
作者:
飘灵儿
时间:
2015-1-18 11:35
标题:
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[3631]<Notice>:MS:Notice:Injecting:com.alipay.iphoneclient[Portal](847.21)
Portal[3631]<Notice>:MS:Notice:Loading:/Library/MobileSubstrate/DynamicLibraries/libwq.dylib
Portal[3631]<Warning>:=======================initialize========================
Portal[3631]<Warning>:-----------------------myViewDidLoad----------------------
证实我们的静态库已被加载,我们的Hook同样成功了。
剩下的就要本人往思索了,除加句无聊的Log,我们还能够做点甚么呢?
很少去思考,没有去多问几个为什么。这是学习的大忌,我认识到了自己学习方法上的错误。孔子说,学而不思则罔,思而不学则殆。一点也没错,学和思是要结合的,这样才能进步。现在回想一下,我学到了什么?自己也无言以对了。
作者:
再见西城
时间:
2015-1-19 19:24
近期由于IOS7的发布,所以应用的适配潮可谓是都搞的锣鼓喧天,甚是热闹,因此呢,因适配IOS7而产生的问题也是铺天盖地的卷来,
作者:
精灵巫婆
时间:
2015-2-1 20:47
最后在做项目的时候一定要认真对待,毕竟这个直接和你的就业挂钩,这也是锻炼你实际操作的能力。
作者:
山那边是海
时间:
2015-2-1 22:49
培训的时候很痛苦,每天要待12个小时,上午讲课,下午和晚自习解决作业,看文档,学习的时候感觉就是资料太少,而且看着资料也不明所以,非常痛苦,
作者:
海妖
时间:
2015-2-6 16:08
特别是在校的学生,都存在一个小小的尴尬——虽然学习iOS开发的热情高涨,但由于没有多余的银子购买昂贵的Mac电脑而踟蹰不前。其实,针对初学者,如果想进入iOS开发的天地
作者:
第二个灵魂
时间:
2015-2-8 19:38
因为我们老师也是自学的,给我们讲课说的最多的就是百度,谷歌,查文档。
作者:
愤怒的大鸟
时间:
2015-2-25 23:02
有办法利用自己手头的电脑立刻开始这个美妙旅程的。
作者:
仓酷云
时间:
2015-3-8 10:03
在百度搜索你想要了解的类名(苹果的cocoa和cocoatouch框架的类名很有特点很容易搜到,前缀都是NS or UI),看别人写的博客详解
作者:
爱飞
时间:
2015-3-10 19:11
中国如今已然发展成为一个软件大国,软件人才的数量跃居全球之首。当然,在苹果平台的开发领域,也保持了相当强劲的发展势头。然而,很多初入iOS开发门槛的开发者,
作者:
变相怪杰
时间:
2015-3-17 09:10
iPhone文件系统NSFileManager讲解是本文要介绍的内容,主要是通过iphone文件系统来学习NSFileManager的使用方法,具体内容来看本文详解。
作者:
乐观
时间:
2015-3-20 07:34
开始的时候甚至想放弃,不过想想自己的未来,只能咬牙坚持,课下就不停的缠着老师。放学就补基础,这些基础的东西没有速成的,只有刻苦努力。我是后来发现的,转变自己的心态,不要读书看资料当成一种痛苦
作者:
活着的死人
时间:
2015-3-30 08:36
边吃零食边看Stanford的视频教程
作者:
兰色精灵
时间:
2015-4-1 00:08
中国如今已然发展成为一个软件大国,软件人才的数量跃居全球之首。当然,在苹果平台的开发领域,也保持了相当强劲的发展势头。然而,很多初入iOS开发门槛的开发者,
作者:
莫相离
时间:
2015-4-15 04:57
自从苹果公司开放iOS SDK以来,大量的国内外的软件开发者将关注的目光聚集在苹果的iOS平台上。由于iPhone和iPad自一出现就给人带来了颠覆性的感觉
作者:
深爱那片海
时间:
2015-4-22 09:54
好处就是运行速度会变快,ios6针对系统的优化进一步加强了,很多网友测试ios6,第一感觉就是速度快,而且ios69会有一些新功能,新浪微博,facetime支持3G网等等。。弊端就是,现在的ios6只能算是正式版本的第一个版本,bug很多,不少人刷完ios6都出现了很多毛病,开不开机,缺少图标等等。。最好现在不要升级,等官网放出下一个版本的时候,再选择升级。。。
作者:
柔情似水
时间:
2015-4-26 04:07
看完这个你就可以有多种选择来踏入做应用的阶段
作者:
透明
时间:
2015-4-26 15:10
学习ios没什么捷径,关键在于多动手敲,曾看到前辈开玩笑说怎么快速学会某技术,答案是:“提高打字速度,快点写代码就能快点学会了”。
作者:
飘飘悠悠
时间:
2015-4-30 04:14
重要的是,放眼全球也的确找不到第二个如苹果iOS平台这样健壮、完整、先进而且为开发者带来真实收益的开发平台来。
作者:
不帅
时间:
2015-5-4 21:37
以上可以同时进行,学习过程中尽量不要纠结细节和底层,要知道ios是封闭的、OC是高级语言,我们不可能过多地去了解它的原理,至少在新手阶段没有必要。用迭代的方式更新你的知识,而不是死抠一个知识点。
作者:
谁可相欹
时间:
2015-6-7 09:16
有办法利用自己手头的电脑立刻开始这个美妙旅程的。
欢迎光临 仓酷云 (http://ckuyun.com/)
Powered by Discuz! X3.2