仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1684|回复: 19
打印 上一主题 下一主题

[学习教程] IOS制作之iOS7的静态库注进仓酷云

[复制链接]
飘灵儿 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:35:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

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

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-2 20:11

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表